Benutzer per Kombinationsfeld auswählenFür die Auswahl von Benutzern der Arbeitsgruppeninformationsdatei, an die die aktuelle Datenbank angeschlossen ist, gibt es mehrere Möglichkeiten. Neben denen, die eine temporäre Tabelle oder eine dynamisch zusammengesetzte Wertliste verwenden, ist die mit einer Callback-Funktion wahrscheinlich die eleganteste.

BeispieldatenbankDie Beispieldatenbank enthält ein Formular namens frmBenutzer mit einem Kombinationsfeld zur Auswahl von Benutzern. 
Erstellung eines Kombinationsfeldes zur Auswahl von BenutzernFür die Auswahl von Benutzern ist ein Kombinationsfeld eine sinnvolle Möglichkeit (siehe Abbildung 1).
Abbildung 1: Verwendung eines Kombinationsfeldes zur Auswahl von Benutzern
Für manche Zwecke bieten sich auch Listenfelder an. Die Erstellung eine Listenfeldes mit Benutzern ist aber prinzipiell identisch mit der hier beschriebenen Vorgehensweise. - Legen Sie ein neues Formular an.
- Fügen Sie dem Formular ein Kombinationsfeld namens cboBenutzer hinzu.
- Stellen Sie die Eigenschaft Herkunftsart auf den Ausdruck BenutzerErmitteln ein.
Der Ausdruck BenutzerErmitteln verweist auf die gleichnamige Funktion, die zum Füllen des Kombinationsfeldes verwendet wird. Bei der Funktion handelt es sich um eine sogenannte Callback-Funktion, die mehrere Male vom Kombinationsfeld aufgerufen wird, um die notwendigen Informationen zusammenzustellen.
Function BenutzerErmitteln(Feld As Control, ID As Variant, Zeile As Variant, Spalte As Variant, Code As Variant) As Variant
Static i As Integer
Dim Rueckgabewert As Variant
Dim wrk As DAO.Workspace
Set wrk = DBEngine.Workspaces(0)
Select Case Code
Case acLBInitialize
i = wrk.Users.Count
Rueckgabewert = i
Case acLBOpen
Rueckgabewert = Timer
Case acLBGetRowCount
Rueckgabewert = i
Case acLBGetColumnCount
Rueckgabewert = 1
Case acLBGetColumnWidth
Rueckgabewert = -1
Case acLBGetValue
Rueckgabewert = wrk.Users(Zeile).Name
Case acLBGetFormat
Case acLBEnd
End Select
BenutzerErmitteln = Rueckgabewert
End Function
Damit das Kombinationsfeld direkt beim Öffnen des Formulars den ersten Eintrag der Datenherkunft anzeigt, legen Sie für die Ereigniseigenschaft Beim Öffnen des Formulars noch die folgende Prozedur an:
Private Sub Form_Current()
Me.cboBenutzer = Me.cboBenutzer.ItemData(0)
End Sub |