• Domingo 22 de Diciembre de 2024, 13:11

Autor Tema:  Problema Al Recorrer Registros Muy Grandes  (Leído 3745 veces)

barri

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Problema Al Recorrer Registros Muy Grandes
« en: Viernes 13 de Enero de 2006, 13:19 »
0
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

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re: Problema Al Recorrer Registros Muy Grandes
« Respuesta #1 en: Miércoles 18 de Enero de 2006, 17:21 »
0
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
  1.  
  2. Codigo = reg_articulos_homologados.Fields("ReferenciaCatalogo")
  3. cmd.CommandText =  "SELECT * FROM art_dat WHERE f_art_cod LIKE '%" & Codigo & "%' ORDER BY f_art_cod"
  4. 'Comprueba los caracteres %, que nunca me acuerdo si son esos
  5.  
  6.  

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

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Problema Al Recorrer Registros Muy Grandes
« Respuesta #2 en: Miércoles 25 de Enero de 2006, 15:41 »
0
Código: Text
  1.  
  2. Dim CONECCION As New ADODB.Connection
  3. Dim mireccordeset As New Recordset
  4. Dim cuenta As Double
  5.  
  6. Set CONECCION = New Connection
  7. conec.Open "CADENA DE CONECCION"
  8.  
  9. Set mireccordeset = New Recordset
  10. CONECCION.CursorLocation = adUseClient
  11. mireccordeset.Open "Nombre De La Tabla", CONECCION, adOpenForwardOnly, adLockReadOnly, adCmdTable
  12.  

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