Código:
Sub Cargar_ListView(ListView As ListView, sql As String, PathBd As String) Dim Campo As Integer On Error GoTo ErrSub 'Variable para los SubItem del LV Dim Item As ListItem Dim i As Long 'Nuevo objeto Connection y objeto Recordset Set cnn = New Connection Set Rst = New Recordset 'Abre la base de datos cnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathBd) 'Llena el Recordset Rst.Open sql, cnn, adOpenDynamic, adLockOptimistic With ListView 'Vista de reporte .View = lvwReport ' Elimina los item y los encabezado de columna .ListItems.Clear .ColumnHeaders.Clear End With Me.MousePointer = vbHourglass 'Agrega los nombres campo junto con los encabezados de columna para el ListView 'For Campo = 0 To Rst.Fields.Count - 1 'ListView.ColumnHeaders.Add , , Rst.Fields(Campo).Name 'Next ListView.ColumnHeaders.Add , , "codigo", 1000 ListView.ColumnHeaders.Add , , "nombre", 4000 ListView.ColumnHeaders.Add , , "precio", 1000, lvwColumnRight ListView.ColumnHeaders.Add , , "precio2", 1000, lvwColumnRight ' Recorre todos los registros del Recordset While Not Rst.EOF 'Agrega el Item Set Item = ListView.ListItems.Add(, , Rst.Fields(0), , 1) i = 1 'Agrega los SubItem al ListView mediante la variable ITEM For Campo = 1 To Rst.Fields.Count - 1 'si el dato no es de tipo Null lo agrega If Not IsNull(Rst.Fields(Campo)) Then Item.SubItems(i) = Rst.Fields(Campo) End If i = i + 1 Next 'Siguiente registro Rst.MoveNext Wend Me.MousePointer = vbDefault Exit Sub 'Error ErrSub: MsgBox Err.Description, vbCritical, "Error" Me.MousePointer = vbDefault End Sub