Si no hay solucion, por favor algo

24/02/2005 - 22:18 por Alexander Gomez | Informe spam
hola a todos, estoy trabajando con ADO para traer datos a excel, como lo que
pongo abajo de la pregunta, eso me funciona bien, y me trae los datos muy
bien y todo, pero resulta que hice lo mismo con MicrosoftQuery y ES MAS
RAPIDO!!!, yo pensé que iba a ser mucho mas rapido con ADO, pero no.
Esto haciendo algo mal en mi procedimiento?, hay otra forma de hacerlo con
ADO (mas rapida)? o definitivamente es mas rapido MicrosoftQuery?

Mil gracias desde ya, aca esta el código

Dim Con1 As ADODB.Connection
Dim Rst1 As ADODB.Recordset
Dim Sql As String
CreaConexiones
Sql = "SELECT * FROM InfVentas_Final"
'setea y abre conexión
Set Con1 = New ADODB.Connection
Con1.ConnectionString = CadenaConexion(6)
Con1.Open
'Ejecuta el comando sql
Set Rst1 = New ADODB.Recordset
Rst1.CursorType = adOpenKeyset
Rst1.LockType = adLockOptimistic
Rst1.Open Sql, Con1
If Rst1.EOF Then
MsgBox "NO HAY REGISTROS"
Else
Sheets("Ventas 2004").Select
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.ClearContents
Range("A2").Select
Do While Not Rst1.EOF
ActiveCell.Offset(0, 0) = Rst1!NumOrd
ActiveCell.Offset(0, 1) = Rst1!FecOrd
ActiveCell.Offset(0, 2) = Rst1!Titulo
ActiveCell.Offset(1, 0).Select
Rst1.MoveNext
Loop
End If
Range("A2").Select
'Cierra variable
Set Cmd1 = Nothing
Con1.Close
Set Con1 = Nothing

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/02/2005 - 00:22 | Informe spam
hola, Alexander !

... trabajando con ADO para traer datos a excel... funciona... trae los datos muy bien y todo
... pero resulta que hice lo mismo con MicrosoftQuery y ES MAS RAPIDO!!!,
... pense que iba a ser mucho mas rapido con ADO, pero no.
... algo mal en mi procedimiento?... forma de hacerlo con ADO (mas rapida)? [...]



[segun yo] la parte del codigo donde 'se pierde tiempo' es en la forma de 'seleccionar la siguiente fila'
prueba agregando una variable [solo por 'sana costumbre'] que se llame -p.e.- 'Fila' de tipo Long
-> Dim Fila As Long
y... cambia el bucle 'Do...Loop' de como lo tienes:
___
Do While Not Rst1.EOF
ActiveCell.Offset(0, 0) = Rst1!NumOrd
ActiveCell.Offset(0, 1) = Rst1!FecOrd
ActiveCell.Offset(0, 2) = Rst1!Titulo
ActiveCell.Offset(1, 0).Select ' <= esta ES una seleccion 'fisica' de cada fila siguiente
Rst1.MoveNext
Loop



modificandolo a lo siguiente:
___
Do While Not Rst1.EOF
ActiveCell.Offset(Fila, 0) = Rst1!NumOrd
ActiveCell.Offset(Fila, 1) = Rst1!FecOrd
ActiveCell.Offset(Fila, 2) = Rst1!Titulo
Fila = Fila + 1
Rst1.MoveNext
Loop

¿comentas?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida