Bonjour
je cherche un code qui me permet d'ajouter les champs dans la table access sous c++ builder
merci d'avance
Version imprimable
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:
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: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:AnsiString b = "ALTER TABLE essai ADD " + QuotedStr(a+"Quantité") + " char (50);" ;
On peut aussi l'écrire autrement !
ouCode:
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 directementCode:
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:
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 `
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 supprimerCode:
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