Komfortable Dropdown-Listenfelder

Schließen des Formulars

Beim Schließen des Formulars, also in der Close- Ereignisprozedur, muss nun noch die ID des neu erzeugten Datensatzes zurückgegeben werden. Dazu benötigen Sie eine zweite Variable lngErgebnis, der Sie den Wert des Feldes ID zuweisen.

Damit der Datenaustausch zwischen den beiden Formularen funktioniert, müssen Sie die beiden Variablen in einem normalen Modul mit dem Schlüsselwort public definieren (Listing 5).

Listing 5: Notwendige Variablen
Public lngDatensatz As Long
Public lngErgebnis As Long

Im Formular mit dem Dropdown-Listenfeld müssen Sie noch etwas Code ergänzen, damit die ID des erzeugten Datensatzes übernommen und der neue Eintrag im Dropdown-Listenfeld angezeigt wird (Listing 6). Sie benötigen dazu eine Ereignisprozedur für das Activate-Ereignis des Formulars. Sie sorgt dafür, dass der Code ausgeführt wird, wenn das Formular aktiviert wird.

Private Sub Form_Activate()
If lngErgebnis > 0 Then
Listefuellen Me.cmbGruppe, _
"SELECT ID, Gruppe FROM Gruppen ORDER BY Gruppe ASC", lngErgebnis
Me.Gruppe.Value = lngErgebnis
lngDatensatz = lngErgebnis
lngErgebnis = 0
End If
End Sub
Private Sub cmbGruppe_Change()
Me.Gruppe.Value = Me.cmbGruppe.Value
If Me.cmbGruppe.Value = 0 Then
'Eintrag [Neuer Eintrag ...] wurde gewählt
lngDatensatz = Me.cmbGruppe.Value - 1
DoCmd.OpenForm "frmGruppen", acNormal, , , acFormAdd
End If
End Sub

Beim Aktivieren rufen Sie den Wert der Variablen lngErgebnis ab. Ist er größer als 0, wurde ein Wert aus dem Eingabeformular zurückgegeben nd die Liste wird neu gefüllt. Der zurückgegebene ert wird dann als neuer Wert des Dropdown- istenfeldes übergeben. Anschließend ürfen Sie natürlich nicht vergessen, den Wert uch mit Me.Gruppe.Value=lngErgebnis als Wert ür das versteckte Textfeld zu speichern.

Den Wert der Variablen lngDatensatz setzen ie dann auf den zurückgegebenen Wert und danach ie Variable lngErgebnis auf 0. Das ist wichtig, amit im Formular frmGruppen zur Eingabe er Gruppen nicht ein neuer Datensatz erzeugt ird, falls der Benutzer es unabhängig vom dropdown-Listenfeld öffnet.

Außerdem müssen Sie noch die Change-Er- eignisprozedur für das Formular ergänzen und dort prüfen, ob der Eintrag mit dem Wert 0 ausgewählt´wurde. In diesem Fall zeigen Sie das Formular zur Eingabe der Gruppe an. Der Aufruf mit

DoCmd.OpenForm "frmGruppen", acNormal, , , acFormAdd

sorgt dafür, dass der Benutzer nur Datensätze hinzufügen kann und automatisch ein leerer Datensatz angezeigt wird.