Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - Löschen aus der Ergebnismenge nicht aus der Datenbank (https://www.delphipraxis.net/116098-sql-loeschen-aus-der-ergebnismenge-nicht-aus-der-datenbank.html)

Polarwar 23. Jun 2008 13:46

Datenbank: ADS • Version: 8.1 • Zugriff über: ADSTable, ADSQuery

SQL - Löschen aus der Ergebnismenge nicht aus der Datenbank
 
Hallo zusammen,

ich stehe hier gerad mal wieder auf der Leitung.

Ich führe eine SQL aus und möchte nun aus der Ergebnismenge gezielt einige Sätze löschen. Aber nur aus der Ergebnismenge und nicht aus der Datenbank selbst. Wie stelle ich sowas an..... irgendwie komm ich da heute nicht drauf?!?!

Gruß
Polarwar

mkinzler 23. Jun 2008 13:51

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Durch Ausschluss ?
SQL-Code:
 ... where ... and not in ( ...)

RavenIV 23. Jun 2008 14:16

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Zitat:

Zitat von Polarwar
Ich führe eine SQL aus und möchte nun aus der Ergebnismenge gezielt einige Sätze löschen. Aber nur aus der Ergebnismenge und nicht aus der Datenbank selbst.

Indem Du Dir nur Daten aus der DB geben lässt, die Dich interessieren.
Du musst also das SQL-Statement entsprechend aufbauen.

Polarwar 23. Jun 2008 14:20

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Durch Ausschluss???

Ich kann die Daten nicht vorher eindeutig selektieren!!!

Ich habe eine Datenmenge mit z.B. 2500 ausgewerteten Datensätzen ( In diesem Fall Rechnungen).
Nun möchte ich vor der Weiterverarbeitung spezielle Sätze, die nicht unbedingt einer Regel entsprechen,
löschen....aber natürlcih nicht aus der Datenbank, sondern nur aus der Ergebnismenge.

In nem Grid und löschen halt. Danach möchte ich mit den übrigen Sätzen noch weiter arbeiten.

Gruß
Polarwar

Bernhard Geyer 23. Jun 2008 14:23

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Ich glaube nicht das die ADS-Komponenten disconnected Datasets unterstützen und das über Transaktionen zu "simulieren" ist keine gute Idee.

mkinzler 23. Jun 2008 14:24

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
wenn die Tabelle eine PK hat (Annahme Name ID):

SQL-Code:
... and ID not in (12345, 12346, 12349, ...);
dann sind diese aus der Ergebnismenge verschwunden.

Polarwar 23. Jun 2008 14:30

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Hallo,

das die ADS Kompos soetwas nicht unterstützen, habe ich mir fast gedacht. Wollte nur zur Sicherheit nochmal schauen, ob ich nicht doch auf der Leitung stehe.

Ich werde mir die Ergebnismenge nun in eine Temptable moven, in der ich dann auch löschen kann. Ist zwar unschön, aber es geht.

(drop temptable....select * into temptable from ***)

Danke trotzdem für die schnellen Antworten!

RavenIV 23. Jun 2008 14:32

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Oder Du nimmst eine MemoryTable. Das ist z.B. bei den RxKomponenten dabei.
Die kannst Du aus einer Query füllen und dann damit machen, was Du willst.

Aber der bessere Weg ist schon, sich nur von der DB zu geben lassen, was man wirklich haben möchte.

mkinzler 23. Jun 2008 17:09

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Zitat:

Oder Du nimmst eine MemoryTable. Das ist z.B. bei den RxKomponenten dabei.
Ist nun Teil der JVCL, unterstützt allerdings kein SQL.
Oder VirtualTable von DevArt (CoreLabs) oder kbMemTable

shmia 23. Jun 2008 17:19

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb
 
Du könntest auch ein weiteres Feld (ich nenne es mal Prio) aufnehmen.
Der Benutzer setzt die Prio seiner Rechnungen von -3 bis +3 (default Wert ist 0)
Und dann kannst du einfach eine Where-Bedingung (WHERE ... AND (Prio>=0)) ansetzen oder auch das Filter-Property benützen.

Damit der Benutzer die Prio von vielen Datensätzen leicht ändern kann, könntest du im DBGrid die Option dgMultiSelect aktivieren.
Der Benutzer selektiert beliebig viele Datensätze und kann dann die Priorität auf einen Rutsch anpassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz