Daten automatisch in Zwischentabelle einfügen

dualis

Grünschnabel
Hallo zusammen
Ich bin nicht ein absoluter Neuling in Sachen Access, aber auch nicht sehr versiert. Ich habe mir eine Datenbank erstellt wo ich Heilpflanzen, Wirkungen und Symptome (grob gesagt) jeweils abrufen möchte. Die Tabellen stehen alle und auch jeweilige Zwischentabellen damit ich die n:m - Beziehungen machen konnte.

Nun habe ich es irgendwie hingekriegt (Access hat mir im Hintergrund einen VBA-Code erstellt), dass im Formular der einzelnen Pflanzen die Wirkungen und die Symptome korrekt angezeigt werden. Alles wunderbar.
Jetzt will ich eine Liste der Pflanzen abrufen mit einer bestimmten Wirkung, also noch ein Formular mit den einzelnen Wirkungen erstellt, aber es klappt nicht so wie ich will und ich denke das Problem ist, dass in der Zwischentabelle keine Daten eingefügt werden.

Wie kann ich die jeweiligen IDs der Pflanzen und Wirkungen (wenn ich sie manuell eingebe klappt es) automatisch in die Zwischentabelle eintragen lassen, dass da ein neuer Datensatz entsteht?
Ist vielleicht etwas kompliziert geschrieben, ich weiss aber nicht, wie ich es sonst erklären soll ;-)

Grüsse,
dualis
 
Es ist nicht kompliziert geschrieben. Es ist so geschrieben, dass man keine Antwort geben kann. Besser gesagt, keine, welche dir etwas nützt.

Also, du willst beim Eingeben von Daten, dass in eine weitere Tabelle irgendwelche Daten geschrieben werden.
Mache ein DropDown mit den Anderen Daten, die angehängt werden sollen. Dann setze einen Event (wahrscheinlich ist der OnDataChange und AfterInsert geeignet) auf das Formular. Dort hinterlegst du im VBA ein Code, der ein INSERT mit der ID aus dem Dropdown und der ID des Datensatzes in die Zwischentabelle schreibt.
 
Hi Yaslaw
Erstmal vielen Dank für deine Antwort.
Wofür genau (also was für Daten) müsste ich ein DropDown machen? Das verstehe ich nicht ganz. Ich habe ein Formular mit der Pflanze, darauf ein Unterformular mit den Wirkungen. Diese 2 IDs (also PflID und WirkID) würde ich gerne automatisch in die Zwischentabelle eingefügt bekommen, damit da ein neuer Datensatz entsteht - worauf ich dann im Formular der Wirkungen zurückgreifen kann um die zugehörigen Pflanzen aufzulisten.
Das mit dem Event und VBA-Code macht Sinn, nur schreiben kann ich ein solcher leider nicht. Hättest du mir ein Beispiel?
Grüsse,
dualis
 
Beispiele gibt es im Internet viele.
Du hast dein Formular mit dem Unterformular.
Die pflid ist klar, das ist die aktuel angezeigte Pflanze im Formular.
Und die wirkid? Ist denn das Unterformular ungebunden und zeigt immer alle Wirkungen?
 
Gut, ich hoffe, ich werde fündig ;-)
Das UF ist, soviel ich weiss, gebunden, es zeigt alle Wirkungen zu dieser Pflanze und die Symptome dazu (ein verknüpftes Formular, ich habe es erstellt basierend auf der Tabelle der Wirkungen und der Zwischentabelle). Die Verknüpfung zum Hauptformular erfolgt über die PflID. Die WirkID steht in einem Kombifeld.
 
Ich helfe dir schon mit VBA. Keine Angst. Aber vorher muss ich wissen, was woher kommt. Ansonsten bringtes nix.

Woher soll jetzt die wirkid kommen, die verknüpft werden soll? Nicht aus dem Unterformular, denn diese sind ja bereits in der Zwischentabelle.
 
:-* danke
In der Zwischentabelle steht eben nichts :-o ... nur wenn ich sie separat öffne und die IDs manuell eingebe, das ist ja genau mein Problem...
Die WirkID wird aus der Tabelle Wirkungen genommen und im UF im Kombifeld gewählt.
 
Hä? Vorher hast du geschrieben, dass im UF nur Wirkungen angezeigt werden die bereits verknüpft sind. Jetzt willst du im UF wieder Wirkungen auswäheln die noch nicht verjknüpft sind.
Was den nun. Mach mal ein PrintScreen oder stelle eine Demo-DB zur verfügung.
 
ups, hab ich da was falsches gesagt :eek:
Demo-DB ist zu gross :-( auch wenn ich alles "unnötige" rauslösche.
hier ein printscreen des Formulars. Das Kombifeld TCMWirkNam bezieht die Daten aus der Tabelle T_TCMWirkungen. Das UF ist über die PflNr mit dem HF verknüpft.
Hilft das weiter?

upload_2017-2-3_13-22-15.png

Beim Anzeigen ist mit folgendem Code hinterlegt (wurde automatisch generiert):
Code:
Sub Form_Current()
On Error GoTo Form_Current_Err

    If ChildFormIsOpen() Then FilterChildForm

Form_Current_Exit:
    Exit Sub

Form_Current_Err:
    MsgBox Error$
    Resume Form_Current_Exit

End Sub
Sub VerknüpfungUmschalten_Click()
On Error GoTo VerknüpfungUmschalten_Click_Err

    If ChildFormIsOpen() Then
        CloseChildForm
    Else
        OpenChildForm
        FilterChildForm
    End If

VerknüpfungUmschalten_Click_Exit:
    Exit Sub

VerknüpfungUmschalten_Click_Err:
    MsgBox Error$
    Resume VerknüpfungUmschalten_Click_Exit

End Sub
Private Sub FilterChildForm()

    If Me.NewRecord Then
        Forms![ZT_Pfl-TCMWirk].DataEntry = True
    Else
        Forms![ZT_Pfl-TCMWirk].Filter = "[TCMWirkNr] = " & Me.[TCMWirkNr]
        Forms![ZT_Pfl-TCMWirk].FilterOn = True
    End If

End Sub
Private Sub OpenChildForm()

    DoCmd.OpenForm "ZT_Pfl-TCMWirk"
    If Not Me.[VerknüpfungUmschalten] Then Me![VerknüpfungUmschalten] = True

End Sub
Private Sub CloseChildForm()

    DoCmd.Close acForm, "ZT_Pfl-TCMWirk"
    If Me![VerknüpfungUmschalten] Then Me![VerknüpfungUmschalten] = False

End Sub
Private Function ChildFormIsOpen()

    ChildFormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, "ZT_Pfl-TCMWirk") And acObjStateOpen) <> False

End Function
 
Anstrengend. Ich habe TCMWirkNam im Suchbild nicht gefunden. Ich gehe jetzt mal davon aus, dass das ein Auswahlfeld für die wirkid ist, die der pflid angehängt werden soll.

Natrülich musst du noch alle Namen etc anpassen.
Visual Basic:
Private Sum meinKnopfUmDieZuordnungZuBestätigen_click()
    Dim sql As String
    sql = "INSERT INTO [meine Zwischentabelle] (pflid, wirkid) VALUES (" & me.pflid & ", " & me.wirkid & ")"
    currentDb.execute sql
End Sub
 

Neue Beiträge

Zurück