[Résolu]Changements de colonnes dans une BDD MySQL
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
Code:
1 2 3
|
releve1 releve2 releve3 ....... releve15
-------- ---------- --------- ---------- |
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)
donc si on a ca
Code:
1 2 3 4
|
releve1 releve2 releve3 ....... releve15
-------- ---------- --------- ----------
50 10 15 56 |
J'aimerais avoir ceci:
Code:
1 2 3 4
|
releve1 releve2 releve3 ....... releve15
-------- ---------- --------- ----------
10 15 56 0 |
je réalise donc cela de la manière suivante:
:arrow: je sélectionne tous les champs de la table releves
Code:
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; |
ensuite je mets tout ds des variables (le valeurs des relevés quoi)
Code:
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'; |
et ensuite je peux décaller en mettant le bonnes valeurs
Code:
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(); |
Le problème est que ce principe marche pour UN enregistrement spécifique( WHERE nom =...) alors ca marche.
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" :evil:
je voudrais donc :
:arrow: faire en fait ce code..enregistrement par enregistrement...
Qqun pourrait il me dire comment faire??par code??ou requete SQL??
Merci à vous..
Cordialement :wink: