Comprobaciones con muuuuchos registros
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.
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.
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
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
