Kombinationsfeld erweitern mit Klasse

Die Funktion zum Hinzufügen von Werten zur Datensatzherkunft eines Kombinationsfeldes braucht man in fast jeder Datenbankanwendung. Mal eben eine neue Kategorie anlegen oder eine neue Abteilung Kein Problem, wenn Sie pro Kombinationsfeld die richtige Ereignisprozedur programmiert haben. Aber warum sollte man diese eigentlich immer wieder neu programmieren Schließlich gibt es in einer solchen Prozedur doch nur wenige flexible Parameter. Schauen Sie sich an, wie Sie mit einer einfachen Klasse und wenigen Codezeilen ein wiederverwendbares Element zaubern.

Wenn Sie ein Kombinationsfeld verwenden, um damit die Daten einer Lookup-Tabelle zur Auswahl durch den Benutzer bereitzustellen, brauchen Sie kein eigenes Formular, um etwa eine neue Kategorie oder Abteilung zu dieser Tabelle hinzuzufügen. Es reichen dann die folgenden Zeilen Code aus – angelegt in der Prozedur, die beim Hinzufügen eines noch nicht vorhandenen Wertes durch das Ereignis Bei nicht in Liste ausgelöst wird:

Private Sub LieferantID_NotInList(NewData As String, Response As Integer)
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tblLieferanten", dbOpenDynaset)
    With rst
        .AddNew
        !Firma = NewData
        .Update
    End With
    Response = acDataErrAdded
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Sub

Gegebenenfalls fügen Sie an geeigneter Stelle noch eine MsgBox-Anweisung ein. Diese fragt, ob der neue Wert in die Datensatzherkunft des Kombinationsfeldes eingefügt werden soll (s. Abb. 1):

pic001.png

Abb. 1: Rückfrage beim Anlegen eines neuen Datensatzes in einer Lookup-Tabelle direkt über das Kombinationsfeld

If MsgBox("Soll der Wert ''" & NewData & "'' zur Liste hinzugefügt werden", vbYesNo) = vbYes Then
    ''Datensatz anlegen
Else
    Me.Undo
    Response = acDataErrContinue
End If

Ist das nicht der Fall, wird die Eingabe verworfen und mit Response = acDataErrContinue die sonst erscheinende Fehlermeldung unterdrückt. Diesen Code müssen Sie für jedes Kombinationsfeld, das die Eingabe neuer Einträge und deren Speicherung in der zugrunde liegenden Tabelle erlauben soll, hinterlegen – und Sie müssen jedesmal die entsprechenden Elemente wie etwa den Namen der Zieltabelle und des Zielfeldes austauschen. Davon abgesehen legen Sie grundsätzlich immer den gleichen Code an – nur diese beiden Werte ändern sich.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar