Hallo,
Ansatz ist richtig.
Delphi-Quellcode:
var
bExists: Boolean;
with Query do
begin
SQL.Clear;
SQL.Add('
select count(*) from table');
SQL.Add('
where Id=:Id');
ParamByName('
Id').AsInteger:= ...;
Open;
try
bExists:=
not Query.IsEmpty
// falls das nicht existiert RecordCount nehmen
finally
Close;
end;
SQL.Clear;
if bExists
then
begin
// update
end
else
begin
// insert
end;
end;
Problem ist aber, dass Queries unter Pdx langam sind.
Die Umstellung könnte also zu einem Performance-Problem führen.
Ich hatte das damals per {$IFDEF
SQL} (selbst definierter Schalter) gemacht,
der alte Code war also noch vorhanden.
Das
SQL.Clear; auch am Anfang mache ich übrigens,
weil ich meistens ein
Query für mehrere Tabellen benutze.
Hier noch ein netter Artikel
Pdx -> Interbase / Firebird
Heiko