Yo con este método abro como 1000 Registros ni 1 segundo le lleva.
En un modulo.
Public cnADO As ADODB.Connection
Public rsADO As ADODB.Recordset
Public StrSQL As String
Public ComandoSQL As String
Public Sub ConectarADO()
Set cnADO = New ADODB.Connection
Set rsADO = New ADODB.Recordset
rsADO.CursorLocation = adUseClient
cnADO.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=control_hotel; User=root;Password=root;Option=3;"
cnADO.Open
End Sub
En un Form
Private Sub cmdConsultar_Click()
'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
'// Conectar la Base Datos con ADO
Call ConectarADO
'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
ListView1.ListItems.Clear
StrSQL = "SELECT * FROM piezas WHERE estado='LIBRE' and reserva='NO' ORDER BY numero"
rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
Do Until rsADO.EOF
Set Lv = ListView1.ListItems.Add()
With rsADO
Lv.Text = .Fields("numero")
Lv.SubItems(1) = strReplaceVer(.Fields("nombre") & "")
Lv.SubItems(2) = Format(.Fields("precio"), "##,###0") & ""
Lv.SubItems(3) = .Fields("estado")
Lv.SubItems(4) = .Fields("reserva") & ""
Lv.SubItems(5) = .Fields("cedula") & ""
rsADO.MoveNext
End With
Loop
'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
'// Cerrar la base de datos y liberar la memoria
Call CerrarADO
'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
End Sub