Programación General > Visual Basic 6.0 e inferiores
Problema Al Recorrer Registros Muy Grandes
(1/1)
barri:
Hola peña. Necesito recorrer una tabla con 15000 registros aproximadamente. Para esto me creo un odbc (la tabla es de foxpro, dbf), hago un select con un command y lo abro en un recordset llamado reg_art_dat. El caso es que cuando abro el registro mediante el codigo
cmd.ActiveConnection = c200X
cmd.CommandText = "SELECT * from art_dat order by f_art_cod"
reg_art_dat.Open cmd
reg_art_dat.MoveFirst
y añado reg_art_dat a la inspeccion, las propiedades PageCount y RecordCount de dicho objeto adquieren el valor
"El proveedor de datos u otro servicio devolvió un estado E_FAIL."
y cuando recorro el registro secuencialmente mediante el codigo
Encontrado = 0
Do While Not reg_art_dat.EOF And Encontrado = 0 'Por cada articulo
codigo = Mid(reg_art_dat.Fields("f_art_cod"), 2, 6)
If reg_articulos_homologados.Fields("ReferenciaCatalogo") = codigo Then
Encontrado = 1
End If
reg_art_dat.MoveNext
Loop
en la posicion 1163 se detiene la ejecucion dando el error
"El proveedor de datos u otro servicio devolvió un estado E_FAIL."
que es el valor que adquirian las propiedades del objeto recordset.
Alguien que me pueda echar una mano por favor lo agradeceria mucho.
Saludos.
tiquinho:
Hola Barri
Esto es una idea sin probar, pero si sólo quieres ese registro (el que coincide Codigo = reg_articulos_homologados.Fields("ReferenciaCatalogo") ), prueba a incluir esa condición en la consulta. Algo así:
--- Código: Text --- Codigo = reg_articulos_homologados.Fields("ReferenciaCatalogo")cmd.CommandText = "SELECT * FROM art_dat WHERE f_art_cod LIKE '%" & Codigo & "%' ORDER BY f_art_cod"'Comprueba los caracteres %, que nunca me acuerdo si son esos
Te devolverá sólo el registro que quieres. Pero tiene pinta de ser por la configuración del proveedor, así que a lo mejor también te falla esto.
Y si también te fall, prueba con otro proveedor (Yo he utilizado con éxito el Microsoft Jet 4.0 para recoger datos de una BD de archivos DBF, y 17000 registros sin problema)
Un saludo :hola: y suerte!
masticor:
--- Código: Text --- Dim CONECCION As New ADODB.ConnectionDim mireccordeset As New RecordsetDim cuenta As Double Set CONECCION = New Connectionconec.Open "CADENA DE CONECCION" Set mireccordeset = New RecordsetCONECCION.CursorLocation = adUseClientmireccordeset.Open "Nombre De La Tabla", CONECCION, adOpenForwardOnly, adLockReadOnly, adCmdTable
Con eso leo 2 millones de registros (Esto lo usa con sql server pero si cambial la linea de coneecion te sirve para cualquiera)
es pero que te sirva
Navegación
Ir a la versión completa