Kombinationsfeld automatisch ergänzen

Kombinationsfelder in Access haben den Vorteil, daß man häufig benötigte Einträge nicht jedesmal neu eingeben muß, sondern bequem aus einer Liste auswählen kann. Oft kommt man jedoch in die Situation, daß die Auswahl des Kombinationsfeldes um einen Eintrag erweitert werden soll, der ab sofort ebenfalls in der Liste erscheinen soll.

Dies läßt sich mit Hilfe einer Ereignisprozedur erledigen. Um den Tip nachzuvollziehen, benötigen Sie eine Tabelle mit dem Namen »Kategorie«, die nur ein einziges Feld »Name_Kategorie« enthält. Ein Primärschlüssel ist in dieser Tabelle nicht erforderlich. Die aus dieser Liste übernommenen Werte werden in der dem Formular zugrunde liegenden Tabelle im Feld »Kategorie« abgelegt.

Anschließend erstellen Sie im gewünschten Formular ein Kombinationsfeld, das seine Werte aus der Tabelle »Kategorie« bezieht dabei hilft Ihnen der Steuerelementassistent. Mit einem rechten Klick auf das neue Kombinationsfeld gelangen Sie in dessen »Eigenschaften«. Legen Sie im Register »Daten« fest, daß die Eigenschaft »Nur Listeneinträge« auf »Ja« steht. Im Register »Ereignis« wählen Sie »Ereignisprozedur« und weisen ihr die untenstehende abgedruckte Prozedur zu.

Wenn Sie nach dem Speichern der Änderungen einen neuen Wert in das Kombinationsfeld eintragen, erscheint eine Dialogbox, die nachfragt, ob die Kategorie hinzugefügt werden soll. Mit »Ja« übernimmt die Prozedur den Eintrag in die Liste der Kategorien. Bitte achten Sie darauf, daß Sie das Listing in einigen Punkten an Ihre Formular- und Feldnamen anpassen müssen. In der Zeile »Set ct = Forms!Eingabemaske!Kategorie« wird zum Beispiel davon ausgegangen, daß der Name des Formulars »Eingabemaske« und der des Feldes »Kategorie« lautet.
Stefan Kottbusch

Ereignisprozedur für Kombinationsfelder

Private Sub Kategorie_NotInList(neuer_wert As String, intResponse As Integer)

Dim x As Integer, db As DATABASE, rs As Recordset, ct As Control
æFrage, od eine neue Kategorie erstellt werden soll
x = MsgBox(“Soll eine neue Kategorie hinzugefügt werden?ö, 36, “Kategorie nicht in Listeö)
If x = 6 Then æWenn JA...
Set db = CurrentDb()
Set rs = db.OpenRecordset(“Kategorieö, dbOpenTable)
Set ct = Forms!Eingabemaske!Kategorie ædas Listenfeld
rs.AddNew
rs!Name_Kategorie = neuer_wert
rs.UPDATE
rs.Close
DoCmd.DoMenuItem acFormBar, acEdit, acUndo
intResponse = acDataErrAdded
Else æWenn NEIN...
DoCmd.DoMenuItem acFormBar, acEdit, acUndo
intResponse = acDataErrContinue
End If
End Sub