PDA

Vollständige Version anzeigen : Datensatz mit Detaildatensätze kopieren


Peter Medele
26.01.2008, 09:03
Hallo Zusammen,
wie kann ich einen datensatz kopieren und als neuen Datensatz anlegen, so dass nur der Autowert hochzählt, die Inhalte aber die gleichen bleiben. Außerdem sollen auch alle Dateildatensätze (aus den Unterformularen) mitkopiert werden, auch hier sollen die Werte beibehalten werden.
Im angefügten Beispiel soll die im Formular frm_F die Variante 1 kopiert und mit gleichen Werten eingefügt werden. Leider fehlt mir der Ansatz wie ich dieses Problem angehe.

Danke
Peter

Louisleon
26.01.2008, 12:49
Leider fehlt mir der Ansatz wie ich dieses Problem angehe.

Leider fehlt mir das Verständnis für dein Vorgehen. Vielleicht erklärst Du noch ein bisschen warum Du die DS kopieren willst, was imho keinen Sinn für mich ergibt.

Gruß

LL

Peter Medele
26.01.2008, 13:23
Hallo LL,
Bei meinem Beispiel handelt es sich nur um ein vereifachte Version meiner DB, da ich nicht weiß wie ich ansetzten muss.
Das Sinn des Ganzen ist folgendes, ich habe Artikeldaten denen Farvarianten zugeordnet sind. Der einzelnen Farbvariante sind wiederum Materialien zugeordnet. wenn eine neue Farvariante angelegt wird möchte ich die Materialien mitkopieren um diese nicht nochmals zurodnen zu müssen, sondern nach dar Anlage nur die nötigen Änderungen manuell machen zu müsen.

Gruß
Peter

jimmyheinz
26.01.2008, 15:50
Hallo Peter

eine ähnliche Funktion habe ich mal gefunden und für mich angepasst. Allerdings für einen ganz anderen Zweck. Im link steht in einem Beitrag der Code. Dort wird der DS im HF kopiert und die dazugehörigen UF. Ob das für deine Zwecke wirklich sinnvoll ist, weis ich jetzt aber nicht.

http://www.ms-office-forum.net/forum/showthread.php?t=182246

Josef P.
26.01.2008, 16:01
Prinzip-Lösung mittels VBA u. SQL:

lngKopierBasis = 123 ' = die zu kopierende DS-Kennung

set db = currentdb

'1. Haupt-DS kopieren
strSQL = "INSERT INTO Tabelle1 (Feld1, Feld2, ...)" & _
" SELECT Feld1, Feld2, ... " & _
" FROM Tabelle1 where ID = " & lngKopierBasis
db.execute strSQL

'2. letzen Autowert auslesen
set rst = db.Openrecordset("SELECT @@IDENTITY")
lngNeueID = rst.fields(0)
rst.close
set rst = nothing

'3. Detail-DS kopieren
strSQL = "insert into Tabelle2 (fiTab1, Feld1, Feld2, ...)" & _
" SELECT " & lngNeueID & ", Feld1, Feld2, ... " & _
" FROM Tabelle2 where fiTab1 = " & lngKopierBasis
db.execute strSQL
set db=nothing

Peter Medele
26.01.2008, 20:02
Hallo Josef,
vielen Dank, funktioniert genauso wie ich mir das vorgestellt habe. Ich musste nur noch den Schritt 3 mit den anderen Untertabellen wiederholen dann war es genau das Richtige.
Gruß
Peter