![]() |
Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
Hallo...
ich arbeite zwar mit Zeos aber da haben die Querys eine property CachedUpdates. - ist CachedUpdates = False werden Änderungen an der Query in die Datenbank übertragen. - ist CachedUpdates = True können Änderungen an der Query vorgenommen werden ohne daß der Datenbank was passiert ...möchte man die Änderungen schreiben - ApplyUpdates ansonsten CancelUpdates. vieleicht kennt das deine Query auch ? :gruebel: |
Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
Mit Delphi-Bordmitteln;
1. mit ADO und LockType 'ltBatchOptimistic'. Dann nur kein 'ApplyUpdates' aufrufen. 2. mit einem TDataProvider und dem TClientDataset. |
Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
Hallo,
ich hab nun nicht ganz so die Ahnung, aber wenn die Abfrage häufiger benötigt wird muss ich mich meinen Vorrednern anschließen, die anregten, dass Tabellen Design zu überdenken. Mir ist nicht ganz klar, wird die Lösung in dem DBMS über SQL benötigt oder wäre Delphi einsetzbar? Bei letzerem könnte man 2 Funktionen unter Einsatz einer Query einsetzen, unter dem Ansatz, die nicht benötigten Datensätze vorab schon zu filtern: 1.) in der ersten Funktion werden deine Regeln festgelegt (Rückgabewert in meinem Beispiel = Integer) 2.)
Delphi-Quellcode:
3.) evtl. Datenausgabe:
function TForm1.Feldwert(index: integer): string;
//diese Funktion wendet die vorherige "Regel-Funktion auf deine Tabellenspalte "xyz" an begin if (UPPERCASE(Query1.Fields[index].fieldname) = 'XYZ')then begin Result := deine 1. Funktion(Query1.Fields[index].asinteger);//nur deine gültigen Datensätze end; end;
Delphi-Quellcode:
...
var lsCell: string; liFldCnt, liDS: Integer; begin liFldCnt := Query1.FieldCount; if (liFldCnt > 0) then while not (Query1.eof) do begin lsCell := Feldwert(0); for liDS := 1 to liFldCnt - 1 do begin lsCell := lsCell + ';' + Feldwert(liDS); //beispielhafte Ausgabe end; end; end; Ich hoffe ich habe das jetzt auch richtig verstanden... |
Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
nimm Temp Tables, dafür sind die perfekt:
SQL-Code:
Der Vorteil gegenüber clientseitigen Lösungen: Du kannst die Ergebnistabelle mit anderen joinen, Änderungen serverseitig zurückschreiben u.ä. - und Du ersparst Dir bei großen Ergebnismengen den kompletten Transfer zum Client.
SELECT ... INTO #erg FROM ... WHERE ...
|
Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
So wie ich das verstanden habe, will der Fragesteller Folgendes:
1. Tabelle laden 2. Die Daten in einem Datengitter anzeigen 3. Aus diesem Gitter (und nur hier) einzelne Datensätze entfernen 4. nur die Daten, die man im Grid sieht weiterverarbeiten, z.B. sequentiell drucken Das mit SQL zu lösen ist doch dann suboptimal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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