Mit Hilfe des ListView-Controls und nachfolgendem Code lässt sich schnell und einfach ein kleiner Datenbank-Viewer realisieren. Zunächst wird ein Recordset über alle Datenbankfelder einer bestimmten Tabelle erzeugt. Die Feldnamen der Tabelle dienen dann gleichzeitig als Spalten-Überschriften im ListView-Control. Dann wird das Recordset vollständig durchlaufen, und alle Datensätze zeilenweise in das ListView übertragen. Nachteil des ListView-Controls ist allerdings, dass sich einzelne Datensätze bzw. Datenfelder nicht so leicht ändern lassen, und sollte demnach auch vorrangig nur als Viewer (Betrachter) eingesetzt werden. Im folgenden stellen wir Ihnen zwei Lösungen vor: Beispiel für die Verwendung unter DAO Private Sub rsView_DAO(ByVal dbFilename As String, _ ByVal dbTable As String) Dim Db As DAO.Database Dim oRecordset As DAO.Recordset Dim oField As DAO.Field Dim oItem As ListItem ' Datenbank öffnen Set Db = Workspaces(0).OpenDatabase(dbFilename, _ False, False) ' Ersteinmal brauche wir ein Recordset Set oRecordset = Db.OpenRecordset _ ("SELECT * FROM " & dbTable, dbOpenSnapshot, _ dbOpenForwardOnly) ' Sicherstellen, dass das ListView leer ist With ListView1 .ColumnHeaders.Clear .ListItems.Clear ' Report-Ansicht (Detail-Ansicht) .View = lvwReport ' Hier richten wir das ListView ein For Each oField In oRecordset.Fields ' jedes Feld aus dem Recordset als Überschrift ' in das ListView .ColumnHeaders.Add , oField.Name, oField.Name Next ' Sind überhaupt Datensätze vorhanden? If oRecordset.RecordCount > 0 Then ' Nun das Recordset durchlaufen und alle Daten in ' das ListView einfügen oRecordset.MoveFirst Do ' ein ListItem mit dem ersten Feld des aktuellen ' Recordset-Eintrags erzeugen For Each oField In oRecordset.Fields If oItem Is Nothing Then ' ein neues ListItem erzeugen Set oItem = .ListItems.Add(, , oField.Value) Else oItem.SubItems _ (.ColumnHeaders.Item(oField.Name).Index - 1) _ = IIf(Not IsNull(oField.Value), oField.Value, "") End If Next ' Unser ListItem wieder auf Nothing setzten Set oItem = Nothing ' nächsten Datensatz aus dem Recordset oRecordset.MoveNext Loop Until oRecordset.EOF End If End With oRecordset.Close Db.Close Set oField = Nothing Set oRecordset = Nothing Set Db = Nothing End Sub Beispiel für die Verwendung unter ADO Private Sub rsView_ADO(ByVal dbFilename As String, _ ByVal dbTable As String) Dim oCon As New ADODB.Connection Dim oRecordset As ADODB.Recordset Dim oField As ADODB.Field Dim oItem As ListItem With oCon ' Die Connection zur Datenbank .Provider = "Microsoft.Jet.OLEDB.3.51" ' Pfad & Name der Datenbank .Open dbFilename .CursorLocation = adUseClient End With ' Ersteinmal brauche wir ein Recordset Set oRecordset = New ADODB.Recordset oRecordset.Open "SELECT * FROM " & dbTable, _ oCon, adOpenForwardOnly, adLockReadOnly, 0 ' Sicherstellen, dass das ListView leer ist With ListView1 .ColumnHeaders.Clear .ListItems.Clear ' Report-Ansicht (Detail-Ansicht) .View = lvwReport ' Hier richten wir das ListView ein For Each oField In oRecordset.Fields ' jedes Feld aus dem Recordset als Überschrift ' in das ListView .ColumnHeaders.Add , oField.Name, oField.Name Next ' Sind überhaupt Datensätze vorhanden? If oRecordset.RecordCount > 0 Then ' Nun das Recordset durchlaufen und alle Daten in ' das ListView einfügen oRecordset.MoveFirst Do ' ein ListItem mit dem ersten Feld des aktuellen ' Recordset-Eintrags erzeugen For Each oField In oRecordset.Fields If oItem Is Nothing Then ' ein neues ListItem erzeugen Set oItem = .ListItems.Add(, , oField.Value) Else oItem.SubItems _ (.ColumnHeaders.Item(oField.Name).Index - 1) _ = IIf(Not IsNull(oField.Value), oField.Value, "") End If Next ' Unser ListItem wieder auf Nothing setzten Set oItem = Nothing ' nächsten Datensatz aus dem Recordset oRecordset.MoveNext Loop Until oRecordset.EOF End If End With Set oField = Nothing Set oCon = Nothing Set oRecordset = Nothing End Sub Um nun das ListView-Control mit allen relevanten Daten zu füllen, rufen Sie einfach die entsprechende Prozedur auf: rsView_DAO oder rsView_ADO. Als Parameter wird der vollständige Pfad zu einer Access-Datenbank erwartet, sowie der Name der Tabelle, deren Struktur und Inhalt angezeigt werden soll. Dieser Tipp wurde bereits 50.141 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |