AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Löschen von 1 zu n und 1 zu n
Thema durchsuchen
Ansicht
Themen-Optionen

Löschen von 1 zu n und 1 zu n

Ein Thema von Tau · begonnen am 30. Okt 2003 · letzter Beitrag vom 5. Nov 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#11

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

  Alt 30. Okt 2003, 12:02
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#12

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

  Alt 30. Okt 2003, 12:08
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....
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#13

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

  Alt 30. Okt 2003, 12:14
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
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#14

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

  Alt 30. Okt 2003, 12:48
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
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#15

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

  Alt 30. Okt 2003, 12:55
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
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#16

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

  Alt 30. Okt 2003, 15:48
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#17

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

  Alt 3. Nov 2003, 05:34
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?


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

Besten Dank


mgf
Tau
Angehängte Dateien
Dateityp: zip loeschen_2_496.zip (25,7 KB, 6x aufgerufen)
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#18

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

  Alt 4. Nov 2003, 21:59
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#19

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

  Alt 5. Nov 2003, 01:31
Hallo MrSpock

Danke für denn Tipp

mfg
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.
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