bonjour,
J'ai étudié les docs sur le site et ailleurs mais je n'ai pas encore compris l'utilisation de cette propiété. Ca ressemble a un param pour les TQuery non?
Es ce que qq un pourrai me montrer un exemple d'utilisation ce serai sympa.
:D
Version imprimable
bonjour,
J'ai étudié les docs sur le site et ailleurs mais je n'ai pas encore compris l'utilisation de cette propiété. Ca ressemble a un param pour les TQuery non?
Es ce que qq un pourrai me montrer un exemple d'utilisation ce serai sympa.
:D
Regarde déjà dans l'aide delphi puis pour des exemples de l'utilisation des fields
http://delphi.developpez.com/faq/?page=bdddivers
Cordialement
J'ai déja vu tout ca. En fait pour etre plus precis ma requete ressemble a ca :
insert.SQL.Add('INSERT INTO GAMELLE VALUES ( ');
insert.Sql.Add(Edit1.Text+', :idChien, '+Edit2.Text+', :coule, :utile )');
insert.FieldByName('idChien').AsVariant := 9;
insert.FieldByName('coul').AsString := Edit4.Text ;
insert.FieldByName('util').AsString := Edit3.Text ;
Et j'ai lemessage d'erreur suivant de la classe d'exception EDatabaseError :
insert : L'ensemble de données n'es pas en mode Edition ou Insertrion
Et ce qui est bizarre c que ca marchait avec une requete entierement construite a la main sans Fiels :?:
ca renvoie la liste des champs
Code:
1
2
3
4
5
6 var cmpt:integer; begin for cmpt:=0 to adoquery1.FieldCount-1 do showmessage(adoquery1.Fields[cmpt].FieldName); end;
Utilise les balises de code stp.
Ce que tu as écrit ne va pas du tout.
1 -> Utiliser une requête SQL avec la clause INSERT ne te renvoit pas d'ensemble de résultat.
2 -> Quelle est la définition de ton insert
Il faud soit que tu utilises 100% une requête ou rien du tout.
Explique un peu plus ce que tu veux faire avec
CordialementCode:
1
2
3
4
5 insert.SQL.Add('INSERT INTO GAMELLE VALUES ( '); insert.Sql.Add(Edit1.Text+', :idChien, '+Edit2.Text+', :coule, :utile )'); insert.FieldByName('idChien').AsVariant := 9; insert.FieldByName('coul').AsString := Edit4.Text ; insert.FieldByName('util').AsString := Edit3.Text ;
Je devrai alors me servir plutot d'un TADOCommand alors ?
Sinon ma requete ma permet d'inserer un n-uplet dans la table Gamelle (pas de commantaire svp je me fais la main sur delphi avec ce qui me passe par la tete). Gamelle(id_gamelle, id_chien, contenu, couleur, utilisation)
integer integer integer text text
insert est mon TADOQuery. il possede une connexion.
Les Edit1.Text, 2, 3 sont mais champs que je veux passer dans mon ordre sql. Sinon avec l'interface j'ai defini 3 TStringFields dont les noms correspondent au variable de l'ordre sql.
pour les curieux voici ma fonction je vous previens c pas jolie jolie.
je vous avez prévenu 8OCode:
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
37
38
39
40
41
42
43
44
45
46
47
48 procedure TfmGamelle.btEnregistrerClick(Sender: TObject); var nomChien : string; i : integer; begin if Edit1.Text = '' then statBar.SimpleText := 'Le champs id_gamelle n est pas remplie'; if Edit2.Text = '' then statBar.SimpleText := 'Le champs contenance n est pas remplie'; if Edit3.Text = '' then statBar.SimpleText := 'Le champs utilisation n est pas remplie'; if Edit4.Text = '' then statBar.SimpleText := 'Le champs couleur n est pas remplie'; if listNomChien.KeyValue = null then statBar.SimpleText := 'Choississez un chien'; if (Edit2.Text <> '') and (Edit4.Text <> '') and (Edit1.Text <> '') and (Edit3.Text <> '') and (listNomChien.KeyValue <> null) then begin statBar.SimpleText := 'Formulaire valide'; nomChien := listNomChien.KeyValue; insert.Close; {insert.SQL.Add('INSERT INTO GAMELLE VALUES ( '); insert.SQL.Add(Edit1.Text+', '); //id gamelle insert.SQL.Add('3'+', '); //id chien insert.SQL.Add(Edit2.Text+', '); // contenu insert.SQL.Add(' '''+Edit4.Text+''', '); //couleur insert.SQL.Add(' '''+Edit3.Text+''') '); //utilisation} insert.SQL.Add('INSERT INTO GAMELLE VALUES ( '); insert.Sql.Add(Edit1.Text+', :idChien, '+Edit2.Text+', :coule, :utile )'); insert.FieldByName('idChien').AsVariant := 2; insert.FieldByName('coul').AsString := Edit4.Text ; insert.FieldByName('util').AsString := Edit3.Text ; //insert.ExecSQL; for i:=0 to insert.FieldCount-1 do showmessage(insert.Fields[i].FieldName); for i:=0 to 5 do begin statBar.SimpleText := insert.SQL[i]; Sleep(5000); end; end; end;
bon je pense avoir tout dis.
Une proc avec les TADOCommand pour executer un requête SQL.
Avec cette procédure tu ne te contente que d'écrire correctement ta requête SQL et le tour est joué. Très pratique pour les insert.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // exécute une requête à partir d'un TADOCommand // renvoie TRUE si aucune erreur FALSE dans le cas contraire function executeSQL(connexionString, requete: string):boolean; var ADOC: TADOCommand; indic: boolean; begin try indic := true; ADOC := TADOCommand.Create(nil); ADOC.ConnectionString := connexionString; ADOC.CommandText := requete; try ADOC.Execute; except indic := false; end; finally ADOC.Free; result := indic; end; end;
Cordialement
:bravo: merci ca marche comme papa dans maman 8)
Sinon je voulais savoir aussi si l'utilisation de mes fields étaient corrects en imaginant que c t un select ou je dois encore plancher dessus. :pc: