(Moderator)
Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
Delphi 11 Alexandria
AW: Datensätze schnell einfügen bzw. ersetzen
27. Mai 2014, 09:14
Ich habe es jetzt mal getestet, so funktioniert es in dem Testprogramm ( UniDAC statt IBDAC; aber UniDAC verwendet ja den IBDAC-Provider)
Delphi-Quellcode:
var
sL, slF: TStrings;
i, id: Integer;
begin
try
sl := TStringlist.Create;
slf := TStringList.Create;
slf.Delimiter := '; ';
sl.add( 'Susi;Mueller;01.01.1900 ');
sl.add( 'Peter;Mueller;01.01.1990 ');
sl.add( 'Susi;Mueller;24.12.1974 ');
sl.add( 'Susi;Maier;01.01.1900 ');
IBQuery.SQL.Text := 'update or insert into Person ( vorname, nachname, gebdat) values ( :vorname, :nachname, :gebdat ) MATCHING ( vorname, gebdat) RETURNING id; ';
for i := 0 to sl.Count -1 do
begin
slf.DelimitedText := sl[i];
IBQuery.Params[0].Value := slf[0];
IBQuery.Params[1].Value := slf[1];
IBQuery.Params[2].asString := slf[2];
IBQuery.ExecSQL;
id := IBQuery.Params[3].Value; //oder id := IBQuery.ParamByName('RET_ID').Value;
UniQuery1.Refresh;
Application.ProcessMessages;
ShowMessage( Format( 'Rückgabe: %d ', [id]));
end ;
finally
slf.Free;
sl.Free;
end ;
end ;
Angehängte Grafiken
1.jpg (31,3 KB, 11x aufgerufen)
2.jpg (29,6 KB, 11x aufgerufen)
3.jpg (30,7 KB, 11x aufgerufen)
4.jpg (32,8 KB, 12x aufgerufen)
Markus Kinzler
Zitat