![]() |
Datenbank: Paradox • Version: 5 • Zugriff über: Lokal / BDE
Fallunterscheidung für UPDATE oder INSERT per SQL
Hi,
ich möchte von TTable auf TQuery umstellen, und dabei stellt sich gerade die Frage, wie folgender Ablauf mit TQuery zu implementieren wäre:
Delphi-Quellcode:
muss ich da mit SQL erst eine Abfrage erstellen, z.b.
if tblCacheInfo.FindKey([sWP]) then
tblCacheInfo.Edit else tblCacheInfo.Insert; tblCacheInfo.FieldByName('Daten').AsString := Daten; [...] tblCacheInfo.Post;
SQL-Code:
um anschliessend je nach Ergebnis eine entsprechende UPDATE oder INSERT-SQL auszuführen, oder gibt es da ein eleganteres Verfahren?
SELECT COUNT(*) AS
FROM tabelle WHERE :wp EXISTS IN tabelle ; Datenmenge beträgt bis zu 500 Records in einer Sitzung. VG Andreas |
Re: Fallunterscheidung für UPDATE oder INSERT per SQL
Bei Paradox nicht. Bei richtigen DBMS schon ( Merge, update or insert ...)
|
Re: Fallunterscheidung für UPDATE oder INSERT per SQL
Zitat:
Deiner Anwort entnehme ich, dass ich mit meinem Lösungsansatz unter Paradox dann doch nicht so falsch liege(?). |
Re: Fallunterscheidung für UPDATE oder INSERT per SQL
Hallo,
Ansatz ist richtig.
Delphi-Quellcode:
Problem ist aber, dass Queries unter Pdx langam sind.
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; 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 ![]() Heiko |
Re: Fallunterscheidung für UPDATE oder INSERT per SQL
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz