Page 1 of 1

Ver Repeticiones

Posted: Thu Aug 18, 2016 7:00 pm
by LOUIS
Hola Amigos.

Aquí con una duda que no sé cómo resolver, esperando como siempre vuestra amabilidad, resulta que tengo una dbf donde un campo se llama DOCUMENTO y el otro REFERENCIA, ambos son char y tienen 6 de longitud ... en el campo Documento va un número que a veces se repite en el campo Referencia, pero no son iguales en la misma linea, el numero de Documento está en el Registro 124 y el mismo numero está en Referencia pero en el Registro 16 (ver imagen).

Que condición o sentencia debo escribir para que me muestre todos los pares que existan en la dbf ?
Documento == Referencia (no sirve)

De antemano, muchas gracias.

Louis

Re: Ver Repeticiones

Posted: Thu Aug 18, 2016 7:31 pm
by ASESORMIX
LIST FOR DOCUMENTO=X.OR.REFERENCIA=X

Re: Ver Repeticiones

Posted: Fri Aug 19, 2016 4:44 pm
by LOUIS
Estimado:

Le agradezco por su respuesta a mi inquietud, pero la solución que Ud. me da, es cuando Yo conozco el número que busco, entonces ahí sí funciona ...

En el caso que expongo, yo no sé cuáles son los números que hay o puedan existir en la tabla dbf, con idéntico número en Documento y Referencia, pero en distintas lineas de grabación, por eso en el gráfico señalo con la flecha el número 300200, pero Yo no conozco este número, lo puse como ejemplo nada más.

Ojalá alguien tenga otra idea :roll: ... Gracias nuevamente.

Re: Ver Repeticiones

Posted: Fri Aug 19, 2016 5:30 pm
by andyglezl
Hola Louis

Para eso, (así de primera intención) tendrías que leer varias veces la DB.

1.- Leer el primer registro y tomar el valor del campo DOCUMENTO
2.- recorrer toda la DB comparando el valor que guardaste contra el campo REFERENCIA
3.- guardar el (los) registros que cumplan la condicion.

1.- Leer el segundo registro y tomar el valor del campo DOCUMENTO
2.- ......
3.- ......

Re: Ver Repeticiones

Posted: Sun Aug 21, 2016 12:40 am
by ASESORMIX
Creo que la solucion es mas o menos asi:

Code: Select all


IDOC:="IDOC.NTX"
IREF:="IREF.NTX"
USE TABLA.DBF ALIAS T1
INDEX ON DOCUMENTO TO (IDOC)
INDEX ON REFERENCIA TO (IREF)
SET INDEX TO (IDOC),(IREF)
T1->(DBGOTOP())
DO WHILE !T1->(EOF())
  XDOC:=T1->DOCUMENTO
  DO WHILE T1->DOCUMENTO=XDOC.AND.!T1->(EOF())
   T1->(DBSKIP())
  ENDDO
  POSREG:=T1->(RECNO())
  SET ORDER TO 2            //t1->(indexord(2))
  IF T1->(DBSEEK(  XDOC ))
   MSGINFO("El Documento "+xdoc+"está en Referencia")  
  ENDIF
  SET ORDER TO 1        //t1->(indexord(1))
  T1->(DBGOTO( POSREG ))
ENDDO
USE
***
Espero te ayude...

Re: Ver Repeticiones

Posted: Tue Aug 23, 2016 2:36 pm
by LOUIS
Excelente solución ASESORMIX
Muchas Gracias :)