Comprobaciones con muuuuchos registros

barri
11 de Noviembre del 2005
Wenaaaaaasss

tengo dos recordsets, uno para cada ODBC. Con cada uno hago una consulta select sql para objener los registros de las bases de datos correspondientes.

El caso es que tengo que comparar todos los elementos de uno con todos los elementos de otro y pasa que uno tiene 18000 registros y el otro 4500 (mas o menos) con lo que tiene que hacer 81 millones!!!! de comprobaciones y claro, el programa se queda colgado y no responde, hay que finalizar aplicacion.

Lo he hecho de la siguiente forma:


Do While Not reg_art_dat.EOF

Do While Not reg_catalogo.EOF

If reg_art_dat.fields("f_art_cod") = reg_catalogo.fields("REF") Then
escribir = 1
End If

reg_catalogo.MoveNext

Loop

reg_art_dat.MoveNext
Loop

Al poco de ejecutar el programa se queda como que no responde pero he pensado que tiene que tardar bastante.

Mi pregunta es ¿puede quedarse el visual basic 6.0 colgado al tener que manejar tanta informacion (81 millones de comprobaciones, 18000 registros de un lado con 4500 registros de otro) o esta preparado para soportarlo?

Muchas gracias!!!

saludos.

mvallejos
11 de Noviembre del 2005
Ya te he contestado esto en algún Post anterior.
Todo lo que debes hacer, es un solo recordset que te recupere todos los datos de una tabla que tengan coincidencias en la otra. Para el ejemplo, voy a llamar a las tablas, Tabla1 y Tabla2, ya que no nos dices el nombre de las mismas.

Dim Sql As String
Dim R as new ADODB.Recordset

Sql = "Select * From Tabla1 Where f_art_cod In (Select Disctinct REF From Tabla2)"
R.CursorLocation = AdUseClient
R.Open Sql, Conexion, AdOpenStatic
Do While Not R.EOF
< lo que tengas que hacer>
R.MoveNext
Loop

Dada la cantidad de registros de tus tablas, asegúrate de que las mismas tengan los indices adecuados, de todos modos, vas a tener una pequeña demora, pero nada que ver con que el programa te quede colgado.

Saludos