Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensätze aus Detailsource löschen, wie geht das? (https://www.delphipraxis.net/165990-datensaetze-aus-detailsource-loeschen-wie-geht-das.html)

BBoy 25. Jan 2012 09:37

Datenbank: BDE • Version: ka • Zugriff über: TurboDB

Datensätze aus Detailsource löschen, wie geht das?
 
Ich habe eine Datenbank mit 3 Tabellen. Die Hauptdatentabelle und 2 über Mastersource verknüpfte Tabellen. Wähle ich nun in der Haupttabelle einen Datensatz werden ja automatisch alle dazugehörigen Datensätze in den Detailtabellen selektiert (oder wie auch immer das heißt). Und genau diese selektieren Datensätze möchte ich alle löschen. Erst in Tabelle 2 dann in Tabelle 1 und schließlich den dazugehörigen Hauptdatensatz.

Kann mit bitte jemand erklären wir ich am besten die selektierten Daten aus den Detailtabellen lösche?
Danke!

DeddyH 25. Jan 2012 09:54

AW: Datensätze aus Detailsource löschen, wie geht das?
 
Je nach Datenbank kann man ja Löschregeln (ON DELETE CASCADE | SET NULL | NO ACTION) erstellen, das dürfte das Vernünftigste sein. Da Du die DB nicht angegeben hast, solltest Du einfach in der Doku nachschauen, ob diese Möglichkeit besteht. Ansonsten kannst Du das auch händisch per SQL machen, aber das sollte nicht die erste Wahl sein.

mkinzler 25. Jan 2012 11:23

AW: Datensätze aus Detailsource löschen, wie geht das?
 
BDE wird wohl dBase oder Paradox sein.

Peter Pohmann 25. Jan 2012 17:57

AW: Datensätze aus Detailsource löschen, wie geht das?
 
Hallo BBoy,

wenn Du mit TurboDB arbeitest kannst Du mit der Regel ON DELETE CASCADE das Löschen der abhängigen Datensätze automatisch machen lassen. Dazu musst Du im TurboDBViewer einen Fremdschlüssel für die abhängige Tabelle eintragen.

Wenn Du stattdessen mit TTdbTable arbeiten willst, kannst Du natürlich auch mit einer Schleife alle aktuellen Datensätze löschen oder mit TTdbTable.DeleteAll alle auf einmal. Letzteres ist aber spezifisch TurboDB.

BBoy 26. Jan 2012 16:02

AW: Datensätze aus Detailsource löschen, wie geht das?
 
TTdbTable.DeleteAll, löscht das wirklich alle oder nur die von der mastersource selektierten? Denn wie gesagt, es sollen nur die von der mastersource gewählten gelöscht werden.

Sir Rufo 26. Jan 2012 17:17

AW: Datensätze aus Detailsource löschen, wie geht das?
 
RTFM TTdbTable.DeleteAll?

BBoy 26. Jan 2012 21:19

AW: Datensätze aus Detailsource löschen, wie geht das?
 
Sorry das ich dies frage aber ich arbeite das erste mal mit Master/Detail.
Ist denn die Datenmenge in der Detailsource gefiltert wenn ich einen Datensatz in der Mastersource auswähle?

BBoy 27. Jan 2012 06:56

AW: Datensätze aus Detailsource löschen, wie geht das?
 
Also das mit .deleteall funktioniert nicht, denn da werden alle Datensätze gelöscht. Auch die wo nicht durch die Mastersource selektiert sind.

DeddyH 27. Jan 2012 07:34

AW: Datensätze aus Detailsource löschen, wie geht das?
 
Wie wäre es denn, wenn Du einfach eine Löschregel definierst, wie schon 2 mal vorgeschlagen? Wie das in TurboDB genau gemacht wird sollte auch in der Doku stehen.

Peter Pohmann 27. Jan 2012 09:29

AW: Datensätze aus Detailsource löschen, wie geht das?
 
Sorry, wenn das mit DeleteAll nicht geht. Es löscht ja bei einem aktiven Filter nur die gefilterten, also hätte ich gedacht, dass mit Detail-Datensätzen auch geht.

Aber die einfachste Art ohne SQL ist eben:
while DetailTable.FindFirst do DetailTable.Delete;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 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