Filtrar registros repetidos en varios campos

1,441 views
Skip to first unread message

pepemil

unread,
Apr 6, 2012, 10:56:11 AM4/6/12
to Comunidad de Visual Foxpro en Español
Hola

bien ahora mi problema es que quiero en una tabla filtrar los
repetidos , la tabla es de 6 campos numericos y necesito que no
repita datos en ningún campo entre si.


ejemplo

campo 1-------------->23 <--------repitido
campo 2--------------23
campo 3--------------23

que me deje solo un 23 en uno de los campos y que los elimine en los
otros campos pero sin eliminar el registro completo

he tratado con esto pero no es lo que busco

SELECT distinct tabla.n1, tabla.n2 FROM Tabla INTO TABLE
unicos.dbf


saludos
pepemil

Fox Learner

unread,
Apr 6, 2012, 3:10:38 PM4/6/12
to Comunidad de Visual Foxpro en Español
La solución sería generar valores únicos para cada campo.

Si trabaja en lograr esa rutina que genere números únicos para cada
campo, ya no tendrá que preocuparse por hacer la validación.

Si aun así tiene que hacer la validación se me ocurre esto:

Tienes 6 campos(columnas) numericos.

Deseas que no se repita ningun dato en ninguna otra columna ni en la
misma sino que sea un dato único en la columna y las otras 5.

Genera un ciclo que tome el primer dato y lo busque en el resto de la
propia columna.

puedes poner una variable privada Datoabuscar.

Use tutabla IN 0
Sele tutabla

ve al inicio de tu tabla con GO TOP

Puedes usar SCAN.. ENDSCAN

Dentro del Scan

Datoabuscar=campo de tu base

Tu condicion de busqueda (como si el registro anterior es igual al
nuevo, eliminar nuevo).

Una vez que recorra el primer scan para la primer columna, Asigna al
segunda columna, y luego las demas una por una.

Saludos!

Fox Learner

unread,
Apr 6, 2012, 3:14:10 PM4/6/12
to Comunidad de Visual Foxpro en Español
Ah.. para eliminar el dato de un campo sin eliminar el registro, no
sería con DELETE sino solo con esto:

REPLACE Campodemitabla WITH ""

Saludos!

Walter R. Ojeda Valiente

unread,
Apr 6, 2012, 4:50:13 PM4/6/12
to publice...@googlegroups.com
¿Éste está esperando que se le hagan todas las tareas?

En fin ...

Saludo.

Walter.




> Date: Fri, 6 Apr 2012 07:56:11 -0700
> Subject: [vfp] Filtrar registros repetidos en varios campos
> From: sistemas...@yahoo.com
> To: publice...@googlegroups.com

Carlos Miguel FARIAS

unread,
Apr 6, 2012, 8:06:13 PM4/6/12
to publice...@googlegroups.com
Yo estoy en pedo o esto ya se resolvio antes?
Si no fue la semana pasada, fue la anterior.
Saludos: Miguel, La Pampa (RA)

pepemil

unread,
Apr 7, 2012, 1:42:39 AM4/7/12
to Comunidad de Visual Foxpro en Español
Si carlos se hizo esta rutina que no funciono solo la combinatoria fue
la funciono y para walter no espero que me hagas la tarea :) estas
rutinas no las consigo para nada en ningun lado y estoy seguro que
tambien le serviran a otros,no soy programador profesional solo
aficionado y me gusta saber como funcionan las cosas y haci aprendemos
entre todos.cada dia mas cosas.

esta es la rutina a la que mencionas Carlos recuerda que la dejamos
por que funciono la otra rutina a la final, y si te fijas en la
condicional de esta no es lo que se busca en esta otra rutina que
planteo

saludos
pepemil

SCATTER to la
SCAN
   = ASORT( la ) && los clasifico
   FOR ln = 1 TO ALEN( la )-1 && reviso el array ordenado
      IF ( la[ln]==la[ln+1] )  && si dos elementos consecutivos son
*iguales...
         DELETE  && borro el registro
         EXIT  && me salgo del for
      ENDIF
   ENDFOR
   IF !DELETED() && Si registro no borrado...
      GATHER FROM la && ...actualizo la tabla
   ENDIF
ENDSCAN
PACK && limpieza fisica
*SELECT DISTINCT * FROM bonos INTO unicos && segunda

On 7 abr, 02:06, Carlos Miguel FARIAS <carlosmiguelfar...@gmail.com>
wrote:
> Yo estoy en pedo o esto ya se resolvio antes?
> Si no fue la semana pasada, fue la anterior.
> Saludos: Miguel, La Pampa (RA)
>
> El 6 de abril de 2012 17:50, Walter R. Ojeda Valiente
> <w...@hotmail.com>escribió:
>
>
>
>
>
>
>
> >  ¿Éste está esperando que se le hagan todas las tareas?
>
> > En fin ...
>
> > Saludo.
>
> > Walter.
>
> > > Date: Fri, 6 Apr 2012 07:56:11 -0700
> > > Subject: [vfp] Filtrar registros repetidos en varios campos
> > > From: sistemasestef...@yahoo.com

Carlos Miguel FARIAS

unread,
Apr 7, 2012, 8:58:54 AM4/7/12
to publice...@googlegroups.com
Si esa es la que mande yo, pero me parece que el scatter tiene que estar dentro del scan, proba si anda asi, a sido un neurotinazo mio.

Saludos: Miguel, La Pampa (RA)

pepemil

unread,
Apr 7, 2012, 11:36:16 AM4/7/12
to Comunidad de Visual Foxpro en Español
Hola Carlos
ya meti el "SCATTER to la " dentro de scan y funciona pero campo por
campo no reviza o compara campos entre campos que es lo que busco para
eliminar los que se repitan en los seis campos. si un registro esta en
campo n1 igual en campo n5 que lo borre

saludo
pepemil

On 7 abr, 14:58, Carlos Miguel FARIAS <carlosmiguelfar...@gmail.com>
wrote:
> Si esa es la que mande yo, pero me parece que el scatter tiene que estar
> dentro del scan, proba si anda asi, a sido un neurotinazo mio.
> Saludos: Miguel, La Pampa (RA)
>

pepemil

unread,
Apr 7, 2012, 11:42:23 AM4/7/12
to Comunidad de Visual Foxpro en Español
OO se me olvido tambien me sirve hacer un inser a otra tabla de todos
los registros de los 6 campos ya que con set unique puedo hacer que no
se repitan los registros,pero me cuesta hacer la orden y no doy con la
sintaxis ya estoy quemado :)

pepemil

Marlon Salomon Cabrera Roque

unread,
Apr 7, 2012, 4:05:39 PM4/7/12
to publice...@googlegroups.com

Otra forma

 

Select llave1, count(*)  as total from mitabla group by llave1,llave2, having count(*) > 1   into cursor repetidos

 

Select repetidos

Go top

Scan

       For I = 1 to repetidos.total - 1

        If indexseek(repetidos.llave1,”mitabla”,”indice”)

                 Delete in mitabla

                     Endif

       endfor

endscan


Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 2012.0.1913 / Base de datos de virus: 2409/4920 - Fecha de la versión: 07/04/2012


Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 2012.0.1913 / Base de datos de virus: 2409/4920 - Fecha de la versión: 07/04/2012

Carlos Miguel FARIAS

unread,
Apr 7, 2012, 7:04:45 PM4/7/12
to publice...@googlegroups.com
Si me mandas la tabla a verificar, lo pruebo, asi sobre el correo, no puedo hacer el debug.

Saludos: Miguel, La Pampa (RA)

Reply all
Reply to author
Forward
0 new messages