![]() |
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 |
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. |
AW: Löschen von Datenbankeinträgen
Die Verknüfungstabellen bestehen nur aus 2 Spalten die auf die Haupt- und listtabelle verweisen.
|
AW: Löschen von Datenbankeinträgen
Die Kombination könnte trotzdem ein zusammengesetzter Primärschlüssel sein
|
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? |
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. |
AW: Löschen von Datenbankeinträgen
Was ist denn die "Listtabelle"
Und wie ist das Dataset definiert? |
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. |
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:
absetzt. Also unabhängig von Deinem Dataset.
Delete from Rechnerspeicher where [KeyPair=..]
|
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 06:32 Uhr. |
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 by Thomas Breitkreuz