Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Löschen von Datenbankeinträgen (https://www.delphipraxis.net/166048-loeschen-von-datenbankeintraegen.html)

Flash68 27. Jan 2012 08:06

Datenbank: MSSQL • Version: 2008R2 Express • Zugriff über: Delphi/Ado

Löschen von Datenbankeinträgen
 
Hallo zusammen,

ich habe in einer Datenbank mehrere Verknüpfungstabellen für M zu N Beziehungen, aus diesen möchte ich Einträge löschen. Diese sind über ein ADO-Dataset an die Haupttabelle angebunden und mit ihnen werden auch die Einträge aus der Listabelle angezeigt. Deshalb gibt es beim Löschen dann folgenden Fehler:

Nicht genügend Schlüsselinformationen zum Aktualisieren

Kann mir jemand helfen wie ich nur die Einträge aus der Verknüpfungstabelle lösche ohne das er versucht die aus der Listtabelle mit zu löschen?

Gruß

Flash

jobo 27. Jan 2012 08:29

AW: Löschen von Datenbankeinträgen
 
Das geht vielleicht nicht, kommt auf das Datenmodel an.

Schau Dir die Foreign Keys auf der Tabelle an und die Primary Keys
Vermutlich sind es 2 PK, die musst Du im Delete angeben.

Flash68 27. Jan 2012 09:08

AW: Löschen von Datenbankeinträgen
 
Die Verknüfungstabellen bestehen nur aus 2 Spalten die auf die Haupt- und listtabelle verweisen.

mkinzler 27. Jan 2012 09:11

AW: Löschen von Datenbankeinträgen
 
Die Kombination könnte trotzdem ein zusammengesetzter Primärschlüssel sein

jobo 27. Jan 2012 09:21

AW: Löschen von Datenbankeinträgen
 
Wo und wie löscht Du denn?
Per Query? Im Dataset? Welche Tabelle, nur die Zwischentabelle?
Kannst Du SQL oder Quellcode posten?

Flash68 27. Jan 2012 09:32

AW: Löschen von Datenbankeinträgen
 
Ich lösche mit:

ADODataSet.Delete

Wenn die Informationen aus der Listtabelle nicht in dem Dataset angegeben sind funktioniert das auch.

Ich bräuchte nur eine Möglichkeit wie ich das ausschliesse oder so.

jobo 27. Jan 2012 09:35

AW: Löschen von Datenbankeinträgen
 
Was ist denn die "Listtabelle"
Und wie ist das Dataset definiert?

Flash68 27. Jan 2012 10:16

AW: Löschen von Datenbankeinträgen
 
Das Dataset wird über folgende Select-Anweisung angebunden:

select RS.Rechner_ID, RS.Speicher_ID, S.Bezeichnung, RS.Anzahl, S.Größe, S.Größe*Rs.Anzahl As Gesamt from Rechnerspeicher RS, Speicher S where RS.Rechner_ID =:ID and RS. Speicher_ID = S.ID

Die Haupttabelle ist Rechner, Verknüpfungstabelle ist Rechnerspeicher und die Listtabelle ist Speicher.

jobo 27. Jan 2012 10:22

AW: Löschen von Datenbankeinträgen
 
Auf dieser Basis kann der Server nicht entscheiden, wo er was löschen soll.
Wenn Du nur die Verknüfung lösen willst, muss das Dataset auch nur diese Tabelle abbilden.
Das kannst Du bspw über eine Query lösen, die ein
Code:
Delete from Rechnerspeicher where [KeyPair=..]
absetzt. Also unabhängig von Deinem Dataset.

Flash68 27. Jan 2012 11:03

AW: Löschen von Datenbankeinträgen
 
Normal verwende ich nur folgende Selectanweisung:

Select * from Rechnereingabe where Rechner_ID =:ID

damit funktioniert es, nur bei der anderen berechne ich halt noch den Gesamtspeicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr.
Seite 1 von 3  1 23      

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