Über Kombinationsfeld in Formular suchen (Access 97, 2000)
Veröffentlicht am 30.12.2003
Frage:
Ich möchte ein kleines Softwareinventar machen.
Wie kann ich über ein Kombinationsfeld den User auswählen, damit die ihm zugewiesene Software aufgelistet wird?
Im Moment habe ich drei Tabellen: Usertabelle, Softwaretabelle und eine Zwischentabelle, wo die den Usern zugewiesene Software gespeichert sind.

Antwort:
Access-97-Datenbank mit Usern und Software.
Mit den drei Tabellen haben Sie schon den richtigen Start. Es ist anzunehmen, dass die Tabellen und deren Beziehungen ungefähr so aussehen: siehe Abbildung 1 unten
Über ein Kombinationsfeld können Sie auch eine Suchmöglichkeit im Formular anbieten. Das Kombinationsfeld soll alle User anzeigen und zum ausgewählten User wechseln. Erstellen Sie dafür ein Kombinationsfeld mit folgender Datensatzherkunft:
SELECT UserNr, User FROM Usertabelle ORDER BY User;
Diese Datensatzherkunft gibt eine Liste aller User zurück. Bei der Auswahl eines Users aus dieser Liste wird folgende Ereignisprozedur NachAktualisierung ausgeführt, um zum gesuchten User zu wechseln:
Private Sub cmbUser_AfterUpdate()
Dim rstClone As Recordset
If Not IsNull(Me!cmbUser) Then
Set rstClone = Me.RecordsetClone
rstClone.FindFirst "UserNr=" & Me!cmbUser
If Not rstClone.NoMatch Then
'zum gefundenen Datensatz wechseln
Me.Bookmark = rstClone.Bookmark
End If
End If
End Sub
Diese Prozedur setzt die Formulareigenschaft RecordsetClone ein, um innerhalb der Datensatzgruppe des Formulars zu suchen. Als Kriterien der FindFirst-Methode wird ein String mit der versteckten Spalte des Kombinationsfelds aufgebaut, die die Usernummer enthält.