Natuurlijk kan dat, maar dan kan je geen gebruik meer maken van van de TSQLQuery, die een SELECT doet. Delphi komt dan met de melding: Can not perform this operation on a closed dataset.
Je zal het dan anders moeten oplossen
delphi Code:
procedure TForm6.Button2Click(Sender: TObject);
var t : integer;
s : string;
SQLQuery1, SQLQuery2 : TSQLQuery;
begin
SQLQuery1 := TSQLQuery.Create(nil);
SQLQuery2 := TSQLQuery.Create(nil);
try
SQLQuery1.SQLConnection := SQLConnection1;
SQLQuery2.SQLConnection := SQLConnection1;
SQLQuery1.SQL.Text := 'SELECT fieldname FROM table';
SQLQuery2.SQL.Text := 'INSERT INTO table VALUES (fieldvalue)';
SQLQuery1.Open;
for t := 1 to 100 do
begin
if SQLQuery1.locate('fieldname',varArrayOf([t]),[]) then
s := 'Gevonden'
else
begin
SQLQuery2.ParambyName('fieldname').AsInteger := t;
SQLQuery2.ExecSQL(false);
s := 'inserted'
end;
memo1.Lines.Add(format('ID: %3d %s',[t,s]));
SQLQuery1.Next;
end;
finally
SQLQuery1.Free;
SQLQuery2.Free;
end;
end;
Maar dan ga je snel meerder connecties openen voor 1 tabel en volgens mij is dat niet handig. Helemaal niet als je met datasnap werkt.
Dit werkt wel, maar waar zit de functionaliteit van de CDS dan in, die Carry Jensen zo zorgvuldig uitlegt?
Bookmarks