Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz löschen verursacht Fehler - Datensatz trotzdem weg (https://www.delphipraxis.net/81073-datensatz-loeschen-verursacht-fehler-datensatz-trotzdem-weg.html)

hirnstroem 20. Nov 2006 15:04

Datenbank: Access • Zugriff über: ADO

Datensatz löschen verursacht Fehler - Datensatz trotzdem weg
 
'loha Folks,

eigentlich möchte ich über ein Webinterface einen Datensatz löschen. Dazu rufe ich DataSet.Delete auf.

Nun erscheint aber die Fehlermeldung:

Datensatz kann nicht gelöscht oder geändert werden, da die Tabelle 'Device' in Beziehung stehende Datensätze enthält.

Nun, so würde man annehmen, wurde der Löschvorgang verhindert. Nach einer Aktualisierung der Anzeige ist er aber trotzdem gelöscht.

Der Datensatz wird mit untenstehender Abfrage angezeigt. Führe ich diese Abfrage in Access aus und lösche anschliessend einen Datensatz so geht dies ohne Fehler.

SQL-Code:
SELECT *
FROM
(Room INNER JOIN
  (Floor INNER JOIN
    (DeviceType INNER JOIN    
      (Building INNER JOIN
        (Application INNER JOIN Device ON [Application].[ApplicationID] =[Device].[ApplicationID])
      ON [Building].[BuildingID] =[Device].[BuildingID])
    ON [DeviceType].[DeviceTypeID] =[Device].[DeviceTypeID])
  ON [Floor].[FloorID] =[Device].[FloorID])
ON [Room].[RoomID] =[Device].[RoomID])
WHERE
DeviceType.DeviceType LIKE :DeviceType
AND
Application.Application LIKE :Application
AND
Building.Building LIKE :Building
AND
Floor.Floor LIKE :Floor
AND
Room.Room LIKE :Room
ORDER BY Address;
Weiteres vorgehen?

shmia 20. Nov 2006 16:42

Re: Datensatz löschen verursacht Fehler - Datensatz trotzdem
 
Mit deiner Abfrage kann kein Rechner entscheiden, ob du einen Room, Floor, Device, Building oder Application löschen möchtest.
Du kannst nur dann Daten aus einer Query löschen, wenn nach FROM genau eine Tabelle aufgelistet ist.
Dies bedeutet, dass dein Löschbutton hier falsch ist.
Du hast wohl auch Formulare in denen du jeweils alle Rooms, Floors, ... einzeln editieren kannst; dort darf man löschen.


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