Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

5.11.5 Einträge des ListView-Steuerelements auswählen

5.11.6 ListView-Steuerelement mit Daten füllen

Wie das TreeView-Steuerelement bietet das ListView keine Möglichkeit der direkten Bindung an eine Datenherkunft wie eine Tabelle oder Abfrage. Die einzelnen Datensätze der zugrunde liegenden Datenherkunft müssen Stück für Stück programmatisch zum ListView hinzugefügt werden.

Das folgende Beispiel zeigt, wie Sie ein ListView-Steuerelement mit den in einer Tabelle enthaltenen Daten füllen. Als Datenherkunft dient die Tabelle tblPersonal der Beispieldatenbank. Das ListView-Steuerelement heißt lvwPersonal und soll für jeden Mitarbeiter Nachname, Vorname und die Büro-Durchwahl anzeigen.

Layout der Liste

Bevor Sie das ListView-Steuerelement mit Daten füllen, nehmen Sie einige Einstellungen am Layout des Steuerelements vor. Als Erstes stellen Sie die Eigenschaft View auf der Registerseite Allgemein des Eigenschaftsfensters auf den Wert 3 - lvwReport ein. Anschließend bereiten Sie das ListView für die Anzeige von drei Spalten je Zeile vor. Dazu wechseln Sie im Eigenschaftsfenster auf die Seite Spaltenköpfe und fügen die drei Einträge Nachname, Vorname und Durchwahl hinzu.

Füllen per VBA

Dann können Sie schon die VBA-Prozedur für das Füllen des ListView-Steuerelements anlegen. Das ListView soll direkt beim Öffnen des Formulars gefüllt werden, also verwenden Sie die Beim Laden-Ereigniseigenschaft. Die fertige Routine deklariert zunächst die für den Datenzugriff benötigten Objekte und instanziert diese. In einer Do While-Schleife durchläuft sie dann alle in der Datensatzgruppe enthaltenen Datensätze.

Und hier kommt der für das ListView interessante Teil: Für jeden Eintrag legt die Routine ein neues ListItem-Element an und referenziert es mit der Objektvariablen objListItem. Das war es schon - das ListView sollte sich nun etwa wie in Abbildung 5.39 präsentieren.

Dim objListView As ListView

Private Sub Form_Load()

    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim objListItem As ListItem
    
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tblPersonal", dbOpenSnapshot)
    
    Set objListView = Me!lvwPersonal.Object
    
    Do While Not rst.EOF
        
        Set objListItem = objListView.ListItems.Add(, "a" _
            & rst![PersonalID], rst!Nachname)
        
        With objListItem

            . ListSubItems. Add , , rst!Vorname
            .ListSubItems.Add , , rst!DurchwahlBuero
        
        End With
        
        rst.MoveNext
    
    Loop
    
    rst.Close
    Set rst = Nothing
    Set db = Nothing

End Sub

Listing 5.27: ListView mit Tabellendaten füllen

Markierten Datensatz ermitteln

Ist das ListView gefüllt, lässt sich daraus leicht der Schlüssel des jeweils markierten Eintrags ermitteln. Dies erledigt man am besten immer beim Klick auf einen der Einträge. Die passende Ereignisprozedur, die übrigens auch beim Navigieren mit den Pfeiltasten durch die Liste ausgelöst wird, heißt ItemClick.

Mit der Routine aus folgendem Listing geben Sie beim Klick auf einen Eintrag den Schlüssel des aktuellen Elements aus.

Private Sub lvwPersonen_ItemClick(ByVal Item As Object)
    Debug.Print lvwPersonen.SelectedItem.Key
End Sub

Listing 5.28: Ausgeben des Schlüsselwertes beim Mausklick auf einen Eintrag

Der Key eines Elements setzt sich in diesem Fall aus dem Buchstaben »a« und dem Primärschlüsselwert des entsprechenden Datensatzes zusammen. Um hieraus den Primärschlüssel zu ermitteln, würde man etwa folgenden Ausdruck verwenden:

Mid(lvwPersonen.SelectedItem.Key, 2)

Primärschlüssel in eigener Spalte speichern

Alternativ zum Auslesen des Schlüssels und zum Ermitteln des Primärschlüssels aus dem Elementschlüssel per Textfunktion kann man auch direkt den Primärschlüssel in einer nicht sichtbaren Spalte des ListView-Steuerelements speichern. Dazu fügen Sie der Routine aus Listing 5.26 einfach noch eine Zeile zum Erzeugen eines weiteren Unterelements je Eintrag hinzu:

. ListSubItems.Add , , rst!PersonalID

Natürlich brauchen Sie auch noch eine weitere Spalte im ListView-Steuerelement, das Sie am schnellsten über sein Eigenschaftsfenster einrichten können - nennen Sie es einfach ID. Der Name tut aber ohnehin nichts zur Sache, da Sie gleich über den Spaltenindex auf das Feld zugreifen werden.

Abbildung 5.39: ListView mit Tabellendaten

Zum Auslesen dieses Unterelements müssen Sie seinen Index kennen. Der Index der Einträge der Listenunterelemente beginnt mit 1. Da der Primärschlüssel in der Prozedur aus Listing 5.26 als letztes Element angelegt wird, hat der Index den Wert 3. Mit folgendem Ausdruck erhalten Sie den (versteckten) Index:

lvwPersonen.SelectedItem.ListSubItems.Item(3).Text

Wenn Sie das ListView-Steuerelement beispielsweise dazu verwenden möchten, wie in Abbildung 5.40 im gleichen Formular die Detaildaten des ausgewählten Mitarbeiters anzuzeigen, kommen Sie mit folgendem Dreizeiler aus:

Private Sub lvwPersonen_ItemClick(ByVal Item As Object)
    Dim lngKey As Long
    lngKey = lvwPersonen.SelectedItem.ListSubItems.Item(3).Text
    Me.Recordset.FindFirst "PersonalID = " & lngKey
End Sub

Listing 5.29: Aktualisieren des im Formular angezeigten Datensatzes nach Auswahl im ListView-Steuerelement

Voraussetzung ist natürlich, dass das Formular an die Tabelle tblPersonal gebunden ist.

Abbildung 5.40: Das ListView-Steuerelement zur Auswahl von Mitarbeiterdetails

Nächster Abschnitt:

5.11.7 Icons im ListView-Steuerelement

© 2006-2008 André Minhorst Alle Rechte vorbehalten.