Office: (Office 2007) Datensätze duplizieren aus Haupt- und Unterformular

Helfe beim Thema Datensätze duplizieren aus Haupt- und Unterformular in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen! Ich habe im Rahmen einer neu anzulegenden Datenbank ein Formular entwickelt , in dem aus einem Listenfeld ("List7") zwischen... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von tobey_p, 9. Juni 2009.

  1. Datensätze duplizieren aus Haupt- und Unterformular


    Hallo zusammen!

    Ich habe im Rahmen einer neu anzulegenden Datenbank ein Formular entwickelt , in dem aus einem Listenfeld ("List7") zwischen verschiedenen Baugruppen ausgewählt werden soll:

    Code:
    SELECT sys_key, sys_baugruppe
    FROM System
    ORDER BY sys_baugruppe;

    In einem zugehörigen Unterformular werden dann die der Baugruppe zugeordneten Komponenten angezeigt.

    Nun ist es so, dass bei der Neuanlegung von Baugruppen es häufiger vorkommt, dass die Komponenten nahzu identisch sind. Ich möchte es nun dem Anwender ermöglichen - statt alles erneut einzugeben – per Click auf einen entsprechenden Button den ganzen Datensatz nebst den zugeordneten Datensätzen aus dem Unterformular zu duplizieren/kopieren.

    Ein Button mit dem Wizard zu erstellen, brachte keine Lösung, da dann nur der Datensatz aus dem Hauptformular kopiert wird, ohne Unterformular.

    Hauptformular („Baugruppen-Übersicht“) und Unterformular („Baugruppen-Übersicht UF usn_sys“) sind über den Schlüssel „sys_key“ miteinander verbunden. Das Unterformular bezieht die Daten aus den Tabellen „usn_sys“ und „US-Nummern Uebersicht“. Der Quellcode des Unterformulars ist:

    Code:

    SELECT usn_sys.usn_key, usn_sys.usnsys_Zeichnungsnr, usn_sys.sys_key, usn_sys.usnsys_Bezugsart, usn_sys.usnsys_stueckzahl, [US-Nummern Uebersicht].usn_stkkosten, usn_sys.sys_baugruppe, [usn_stkkosten]*[usnsys_stueckzahl] AS gesamtkosten, [US-Nummern Uebersicht].usn_key AS [usn_key_US-Nummern Uebersicht], [US-Nummern Uebersicht].usn_nummer, [US-Nummern Uebersicht].usn_bezeichnung, usn_sys.usn_sys_artikel

    FROM [US-Nummern Uebersicht] INNER JOIN usn_sys ON [US-Nummern Uebersicht].usn_key=usn_sys.usn_key;


    Den Button hab ich mit Hilfe einer Internet-Anleitung mit folgendem Code versehen:

    Private Sub baugruppenbutton_add_Click()
    On Error GoTo Err_baugruppenbutton_add_Click

    Dim strSql As String
    Dim lngID As Long

    If Me.Dirty Then
    Me.Dirty = False
    End If


    If Me.NewRecord Then
    MsgBox "Select the record to duplicate."
    Else
    With Me.RecordsetClone
    .AddNew
    !sys_key = Me.sys_key
    !sys_baugruppe = Me.sys_baugruppe
    .Update

    .Bookmark = .LastModified
    lngID = !sys_key

    If Me.[ baugruppenuebersicht_uf_usn_sys].Form.RecordsetClone.RecordCount > 0 Then
    strSql = "INSERT INTO [baugruppenuebersicht_uf_usn_sys_new] (sys_key, usn_sys, usn_bezeichnung, usnsys_Zeichnungsnr, usnsys_stueckzahl, usn_stkkosten) " & _
    "SELECT " & lngID & " As newsys_key, usn_sys, usn_bezeichnung, usnsys_Zeichnungsnr, usnsys_stueckzahl, usn_stkkosten " & _
    "FROM [baugruppenuebersicht_uf_usn_sys_new] WHERE sys_key = " & Me.sys_key & ";"
    DBEngine(0)(0).Execute strSql, dbFailOnError
    Else
    MsgBox "Main record duplicated, but there were no related records."
    End If

    Me.Bookmark = .LastModified
    End With
    End If

    Exit_baugruppenbutton_add_Click:
    Exit Sub

    Err_baugruppenbutton_add_Click:
    MsgBox "Error " & Err.Number & " - " & Err.Description, , "cmdDupe_Click"
    Resume Exit_baugruppenbutton_add_Click
    End Sub


    Leider funktioniert das so nicht. Ich bekomme den Fehler 3022, dass aufgrund einer Tabellen-Einstellung beim Primärschlüssel es zu mehreren gleichen Werten kommen würde. Das soll natürlich nicht sein, da ja ein ganz neuer Datensatz durch die Kopie erstellt werden soll...

    Könnte mir jemand einen Tipp geben, was ich verändern muß?

    Vielen Dank schon einmal!

    Viele Grüße

    :)
     
    tobey_p, 9. Juni 2009
    #1
  2. Hallo,

    ohne mich da jetzt durch deinen völlig unformatierten Code durchgeackert zu haben (verwende zur Darstellung von Code bitte Code-Tags), würde ich sagen, die einfachste Möglichkeit sind 2 Anfügeabfragen (eine für HF, eine fürs UF mit jeweils dem verbindenden ID-Schlüssel), welche mittels Buttonklick angestossen werden:

    Die Anfügeabfrage für das HF könnte so aussehen:
    Code:
    analog für das UF. Beachte, die Anzahl kopierender und einzufügender Felder muss gleich sein.

    und für den Button:
    Code:
    ich gehe davon aus, dass alle Tabellen in der gleichen DB liegen.
     
    rapunzel, 11. Juni 2009
    #2
  3. Hallo und vielen Dank für die Antwort!

    Hab deinen Ansatz mal ausprobiert und soweit funktioniert das auch, allerdings mit einem grundlegenden Problem:

    Wenn ich den Datensatz für das Hauptformular kopiere, wird in der zugehörigen Tabelle ja ein neuer Primärschlüssel-Wert erzeugt. Wenn ich aber die Datensätze aus dem Unterformular kopiere, werden diese der Unterformular-Tabelle ohne den verknüften Primärschlüüsel zugefügt.

    Heißt also, dass ich zwar den kopierten Datensatz im Hauptformular sehe, aber die Daten im Unterformular sind nun nicht verknüpft.

    Gibt es einen Weg, den neu generierten Primärschlüssel-Wert auch den duplizierten Datensätzen des UFO hinzuzufügen?


    Viele Grüße

    Tobias



    PS: Hier auch nochmal der obige Beitrag mit entsprechender Formatierung:


    Hallo zusammen!

    Ich habe im Rahmen einer neu anzulegenden Datenbank ein Formular entwickelt , in dem aus einem Listenfeld ("List7") zwischen verschiedenen Baugruppen ausgewählt werden soll:


    Code:
    In einem zugehörigen Unterformular werden dann die der Baugruppe zugeordneten Komponenten angezeigt.

    Nun ist es so, dass bei der Neuanlegung von Baugruppen es häufiger vorkommt, dass die Komponenten nahzu identisch sind. Ich möchte es nun dem Anwender ermöglichen - statt alles erneut einzugeben – per Click auf einen entsprechenden Button den ganzen Datensatz nebst den zugeordneten Datensätzen aus dem Unterformular zu duplizieren/kopieren.

    Ein Button mit dem Wizard zu erstellen, brachte keine Lösung, da dann nur der Datensatz aus dem Hauptformular kopiert wird, ohne Unterformular.

    Hauptformular („Baugruppen-Übersicht“) und Unterformular („Baugruppen-Übersicht UF usn_sys“) sind über den Schlüssel „sys_key“ miteinander verbunden. Das Unterformular bezieht die Daten aus den Tabellen „usn_sys“ und „US-Nummern Uebersicht“. Der Quellcode des Unterformulars ist:



    Code:
    Den Button hab ich mit Hilfe einer Internet-Anleitung mit folgendem Code versehen:

    Code:
    Leider funktioniert das so nicht. Ich bekomme den Fehler 3022, dass aufgrund einer Tabellen-Einstellung beim Primärschlüssel es zu mehreren gleichen Werten kommen würde. Das soll natürlich nicht sein, da ja ein ganz neuer Datensatz durch die Kopie erstellt werden soll...

    Könnte mir jemand einen Tipp geben, was ich verändern muß?

    Vielen Dank schon einmal!

    Viele Grüße
     
    tobey_p, 11. Juni 2009
    #3
  4. Datensätze duplizieren aus Haupt- und Unterformular

    Hi,

    wenn du innerhalb von SQL bleiben willst, könntest du
    • den neuen 1-Datensatz mit einem Kennzeichen markieren, um ihn danach zu suchen und die ID auszulesen
    • oder mit SELECT @@IDENTITY die zulezt vergebene ID auslesen

    In VBA hättest du auch die Möglichkeit, den 1-Satz per Recordset.AddNew anzulegen und dabei die entstehende ID auszulesen.
     
    Atrus2711, 11. Juni 2009
    #4
  5. Hi!

    Auch Dir vielen Dank, das klingt schon sehr nach dem was ich suche bzw. was das beschriebene Nachfolge-Problem lösen könnte.

    Nur bin ich leider noch nicht so fit in sql, wie ich es mir jetzt wünschte... Wie kann ich denn SELECT @@IDENTITY so in die bisherige Struktur einzubauen, dass man die zuletzte vergebene ID auslesen und in die ebenfalls neuen Datensätze des UFO-Tabelle einsetzen kann?

    Oder müßte man dann was ganz neues programmieren?

    Ich hoffe, dass sind alles keine blöden Fragen, aber wie gesagt: Ich kämpfe mich erst langsam nach vorne... *wink.gif*
     
    tobey_p, 11. Juni 2009
    #5
  6. Hi,

    das Prinzip ist:

    Code:
    rst.close
    Set rst = nothing
    Set db = nothing
     
    Atrus2711, 11. Juni 2009
    #6
  7. Wiederum Danke das Du dir die Mühe gemacht hast, aber ich komme leider trotzdem nicht weiter... (ja ich weiß, werd meine vba-kenntnisse unbedingt vertiefen müssen)

    Hab jetzt alle möglichen Variationen deiner SELECT @@IDENTITY - Lösung ausprobiert, klappt aber keine. Äwre wirklich klasse, wenn ihr nochmal die Geduld aufbringen könntet, um mir da weiterzuhelfen.

    Ich stell mal den sql-code der beiden bereits vorhandenen Anfügeabfragen ein:

    Für das Hauptformular:

    Code:
    Für das Unterformular:

    Code:
    Für den button:

    Code:
     
    tobey_p, 12. Juni 2009
    #7
  8. Datensätze duplizieren aus Haupt- und Unterformular

    Die Anfügeabfrage für die Ufodaten muss die neue ID natürlich irgendwie mitgeteilt bekommen. Eine bestehende Abfrage kann das nicht ohne weiteres; da müsste die ID schon per Parameter o.ä. rein.

    Lad mal hoch, ich bau dir das ein.
     
    Atrus2711, 12. Juni 2009
    #8
  9. Hallo,

    in der Abfrage für das UF fehlt die Verbindung zum HF im FROM-Abschnitt.

    Code:
     
    rapunzel, 12. Juni 2009
    #9
  10. Hi,

    hier eine Lösung per VBA.
     
    Atrus2711, 12. Juni 2009
    #10
  11. Hallo nochmal,

    dass wäre wirklich klasse von Dir! Komme ich evtl. heute doch noch vor die Tür... *wink.gif*

    Du findest die gestrippte Database im Anhang!

    Schonmal vielen Dank für deine Mühe!
     
    tobey_p, 12. Juni 2009
    #11
  12. Oh, sorry, hatte den letzten Beitrag von Dir noch gar nicht gesehen.. Schau ich mir sofort an!
     
    tobey_p, 12. Juni 2009
    #12
  13. Datensätze duplizieren aus Haupt- und Unterformular

    Code:
     
    Atrus2711, 12. Juni 2009
    #13
  14. Ist ja Wahnisnn, hat auch bei mir geklappt! *grins

    Kann Dir gar nicht genug danken, alleine hätte ich da bis heute abend dran gesessen... Ist wirklich ein klasse Forum hier, bin begeistert!


    Also nochmal vielen Dank und ein schönes Wochenende,

    Tobias
     
    tobey_p, 12. Juni 2009
    #14
  15. Motto: warum einfach, wenn's auch schwierig klappt *wink.gif*
     
    rapunzel, 12. Juni 2009
    #15
Thema:

Datensätze duplizieren aus Haupt- und Unterformular

Die Seite wird geladen...
  1. Datensätze duplizieren aus Haupt- und Unterformular - Similar Threads - Datensätze duplizieren Haupt

  2. Filtern von Datensätzen

    in Microsoft Excel Hilfe
    Filtern von Datensätzen: Guten Abend erst einmal, ich bin neu hier im Forum und wollte gerne Euer Schwarmwissen um Hilfe bitten. Meine Excelversion ist Version 16.87 (24071426) Ich habe folgendes Problem. Ich habe eine...
  3. Access Neuer Datensatz im Formular

    in Microsoft Access Hilfe
    Access Neuer Datensatz im Formular: Hallo - ich bin neu hier und Anfängerin im VBA Programmieren. Ich habe eine Frage zu VBA: In meinem Formular kann ich Daten eingeben, wenn ich das Formular wieder öffne, wird der letzte...
  4. MS Access Formular: Datensatz duplizieren mit Unterformularen

    in Microsoft Access Hilfe
    MS Access Formular: Datensatz duplizieren mit Unterformularen: Hallo Ihr Lieben, ich bin ziemliche Anfängerin bei MS Access also nehmt es mir nicht übel, wenn ich Dinge falsch bezeichne etc. :) Ausganslage Ich hab ein Hauptformular (1) (Angaben zur...
  5. Button: Datensatz duplizieren mit Anweisungen

    in Microsoft Access Hilfe
    Button: Datensatz duplizieren mit Anweisungen: Hey Ihr Lieben, im Anhang eine Beispiel Access Datei. Es gibt die Tabelle "DDIA_DIAGNOSE" mit den Spalten "DDIA_ICD10" in welche die ICD-10-Codes eingetragen werden, sowie die Spalten...
  6. Datensatz duplizieren

    in Microsoft Access Hilfe
    Datensatz duplizieren: Hallo, ich möchte in eine bestehende Datenbank einen Button einfügen mit dem ich den aktuellen Datensatz duplizieren kann. Dazu habe ich die in der Entwurfsansicht von den Steuerelementen die...
  7. Datensatz mit Unterformular duplizieren

    in Microsoft Access Hilfe
    Datensatz mit Unterformular duplizieren: Hallo! Ich habe eine Tabelle "Stamm" und eine Tabelle "Inhalt". Die beiden Tabellen sind über "StammID" verknüpft. In einem Hauptformular mit "Stamm" und einem Unterformular mit "Inhalt" gebe...
  8. Datensatz Duplizieren funktioniert in Acc2010 nicht mehr

    in Microsoft Access Hilfe
    Datensatz Duplizieren funktioniert in Acc2010 nicht mehr: Hallo zusammen, ich habe eine Anwendung "Datensatz duplizieren" mit Acc2003 erstell, nun hat ein Rechner Acc2010 instaliert, da funktioniert das nur sporadisch. kennt jemand das Problem? Der Code...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden