Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz mit Zwischentabelleneinträgen kopieren (https://www.delphipraxis.net/91381-datensatz-mit-zwischentabelleneintraegen-kopieren.html)

hirnstroem 4. Mai 2007 07:55

Datenbank: Access • Version: kA • Zugriff über: ADO

Datensatz mit Zwischentabelleneinträgen kopieren
 
'loha Folks,

Die Tabellen Device (DeviceID) und Key (KeyID) stehen über die Zwischentabelle Device_Key (DeviceID, KeyID, Access) miteinander in Beziehung. Beim Kopieren eines Datensatzes aus der Tabelle Device, sollen sämtliche Einträge in der Zwischentabelle Device_Key mitkopiert werden.

Es geht darum, Zutrittsberechtigungen für Schlüssel beim Kopieren eines Gerätes beizubehalten.

Ich - unwissender - würde nun mit einer Abfrage sämtliche Einträge aus der Zwischentabelle mit einer gewissen DeviceID ermitteln und diese anschliessend in einer Schleife abarbeiten, wobei mit abarbeiten Kopieren, neuer Datensatz Einfügen, Speichern gemeint ist. Macht das Sinn?

Grüsse
hirnstroem

mkinzler 4. Mai 2007 08:03

Re: Datensatz mit Zwischentabelleneinträgen kopieren
 
müsste direkt über
SQL-Code:
insert into ... select
gehen

hirnstroem 4. Mai 2007 08:28

Re: Datensatz mit Zwischentabelleneinträgen kopieren
 
Vielen Dank mkinzler, das hat mich ein Stück weitergebracht.

Ich frage mich nur noch, wie anstatt der DeviceID des kopierten Datensatzes, jene des neuen Datensatzes als Parameter mitgegeben werden kann. SQL sieht bisher in etwa folgendermassen aus:

SQL-Code:
INSERT INTO Device_Key
SELECT
DeviceID, KeyID, LockedAccess
FROM
Device_Key
WHERE
DeviceID = :CopyDeviceID
Nun möchte ich analog zu :CopyDeviceID noch die :NewDeviceID mitgeben, komme aber nicht darauf wie das geht.

Grüsse
hirnstroem

mkinzler 4. Mai 2007 08:39

Re: Datensatz mit Zwischentabelleneinträgen kopieren
 
SQL-Code:
INSERT INTO Device_Key
SELECT
DeviceID, :NewDeviceID, LockedAccess
FROM
Device_Key
WHERE
DeviceID = :CopyDeviceID

hirnstroem 4. Mai 2007 09:50

Re: Datensatz mit Zwischentabelleneinträgen kopieren
 
Argh, und ich habe es genau so machen wollen. Leider vergass ich in der Tabelle Device zuerst ein Gerät mit entsprechender ID, nämlich jener, welche ich in Device_Key einzufügen versucht habe, zu erstellen.

So sieht es jetzt aus:

SQL-Code:
INSERT INTO Device_Key(DeviceID, KeyID, LockedAccess)
SELECT
:NewDeviceID, KeyID, LockedAccess
FROM
Device_Key
WHERE
DeviceID = :CopyDeviceID
Vielen Dank!


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