Bonjour
Je ne suis plus très loin, mais je n'arrive toujours pas à trouver comment se combinent TZQuery et TZUpdateSQL pour me permettre de modifier un dataset et envoyer les modifs à la base de données:
Quelqu'un pourrait-il me dire comment on fait?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 procedure TForm1.FormCreate(Sender: TObject); var MyDB,MyUSER,MyPASSWORD : String; MyItem : String; begin MyDB := 'C:\test.firebird'; MyUSER := 'sysdba'; MyPASSWORD := 'masterkey'; With ZConnection1 do begin Hostname := 'localhost'; Protocol := 'firebird-2.0'; User := MyUSER; Password := MyPASSWORD; Database := MyDB; Connect; end; With ZQuery1 do begin Connection := ZConnection1; //On ajoute un enregistrement Sql.Clear; Sql.Add('INSERT INTO mytable (name) VALUES (:Val1)'); Params.ParamByName('Val1').AsString := 'John Doe'; ExecSql; //On remplit le dataset Sql.Clear; Sql.Add('SELECT * FROM mytable'); Open; //On parcourt le dataset et on remplit une listbox First; while not Eof do begin MyItem := Format('ID=%s Name=%s',[FieldByName('id').AsString,FieldByName('name').Value]); ListBox1.Items.Add(MyItem); Next; end; //Comment modifier un enregistrement? ZUpdateSQL1.DataSet := ZQuery1; ZUpdateSQL1.ModifySQL.Text := 'UPDATE mytable SET name=:name WHERE id=:id'; //ZQuery1: Parameter 'name' not found. with ZQuery1 do begin Params.ParamByName('name').AsString := 'Jane Doe'; Params.ParamByName('id').AsInteger := 1; ExecSql; end; end;
Question accessoire : a-t-on vraiment besoin de deux composants? Ne peut-on pas envoyer les INSERT/UPDATE/DELETE avec un TZQuery sans s'embêter avec un TUpdateSQL?
Merci
Partager