FoxPro/Visual FoxPro - PROBLEMAS EN BUSQUEDA

   
Vista:

PROBLEMAS EN BUSQUEDA

Publicado por rafa (21 intervenciones) el 04/03/2010 19:53:30
Hola que tal, entro a este foro para ver si no me pueden ayudar, miren que tengo un conflicto jejeje, el problema es el siguiente, tengo dos tablas....DISTRI....y DISENTRE...cada tabla tiene diferentes CAMPOS, pero hay uno que se repite para ambos y es uno que se llama IRD.

La tabla DISTRI cuanta con un campo de tipo logico que se llama ACTIVO, lo que quiero hacer es que en un ESCAN me compare los registros, si un resitro de la tabla DISTRI se encuentra repetido en la tabla DISENTRE , este caso el campo IRD, que en DISTRI me ponga el valor .F. en el campo logico. No se si me entiendan, asi manejo el codigo.

SELE DISENTRE
SCAN
SELE DISTRI
SCAN
IF DISTRI.IRD = DISENTRE.IRD
REPL ACTIVO WITH .F.
ELSE
REPL ACTIVO WITH .T.
ENDIF
ENDS
ENDS

Entonces si el registro del DISENTRE es igual al registro de DISTRI quiero que me escriba .F. en el campo logico.

Pero con este codigo, me pone todos en .T. jajaja, mm medio raro, segun yo el scan primero revisa el primer campo de DISENTRE, luego se va a escanear la siguiente tabla DISTRI luego compara, si lo encuentra, lo pone en .F. y si no poes lo pondria en .T. pero me pone todos en .T. :S k puedo hacer ?? una mejor manera de hacer la comparacion ??
Gracias.
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:PROBLEMAS EN BUSQUEDA

Publicado por kong (681 intervenciones) el 04/03/2010 20:29:26
SELE DISENTRE
SCAN
XXX=DISENTRE.IRD
REPLACE ACTIVO WITH .F. FOR DISTRI.IRD =XXX IN "DISTRI" ALL

ENDSCAN
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:PROBLEMAS EN BUSQUEDA

Publicado por rafa (21 intervenciones) el 04/03/2010 21:18:47
Nop no da, me pone todos en .F., otra opcion :(
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:PROBLEMAS EN BUSQUEDA

Publicado por es_binario (757 intervenciones) el 04/03/2010 23:10:58
Nunca he usado las funciones scan replace, pero esto debe funcionar

*// esto pone en true las que existan
update DISTRI set DISTRI.ACTIVO = .T.;
where ISTRI.IRD in (select IRD from DISENTRE)

*// esto pone en falso las que no esten
update DISTRI set DISTRI.ACTIVO = .F.;
where ISTRI.IRD not in (select IRD from DISENTRE)

prueba el poder de sql, 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

RE:PROBLEMAS EN BUSQUEDA

Publicado por rafa (21 intervenciones) el 04/03/2010 23:40:25
a po si jajaj muchas gracias tio :P salio bien jeje hasta luego
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