eliminar registros dublicados en dbf

427 views
Skip to first unread message

Juan Gonzalez

unread,
Jan 16, 2024, 1:31:57 PM1/16/24
to Comunidad de Visual Foxpro en Español
buenas tardes disculpe la molestia, soy nuevo en vfp y  ando viendo como eliminar registros dublicados de una tabla...  ya he visto varios foros y no encuentro algun ejemplo  si alguien me podria ayudar

Hector Kuhn

unread,
Jan 16, 2024, 1:48:54 PM1/16/24
to publice...@googlegroups.com
para consultar

select * FROM subsocio
WHERE ID NOT IN (SELECT MAX(ID) FROM subsocio GROUP BY numero,subnumero,nrodoc) order by numero,subnumero,id


ID es un identificador unico para cada registro



para borrar 

delete FROM subsocio
WHERE ID NOT IN (SELECT MAX(ID) FROM subsocio GROUP BY numero,subnumero,nrodoc) order by numero,subnumero,id


El mar, 16 ene 2024 a las 15:32, Juan Gonzalez (<anoni...@gmail.com>) escribió:
buenas tardes disculpe la molestia, soy nuevo en vfp y  ando viendo como eliminar registros dublicados de una tabla...  ya he visto varios foros y no encuentro algun ejemplo  si alguien me podria ayudar

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/a0e50f8e-8e3c-4157-837f-673758f3a919n%40googlegroups.com.

Cristian Novoa

unread,
Jan 16, 2024, 1:50:10 PM1/16/24
to Comunidad de Visual Foxpro en Español
SELECT DISTINCT * FROM prueba INTO CURSOR prueba2

lezamaeg

unread,
Jan 16, 2024, 2:32:55 PM1/16/24
to publice...@googlegroups.com
Select distinct funciona solo si los registros a eliminar son exactamente iguales. Cuando no son iguales te va a traer registros que parecen ser duplicados pero realmente no son 100% iguales. Un pequeños script para chequear algun parametro adicional tal vez funcione mejor. El parametro adicional a chequear puede ser fecha si lo tienes, cantidad, u otro campo para darle mas sustento a lo que vas a borrar y lo que vas a dejar. 



Sent from my T-Mobile 5G Device

Juan Gonzalez

unread,
Jan 16, 2024, 3:09:02 PM1/16/24
to Comunidad de Visual Foxpro en Español
entonces cual podria ser la solucion?

Zarlu

unread,
Jan 16, 2024, 5:24:41 PM1/16/24
to Comunidad de Visual Foxpro en Español

Trento

unread,
Jan 16, 2024, 7:56:43 PM1/16/24
to Comunidad de Visual Foxpro en Español
SELECT CLAVE, COUNT(*) AS CUANTOS ;
FROM miTabla ;
GROUP BY CLAVE ;
HAVING CUANTOS > 1

Bien, pues lo anterior te mostraría cuantos registros están duplicados o tienen el mismo valor en el campo CLAVE de determinada tabla.
Lo siguiente, sería definir qué sigue: si pasar esa consulta a un cursor y hacer una rutina que determine qué registros mantener o cuáles eliminar.

Eso ya te corresponde a ti.


Saludos.

Zarlu

unread,
Jan 17, 2024, 9:45:26 AM1/17/24
to Comunidad de Visual Foxpro en Español
Buenos días !

Basado en uno de los links que sugerí en éste hilo les comparto un código para crear nueva tabla quitando duplicados.
Adjunto prg y dbf para pruebas.

Prueben. Y gracias por comentar.

Suerte
zarlu
Chetumal, Quintana Roo, México

mitabla.DBF
quitarep.prg

Juan Gonzalez

unread,
Jan 17, 2024, 1:29:50 PM1/17/24
to publice...@googlegroups.com
gracias voy a revisar

Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/EPuFwpeKv4Q/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/50791b7c-9a7f-4419-936b-2f32f12c0205n%40googlegroups.com.

Ivan Martinez

unread,
Jan 17, 2024, 2:57:54 PM1/17/24
to publice...@googlegroups.com
Una logica a la vieja usanza seria:

select arch_con_ dup
cant = 0
scan
   
if cant= 0
      loop
   end
   if  registro_actual__NO_es_ igual_al_anterior
           do graba_reg_ant_en_archivo_nuevo
   endif    
end scan
do grabar el ultimo reg.

Ivan Martinez von Halle


Alejandro Isla

unread,
Jan 18, 2024, 3:23:58 PM1/18/24
to Comunidad de Visual Foxpro en Español
Buenas tardes, creo que la respuesta adecuada para eliminar registros duplicados es  la dada:

SELECT DISTINCT * FROM prueba INTO CURSOR prueba2

Como indicaron si no son 100% iguales los registros no se eliminan, pero si no son 100% iguales, no son duplicados, es correcto que no se eliminen.

Entonces pasamo a "como eliminar registros duplicado que no sean duplicados" :-) o más correctamente "como eliminar registro que posean un campo determinados duplicado"

En este caso, creo que tambien tienes la solución dada.


El tema sería principalmente primero y antes que nada que entiendes tu lo que es un "registro duplicado" en tu tabla.

Saludos

Reply all
Reply to author
Forward
0 new messages