Visual Basic - SOS: Recorrido de registros anidado

Life is soft - evento anual de software empresarial
 
Vista:

SOS: Recorrido de registros anidado

Publicado por barri (13 intervenciones) el 10/11/2005 12:47:40
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.

He hecho que en cada pasada sume el conteo en un archivo de la siguiente forma:

j = 0
Do While Not reg_art_dat.EOF

Do While Not reg_catalogo.EOF

j = j + 1
Set conteo = fso.createtextfile(App.Path & "\conteo.txt", True)
conteo.writeline (j)
conteo.Close

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

y despues de cerrarlo porque se ha quedado colgado en el archivo conteo.txt tengo unas veces 5120, otras 1024 o 414. Esas son las veces que cada vez ha podido entrar en el bucle interior antes de quedarse colgado.

¿Como puedo resolver este problema? por favor me urge mucho.

Muchas gracias!!!

saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SOS: Recorrido de registros anidado

Publicado por ivan (463 intervenciones) el 10/11/2005 16:40:49
Averigua ejecutando el programa paso a paso (con el F8), pon una condición para que pare cuando esté en el 5120, 1024 o 414 para que veas exactamente qué pasa después de llegar al número donde sospeches se cuelga.

Yo creo que el error puede estar en la variable J, que incrementas cada vez que se lea un registro, si tienes que hacer 81 millones de comparaciones, entonces la variable J debe tener capacidad para almacenar un número tan grande, de momento no recuerdo los límites de cada variable, lo que si te puedo asegurar que si J es INTEGER seguro no te va a alcanzar.

Espero esto te sirva de algo, Suerte...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SOS: Recorrido de registros anidado

Publicado por barri (13 intervenciones) el 10/11/2005 17:40:51
Bueno, la variable j la pongo unicamente para comprobar por que pasada se queda, no la uso realmente y puede que si es lo que dices sea precisamente lo que da fallo. Lo que tengo que hacer es comparar un campo de cada registro de reg_art_dat con otro campo de cada registro de reg_catalogo. Muchas gracias. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar