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

[0] Índice de Mensajes

Ir a la versión completa