Cruce de bases de datos

Tengo que cruzar dos bases de datos con un campo en común para marcar los datos repetidos entre si. ¿Cómo lo hago?.

1 respuesta

Respuesta
1
Intenta:
Close databases all
Use tabla2 in 0
INDEX ON Tel1 TO Temp
Use tabla1 in 0
SELECT TABLA1
GO TOP
DO WHILE !EOF()
SELECT TABLA2
SEEK TABLA1.Tel1
IF !EOF()
REPLACE REPETIDO WITH '*'
ENDIF
SELECT TABLA1
SKIP
Enddo
Hola,
está ordenado solo por el campo Tel1.
El tema es que cada vez que pasa a un nuevo registro me aparece el mensaje preguntándome si quiero sobreescribir el índice dado que el mismo ya existe.
Si no es mucho pedir, no me podes dar los comandos completos incluyendo los indices en la secuencia que me enviaste. Habitualmente programo en Clipper pero como una de las bases contiene dos millones y medio de datos se hace muy lento este proceso y por desgracia no programo en isual FoxPro, aunque si conozco los comandos de manejo de bases de datos.
Gracias por tu ayuda, sos muy amable.
Excelente ...
Muchas Gracias por tu ayuda ...
Suponiendo que las tablas sean TABLA1 y TABLA2, ambas indexadas por el campo común (CLAVE):
SELECT TABLA1
SCAN ALL
SELECT TABLA2
SEEK TABLA1.CLAVE
IF !EOF()
** Acciones en caso de que el registro se encuentre repetido
ENDIF
SELECT TABLA1
Endscan
Bueno, eso digo yo...
El campo común se llama TEL1 y tengo que marcar el campo REPETIDO con un asterisco para indicar cual se duplicó.
Ok.
SELECT TABLA1
SCAN ALL
SELECT TABLA2
SEEK TABLA1.Tel1
IF !EOF()
REPPLACE REPETIDO WITH '*'
ENDIF
SELECT TABLA1
Endscan
¿Este método resulta rápido?.
Porque necesito marcar los repetidos de la tabla1 en la tabla2, es decir tomar el primer registro de la tabla1 y buscarlos en toda la tabla2, si lo encuentra lo marca, sino pasar al siguiente registro buscarlo y así sucesivamente.
¿El índice me conviene hacerlo antes de seleccionar las tablas?
Muchas gracias
El índice es antes de seleccionar las tablas (si no lo haces, el comando SEEK no funciona).
Es un método bastante rápido, y hace exactamente lo que estás queriendo (tomar el primer registro de la tabla1 y buscarlos en toda la tabla2, si lo encuentra lo marca, sino pasar al siguiente registro buscarlo y así sucesivamente)
Funciona. Pero cada vez que utiliza un nuevo registro me indexa nuevamente las bases ... como evito esto.
Disculpá las molestias, gracias.
¿Cómo sabes que te indexa nuevamente las bases? ¿No están indexadas por el campo "Tel1"? ¿También están indexadas por el campo "REPETIDO"?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas