Hallo, ich muss eine grössere Anzahl von Edit Feldern sichern & nutze dazu den nachfolgenden Code.
Das Ausführen dauert ~ 5 sec bei 60 Feldern.
Frage: Kann ich das ganze beschleunigen (sitzt z.B. StartTransaction, ... an der richtigen Stelle) ?
Delphi-Quellcode:
for i := 0
to X
do
begin
// Variablen füllen
...
// Check vorhanden
with Datenmodul.ZQuery1
do
begin
with SQL do
begin
clear;
ParamCheck := true;
// Select
Add('
SELECT ID FROM T_TABELLE');
Add('
WHERE Feld = :Feld;');
ParamByName('
Feld').AsInteger := Variable;
end;
open;
if RecordCount = 0
then
begin
// Insert
with SQL do
begin
clear;
Add('
INSERT INTO T_TABELLE');
Add('
(Feld1, Feld2, Feld3)');
Add('
VALUES');
Add('
(:Feld1, :Feld2, :Feld3);');
ParamByName('
Feld1').AsString := Variable1;
ParamByName('
Feld2').AsString := Variable2;
ParamByName('
Feld3').AsString := Variable3;
end;
end
else begin
ID := FieldByName('
ID').AsInteger;
// aus dem Select
// Update
with SQL do
begin
clear;
Add('
UPDATE T_TABELLE');
Add('
SET');
Add('
Feld3 = :Feld3');
Add('
WHERE ID = :ID;');
ParamByName('
Feld3').AsString := Variable3;
ParamByName('
ID').AsInteger := ID;
end;
end;
Datenmodul.ZConnection.StartTransaction;
try
ExecSQL;
except
Datenmodul.ZConnection.Rollback;
end;
Datenmodul.ZConnection.Commit;
end;
// Query
end;
// for
Datenmodul.ZQuery1.close;