Llenar una grilla

' Contenido del formulario:
'
' - 1 ComboBox
' - 1 MsFlexGrid
' - 1 commandButton
' - En caso de error agregar el componente adodc.

Option Explicit

Private cnn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub Command1_Click()
Dim tField As ADODB.Field
'
' Por si ya estaba abierta...
Set cnn = Nothing
Set rst = Nothing
'
' Crear los objetos
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
' abrir la base usando las credenciales de Windows

cnn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=pubs"
'
' abrir el recordset indicando la tabla a la que queremos acceder
rst.Open "SELECT * FROM authors", cnn, adOpenDynamic, adLockOptimistic
'
' Asignar los nombres de los campos al combo
Dim i, j, ii
i = 1
Combo1.Clear
MSFlexGrid1.Row = 0
'
' obtener los campos de la consulta
For Each tField In rst.Fields
Combo1.AddItem tField.Name
MSFlexGrid1.Cols = MSFlexGrid1.Cols + 1
MSFlexGrid1.Col = i
MSFlexGrid1.Text = tField.Name
i = i + 1

Next
'
' llenar la grilla
rst.MoveFirst
While Not rst.EOF
j = j + 1
MSFlexGrid1.Rows = j + 1
MSFlexGrid1.Col = 0
MSFlexGrid1.Row = j
MSFlexGrid1.Text = j
For ii = 1 To i - 1
MSFlexGrid1.Col = ii
MSFlexGrid1.Row = j
MSFlexGrid1.Text = rst(ii - 1)
Next ii
rst.MoveNext
Wend
MSFlexGrid1.Cols = 10
Combo1.ListIndex = 0

'
' Cerrar el recordset y la conexión
rst.Close
cnn.Close

End Sub