Visual Basic / Listview-Steuerelement mit einer Sql-Abfrage füllen.

Eine sehr schöne Sub die ich immer wieder gern für meine Visual Basic -Programme benutze. Du musst nur eine Form in VB erstellen, ein Listview-Steuerelement malen und dem Steuerelement den Namen 'lvs' geben. Ach ja, das lvs muß auf 'report' stehen.

In der Form-Load rufst du dann die folgende Sub auf:

call LvsFüllen("Select * from Tabname",lvs)

Vorraussetzungen:
Visual Basic 6.0 .
Ado.
Eine Verbindung zur Datenbank besteht (conn)

Variablen:
SQL=Sql-Abfrage

lvs=Listview-Steuerelement

Public Sub LvsFüllen(ByVal Sql As String, ByRef lvs As Object)
On Error GoTo err
Dim rs As New ADODB.Recordset
Dim litem As ListItem
Dim strX As String
Dim longX As Long
Rem Maus erst mal auf Sanduhr
Screen.MousePointer = 11
rem Listview-Steuerlement erst mal löschen
lvs.ListItems.Clear
lvs.Refresh
Rem Datenbankverbindung einstellen
Set rs.ActiveConnection = conn
rs.CursorLocation = adUseClient
rs.CursorType = adOpenForwardOnly
rs.LockType = adLockReadOnly
Rem Abfrage öffnen
rs.Open Sql, conn, , , adCmdText
If lvs.ColumnHeaders.Count = 0 Then ' Wenn keine Überschriften vordefiniert sind,
   For i = 0 To rs.Fields.Count - 1
      lvs.ColumnHeaders.add , , rs.Fields(i).Name ' setze die Überschriften mit den Feldnamen der Abfrage
   Next i
End If

Rem Durch die Abfrage (Recordset) durchwühlen und in das Listview-Steuerelement eintragen
Do While rs.EOF = False
   For i = 0 To rs.Fields.Count - 1
      If i = 0 Then
         strX = "" & rs(0)' "" &  ist nötig, falls der Datensatz den Wert Null hat
         Set litem = lvs.ListItems.add(, , strX)
         Else
         litem.SubItems(i) = "" & rs(i)
      End If
   Next i
   rs.MoveNext
Loop

rs.Close
Screen.MousePointer = 0
Rem Fehlerbehandlung
Exit Sub
err:
If err.Number = 35600 Then
   Resume Next
End If
Screen.MousePointer = 0
MsgBox err.Description
Exit Sub
End Sub