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.149 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. |
sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! 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 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |