Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zwei Datensätze in Tabelle bei gleicher ID einfügen

Begonnen von AKH, Juli 14, 2015, 16:38:17

⏪ vorheriges - nächstes ⏩

AKH

Hallo! Ich bin relativ neu bei Access und klaube mir hier und da was zusammen, da ich für meine Bücher eine Datenbank erstellen will.

Jetzt habe ich folgendes Problem: Wenn man ein neues Buch einträgt, dessen Autor Access noch nicht kennt, soll sich ein Dialog öffnen, der zunächst fragt, ob der Autor abgespeichert werden soll. Bei "Ja" öffnet sich ein Formular im Dialogfenster, bei dem der Nutzer Vor- und Nachname einträgt. Diese sollen dann in der Tabelle "Autoren" abgespeichert werden. Dort erstellt Access dann in der Kombination einen vollständigen Namen.

Allerdings passiert jetzt z.B. beim Testautor "Piepsi Piep" folgender Eintrag nach Klicken auf "Okay":

ID         Vorname          Nachname
1           Piepsi
2                                   Piep

Ich hoffe, das war verständlich. Da die Befehle nacheinander ablaufen, vergibt Access also jeweils eine neue ID.
Hier mein Code:

Private Sub Insert_Autor_Click()
    Dim db As DAO.Database
    Set db = CurrentDb
        db.Execute "INSERT INTO tbl_Autoren(Vorname) VALUES('" & Me!NA_Vorname & "')", dbFailOnError
        db.Execute "INSERT INTO tbl_Autoren(Nachname) VALUES('" & Me!NA_Nachname & "')", dbFailOnError
        Response = acDataErrAdded
    Set db = Nothing
End Sub


Bitte helft mir :D Ich habe Ideen, wie es klappen könnte, aber ich kenne mich noch zu wenig mit dem Codieren aus, um zu wissen, wie ich sie umsetzen muss!

Danke,
AKH

MzKlMu

#1
Hallo,
Du fügst 2 Anfügeabfrage aus, also bekommst Du auch 2 Datensätze, ganz wie Du es gemacht hast. Du musst Vor und Nachname zusammen anfügen. Du willst ja auch keine 2 Datensätze bei gleicher ID, sondern ein Datensatz mit einer neuen ID. Es macht ja auch keinen Sinn. Vor und Nachnamen eines Autors in 2 DS zu speichern.
Private Sub Insert_Autor_Click()
        CurrentDb.Execute "INSERT INTO tbl_Autoren(Vorname, Nachname)VALUES('" & Me!Na_Vorname & "','" & Me.Na_Nachname & "')", dbFailOnError
        Response = acDataErrAdded
End Sub

Der Code ist noch etwas eingekürzt.

Wählst Du den Autor mit einem Kombi aus und nutzt das Ereignis bei nicht in Liste ?
Warum bindest Du das Formular nicht einfach an die Tabelle, dann braucht es keine Anfügeabfrage.
Gruß Klaus

MaggieMay

Hi,

Response ist im Click-Ereignis nicht anwendbar, offensichtlich hast du auf den Eintrag von "Option Explicit" im Modulkopf verzichtet, das solltest du nachtragen (und zwar in jedem bereits vorhandenen Modul) und für alle DBs und zukünftige Module den Haken bei der VBA-Option "Variablendeklaration erforderlich" setzen.
Freundliche Grüße
MaggieMay