Bonjour je réalise un prog en C++ Builder 5 qui se conecte à une base de données MySQL.
Mon problème est le suivant:
j'ai 15 champs(releve1,releve2,...releve15) dans ma table "releves". J'ai pluseurs centaines d'enregistrements
je souhaiterais en fait pour chacune des "lignes" de ma table(donc pour chaque enregistrement) "décaller" les valeurs des champs relevés de 1 colonne vers la gauche...et mettre "0" ) la dernière position(champ releve15)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3releve1 releve2 releve3 ....... releve15 -------- ---------- --------- ----------
donc si on a ca
J'aimerais avoir ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 releve1 releve2 releve3 ....... releve15 -------- ---------- --------- ---------- 50 10 15 56
je réalise donc cela de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 releve1 releve2 releve3 ....... releve15 -------- ---------- --------- ---------- 10 15 56 0
je sélectionne tous les champs de la table releves
ensuite je mets tout ds des variables (le valeurs des relevés quoi)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 EcranAccueil->RequeteNomReleve->Active = false; EcranAccueil->RequeteNomReleve->SQL->Clear(); EcranAccueil->RequeteNomReleve->SQL->Add("SELECT * FROM Releves "); EcranAccueil->RequeteNomReleve->Prepare(); EcranAccueil->RequeteNomReleve->Open(); EcranAccueil->RequeteNomReleve->Active = true;
et ensuite je peux décaller en mettant le bonnes valeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 //On reprend les relevés Releve1 = EcranAccueil->RequeteNomRelevereleve1->Value; Releve2 = EcranAccueil->RequeteNomRelevereleve2->Value; Releve3 = EcranAccueil->RequeteNomRelevereleve3->Value; Releve4 = EcranAccueil->RequeteNomRelevereleve4->Value; Releve5 = EcranAccueil->RequeteNomRelevereleve5->Value; Releve6 = EcranAccueil->RequeteNomRelevereleve6->Value; Releve7 = EcranAccueil->RequeteNomRelevereleve7->Value; Releve8 = EcranAccueil->RequeteNomRelevereleve8->Value; Releve9 = EcranAccueil->RequeteNomRelevereleve9->Value; Releve10 = EcranAccueil->RequeteNomRelevereleve10->Value; Releve11 = EcranAccueil->RequeteNomRelevereleve11->Value; Releve12 = EcranAccueil->RequeteNomRelevereleve12->Value; Releve13 = EcranAccueil->RequeteNomRelevereleve13->Value; Releve14 = EcranAccueil->RequeteNomRelevereleve14->Value; Releve15 = EcranAccueil->RequeteNomRelevereleve15->Value; AnsiString Releve16 = '0';
Le problème est que ce principe marche pour UN enregistrement spécifique( WHERE nom =...) alors ca marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //on va les décaller de une place et laisser la dernière "vide" EcranAccueil->RequeteNomReleve->Close(); EcranAccueil->RequeteNomReleve->Active = false; EcranAccueil->RequeteNomReleve->SQL->Clear(); EcranAccueil->RequeteNomReleve->SQL->Add("UPDATE releves SET releve1 =:NumeroReleve1, releve2 =:NumeroReleve2, releve3 =:NumeroReleve3, releve4 =:NumeroReleve4, releve5 =:NumeroReleve5, releve6 =:NumeroReleve6, releve7 =:NumeroReleve7, releve8 =:NumeroReleve8, releve9 =:NumeroReleve9, releve10 =:NumeroReleve10, releve11 =:NumeroReleve11, releve12 =:NumeroReleve12, releve13 =:NumeroReleve13, releve14 =:NumeroReleve14, releve15 =:NumeroReleve15 "); EcranAccueil->RequeteNomReleve->Prepare(); // EcranAccueil->RequeteNomReleve->ParamByName("materiel")->Value = nom; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve1")->Value = Releve2; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve2")->Value = Releve3; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve3")->Value = Releve4; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve4")->Value = Releve5; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve5")->Value = Releve6; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve6")->Value = Releve7; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve7")->Value = Releve8; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve8")->Value = Releve9; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve9")->Value = Releve10; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve10")->Value = Releve11; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve11")->Value = Releve12; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve12")->Value = Releve13; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve13")->Value = Releve14; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve14")->Value = Releve15; EcranAccueil->RequeteNomReleve->ParamByName("NumeroReleve15")->Value = Releve16; EcranAccueil->RequeteNomReleve->ExecSQL();
Mais icic je veux tout faire d'un coup et ca regarde en fait la première ligne de ma table (premier enregistrement) et puis ca remplace tous les champs de TOUS les enregistrements par ceux de la première ligne!!!je me retrouve donc avec des centaines de "memes lignes"
je voudrais donc :
faire en fait ce code..enregistrement par enregistrement...
Qqun pourrait il me dire comment faire??par code??ou requete SQL??
Merci à vous..
Cordialement
Partager