[ZeosLib] Comment modifier un dataset?
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:
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 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; |
Quelqu'un pourrait-il me dire comment on fait?
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 :)