ListView-Steuerelement: Daten bearbeiten

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

In einem gewissen Rahmen bietet das ListView-Steuerelement auch die Möglichkeit, Daten zu bearbeiten. Dazu können Sie beispielsweise den Inhalt der ersten Spalte anklicken, den Eintrag ändern und die änderung übernehmen. Außerdem können Sie mit dem ListView-Steuerelement ein Kontrollkästchen vor jedem Eintrag anzeigen, um die Einträge auszuwählen oder damit ein Ja/Nein-Feld abzubilden. Wie dies gelingt, zeigt der vorliegende Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1209_ListView.mdb.

Erste Spalte ändern

Im folgenden Beispiel soll der Benutzer direkt im ListView-Steuerelement die in der ersten Spalte angezeigten Daten ändern können. Das setzt voraus, das die erste Spalte auch Daten anzeigt, die man am ehesten schnell mal ändern möchte. Die Folgerung ist, dass die erste Spalte nun nicht mehr den Primärschlüsselwert der zugrunde liegenden Tabelle anzeigen kann. Dieser soll aber in den meisten Fällen ohnehin nicht erscheinen.

Um den Wert des in der ersten Spalte angezeigten Wertes zu ändern, soll der Benutzer diesen einfachen anklicken, damit er wie etwa ein Dateiname im Windows Explorer zur manuellen Bearbeitung vorbereitet wird (siehe Bild 1). Der Benutzer ersetzt dann den vorhandenen Text durch den gewünschten Text und bestätigt die Eingabe durch das Betätigen der Eingabetaste oder anderweitigem Verschieben des Fokus auf ein anderes Element des Formulars.

ändern der in der ersten Spalte angezeigten Daten

Bild 1: ändern der in der ersten Spalte angezeigten Daten

Damit das Formular frmListViewDatenAendern mit den angezeigten Daten der Tabelle tblKunden gefüllt wird, deklarieren wir zunächst eine Objektvariable, mit der wir auf die Eigenschaften und Methoden des ListView-Steuerelements zugreifen, im Klassenmodul Form_frmListViewDatenAendern:

Dim objLvwKunden As MSComctlLib.ListView

Dieses wird im Ereignis Form_Load mit den benötigten Eigenschaften versehen (weitere Informationen hierzu in den Artikeln Das ListView-Steuerelement – Grundlagen und ListView-Steuerelement mit Daten füllen). Die Prozedur Form_Load legen Sie an, indem Sie die Formulareigenschaft Beim Laden auf [Ereignisprozedur] einstellen und dann auf die Schaltfläche mit den drei Punkten klicken. Füllen Sie die nun erscheinende Prozedur im VBA-Editor wie folgt auf, um die Basiseinstellungen und Spalteneigenschaften vorzunehmen:

Private Sub Form_Load()
     Set objLvwKunden = Me!lvwKunden.Object
     With objLvwKunden
         .View = lvwReport
         .Appearance = ccFlat
         .BorderStyle = ccNone
         .FlatScrollBar = False
         .GridLines = True
         .ColumnHeaders.Clear
         .ColumnHeaders.Add , , "Firma", 4500
         .ColumnHeaders.Add , , "Kundencode", 1500
         .ListItems.Clear
     End With
     ListViewFuellen objLvwKunden
End Sub

Das Füllen des ListView-Steuerelements mit den Daten übernimmt die folgende Prozedur. Diese wird von der Prozedur Form_Load aufgerufen und liest alle Datensätze der Tabelle tblKunden in das Listenfeld ein. Fügen Sie diese Prozedur ebenfalls in das Klassenmodul Form_frmListViewDatenAendern ein (siehe Listing 1).

Private Sub ListViewFuellen(objLvwKunden As ListView)
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     Dim objListitem As MSComctlLib.ListItem
     Set db = CurrentDb
     Set rst = db.OpenRecordset("SELECT KundeID, Firma, Kundencode FROM tblKunden", dbOpenDynaset)
     Do While Not rst.EOF
         Set objListitem = objLvwKunden.ListItems.Add(, "k" & rst!KundeID, rst!Firma)
         With objListitem
             .ListSubItems.Add , "p1" & rst!KundeID, rst!Kundencode
         End With
         rst.MoveNext
     Loop
     rst.Close
     Set rst = Nothing
     Set db = Nothing
End Sub

Listing 1: Füllen des ListView-Steuerelements mit den Daten der Tabelle tblKunden

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar