Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Löschen von 1 zu n und 1 zu n (https://www.delphipraxis.net/11037-loeschen-von-1-zu-n-und-1-zu-n.html)

MrSpock 30. Okt 2003 12:02

Re: Löschen von 1 zu n und 1 zu n
 
Hallo Tau,

nein, es werden nicht alle Daten gelöscht, sondern nur die, die die where-Klausel erfüllen.

Recordcount macht hier keinen Sinn, weil eine DELETE Query keine Datenmenge zurückliefert, sondern die Daten direkt auf dem Server löscht. Mit einem anschließendem SELECT kannst du das prüfen.

Treffnix 30. Okt 2003 12:08

Re: Löschen von 1 zu n und 1 zu n
 
Zitat:

es werden aber alle Daten gelöscht den ich habe es Überprüft mit RecordCount
und es sind keine Daten mehr vorhanden.
Das wundert mich jetzt allerdings auch ein bisschen. Aber wenns klappt umso besser...


Zitat:

mit dieser Anweisung werden auch nur die Daten in einer Tabelle Gelöscht.

Ich möchte aber in zwei oder auch mehrere Tabellen Löschen.
In deinem Select-Statement hast du doch auch nur eine Tabelle ausgewählt, oder? Wie willste dann mehr löschen?
Grundsätzlich halte ich den Delete-Befehl jedenfalls sauberer und schneller, als Datensatz für Datensatz abzuklappern.

Aber wie gesagt: Wenns klappt is joa alles in Buddha. Klappts denn? :)

*edit*
Ich bin soooo langsam.... :cry:

Treffnix 30. Okt 2003 12:14

Re: Löschen von 1 zu n und 1 zu n
 
Aber diesmal hat der Vulkanier nicht aufgepasst.

Zitat:

nein, es werden nicht alle Daten gelöscht, sondern nur die, die die where-Klausel erfüllen
Ich glaube Tau meinte, dass mit seiner Variante alle Daten gelöscht werden, statt jedem 2. , wie von dir vermutet.

Zitat:

Recordcount macht hier keinen Sinn, weil eine DELETE Query keine Datenmenge zurückliefert, sondern die Daten direkt auf dem Server löscht. Mit einem anschließendem SELECT kannst du das prüfen.
Und bei seiner Variante macht Recordcount schon Sinn.

Sollte ich derjenige sein, der Tau falsch verstanden hat, nehme ich alles zurück und behaupte das Gegenteil :stupid:

Tau 30. Okt 2003 12:48

Re: Löschen von 1 zu n und 1 zu n
 
Hallo MrSpock und Treffnix

es ist trotzdem noch die Frage offen wie kann ich über mehrere
Tabellen Löschen die mit einer 1 zu n Verbindung zusammen hängen.

mfg
Tau

Tyrael Y. 30. Okt 2003 12:55

Re: Löschen von 1 zu n und 1 zu n
 
Hallo,

wenn du inmehreren Tabellen etwas über ein SQL-Statement löschen möchtest
musst du diese Tabellen im Statement mit LeftJoin verbinden.


Gruß Tyrael

MrSpock 30. Okt 2003 15:48

Re: Löschen von 1 zu n und 1 zu n
 
Hallo Tau,

da kommt es jetzt doch auf die Datenbank an. Manche Datenbanken erlauben die "Löschweitergabe" CASCADE als CONSTRAINT im Rahmen der referenziellen Integrität festzulegen. D.h. diese Datenbanken löschen alle über einen Fremdschlüssel verbundenen Daten, wenn der Masterdatensatz gelöscht wird.

Wenn das die Datenbank nicht kann, dann machst du es am besten in dem BeforeDelete Ereignis des zu löschenden Mastersatzes. Idealerweise unter Transaktionskontrolle, damit bei einem Fehler alles mit ROLLBACK wieder rückgaängig gemacht werden kann.

Beim DeforeDelete Ereignis erstellt du eine weitere Löschquery für die Detailtabelle und stellst über einen Parameter sicher, dass nur die Daten gelöscht werden, die zu dem Masterdatensatz gehören. Bei einem Fehler bricht du die Delete Operation dann ab.

Tau 3. Nov 2003 05:34

Re: Löschen von 1 zu n und 1 zu n
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo MrSpock

Sorry, das ich mich erst jetzt melde musste meinen PC neu Installieren?
Gibt jedes mal 2 Tage Arbeit

Habe es ausprobiert leider mit sehr geringen erfolg. Der wink mit Transaktionskontrolle ist gut, aber leider steht in der Hilfe relativ wenig drin. z.B. über wie viele Tabellen es geht usw.

Mit BeforeDelete bekomme ich immer dieselbe Fehlermeldung. Verstehe aber nicht warum? :wall:


Habe ein kleines Demo gebastelt könntest du mir bitte einmal anschauen.

Besten Dank


mgf
Tau

MrSpock 4. Nov 2003 21:59

Re: Löschen von 1 zu n und 1 zu n
 
Hallo Tau,

was mir auf die Schnelle aufgefallen ist, ist dass du vor dem Löschen des Datensatz diesen in den Edit Mode setzt, das ist aber falsch. Du solltest nur myTable.Delete aufrufen und den vorherigen Edit Aufruf löschen.

Tau 5. Nov 2003 01:31

Re: Löschen von 1 zu n und 1 zu n
 
Hallo MrSpock

Danke für denn Tipp

mfg
Tau


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Seite 2 von 2     12   

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