Bonjour
je cherche un code qui me permet d'ajouter les champs dans la table access sous c++ builder
merci d'avance
Bonjour
je cherche un code qui me permet d'ajouter les champs dans la table access sous c++ builder
merci d'avance
Il suffit d'exécuter une requête SQL ALTER TABLE sur ta base de donnée avec un composant TQuery.
Bonjour,
a l'aide de votre aide j'ai réussie a construire ce code
je veut ajouter 2 champs le premier le contenu de Edit1->Text plus le mot quantité et le 2eme champ Edit1->Text plus le mot valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 AnsiString a=Edit1->Text; AnsiString b = "ALTER TABLE essai ADD "+QuotedStr(a)+" char (50);" ; Form2->Query1->SQL->Clear(); Form2->Query1->SQL->Add(b); Form2->Query1->ExecSQL();
j'ai tombé dans cette erreur quand j'ai ajoutée le mot quantité comme ce ci
"Erreur de syntaxe dans la définition de champ, erreur sql générale".
Code : Sélectionner tout - Visualiser dans une fenêtre à part AnsiString b = "ALTER TABLE essai ADD "+QuotedStr(a)+"Quantité"+" char (50);" ;
merci d'avance pour votre aide
Je te déconseille l'utilisation des accents ("é") dans ta base de donnée, mais ce n'est qu'un conseil.
Pour ta requête, essai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AnsiString b = "ALTER TABLE essai ADD " + QuotedStr(a+"Quantité") + " char (50);" ;
On peut aussi l'écrire autrement !
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AnsiString b = Format( "ALTER TABLE essai ADD %s char (50);", ARRAYOFCONST((QuotedStr(Edit1->Text + "Quantité"))));
J'ai toujours trouvé dommage que QuotedStr ajoute des guillemets ( ' ) au début et à la fin, souvent, je ne voulais que doubler ceux au milieu pour écrire ceci directement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AnsiString b = Format( "ALTER TABLE essai ADD %s char (50);", OpenArray<TVarRec>(Edit1->Text + "Quantité"), 0);
RepeatQuote pouvant être coder avec un simple StringReplace !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AnsiString b = Format( "ALTER TABLE essai ADD '%sQuantité' char (50);", ARRAYOFCONST((RepeatQuote(Edit1->Text))));
Certains DB ne supporte pas le double '' mais \'
D'autres DB utilise ' comme délimiteur de chaine pas pour les noms de champ entre " ou `
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Bonjour, merci pour vos réponse
dans le cas ou le champ existe déjà, une erreur de sql générale s'affiche.
alors j'ai modifiée mon code:
mais toujours la même erreur, peut être les guillemets ( ' ) au début et à la fin qui provoquent cet erreur, est ce que il y a un moyen de les supprimer
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
25
26
27
28
29
30
31
32
33
34
35
36 bool test=true; AnsiString a=Edit1->Text; for(int i=1;i< Table22->FieldCount;i++) { if( (Table22->Fields->Fields[i]->AsString== "'"+a+" QTE"+"'")||(Table22->Fields->Fields[i]->AsString== "'"+a+" Val"+"'")) { test=false; } } if(test==true) { AnsiString b = "ALTER TABLE essai ADD "+QuotedStr(a+" QTE")+" int ;" ; Form2->Query1->SQL->Clear(); Form2->Query1->SQL->Add(b); Form2->Query1->ExecSQL(); AnsiString c = "ALTER TABLE essai ADD "+QuotedStr(a+" Val")+" float ;" ; Form2->Query1->SQL->Clear(); Form2->Query1->SQL->Add(c); Form2->Query1->ExecSQL(); } if(test==false) { MessageBox(Handle,"ce champ existe déja ?", "Confirmation",MB_OKCANCEL|MB_ICONSTOP ) ; }
merci d'avance pour votre aide
Partager