Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Eliminar Registros Duplicados en una Tabla de Access

1,308 views
Skip to first unread message

Jesus

unread,
Mar 5, 2008, 4:04:01 AM3/5/08
to
Hola

Se que el titulo parece sencillo, de hecho yo he hecho esto en versiones
anteriores de access e incluso en la ayuda de access se trata el tema
especifícamente, pero la realidad es que llevo 4 días intentando hacerlo Y NO
SOY CAPAZ.

Creo que me lio con el Access 2007, ya que al cambiar la interfaz de usuario
me confundo muchísimo y no se hacerlo.

Además, la ayuda está mal traducida, con lo que tampoco me sirve de mucho.
Por ejemplo, en algunos lugares de la ayuda se habla de buscar la palabra
"De" cuando en access es "Desde", errores de traducción como estos me estan
volviendo completamente loco y no entiendo la ayuda, con lo que no puedo
eliminar registros duplicados de una tabla que tengo.

Lo que yo quiero hacer simplemente, es eliminar los registros duplicados que
tengo en una tabla que tiene unas 30.000 registros (filas) en total.

Me podríais decir, paso a paso, como puedo hacer esto.

No tengo conocimientos avanzados de access, si me pudierais ir diciendo como
hacerlo tipo 1., 2., 3., 4... creo que podría pillarlo mejor.

Gracias

Emilio

unread,
Mar 5, 2008, 5:58:23 AM3/5/08
to
--------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
Hola!

mira a ver si esto te vale

http://www.mvp-access.com/foro/forum_posts.asp?TID=24444

Ni que decir tiene que los experimentos se hacen con gaseosa ;-)

Saludos a tod@s
Emilio [MS-MVP Access 2006/8]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Jesus" <Je...@discussions.microsoft.com> escribió en el mensaje
news:219F87B5-7C9D-4BCF...@microsoft.com...

Jesus

unread,
Mar 5, 2008, 6:26:06 AM3/5/08
to
Hola Emilio:

Gracias por tu respuesta, la verdad es que necesito ayuda urgente con esto.

Por el tema de los experimentos con gaseosa :) no te preocupes, tengo una
base de datos de prueba de 8 registros para hacer primero la eliminación de
duplicados y una vez funcione, saco ya mis copias de seguridad y voy con la
grande.

No puedo acceder al link que me das... me dice que "sólo los miembros con
suficientes permisos pueden acceder a esta página."...

Necesito registrarme para entrar ahi? Lo digo porque para leer posts no creo
que haga falta... el caso es que no puedo entrar.

No me puedes dar otro link o podrias decirme como puedo entrar en ese sitio?

Gracias

"Emilio" escribió:

Emilio

unread,
Mar 5, 2008, 6:30:58 AM3/5/08
to
--------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
Tienes una opción para entrar como invitado en
http://www.mvp-access.com/foro

Saludos a tod@s
Emilio [MS-MVP Access 2006/8]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Jesus" <Je...@discussions.microsoft.com> escribió en el mensaje

news:58BE9556-7DB0-4D3C...@microsoft.com...

Emilio

unread,
Mar 5, 2008, 6:33:26 AM3/5/08
to
--------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
de cualquier modo y por si las moscas, ahí va el código

'*******************************************************************************
'* EliminarRegistrosDuplicados
'* Elimina los registros duplicados (idénticos) de la tabla pasada como
parámetro
'* en caso de querer comparar solo determinados campos habría de modificarse
el
'* modo de asignación de las variables strRegistroAnterior y
strRegistroActual
'* Argumentos: strTabla => nombre de la tabla a revisar
'* uso: EliminarRegistrosDuplicados "Tabla3"
'* ESH 21/05/06 10:39
'* partiendo de una idea original de
'* http://www.databasejournal.com/features/msaccess/article.php/3077791
'*******************************************************************************
Public Sub EliminarRegistrosDuplicados(strTabla As String)

Dim rst As DAO.Recordset, _
strSQL As String, _
strRegistroActual As String, _
strRegistroAnterior As String, _
Campo As DAO.Field, _
strOrden As String

On Error Resume Next

strSQL = "SELECT * "
strSQL = strSQL & " FROM [" & strTabla & "]"

Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

' dado que si los campos no están debidamente ordenados no voy a poder
eliminar registros no consecutivos
' construyo una cadena OrderBy con todos los campos y vuelvo a abrir el
recordset, esta vez totalmente ordenado
For Each Campo In rst.Fields
strOrden = strOrden & Campo.name & ", "
Next
strOrden = " ORDER BY " & Left(strOrden, Len(strOrden) - 2)

rst.Close

strSQL = strSQL & strOrden

Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

' recorro todos los registros de la tabla si los hubiera
If Not (rst.EOF And rst.BOF) Then
Do While Not rst.EOF
' construyo la variable strRegistroActual concatenando todos los
campos del registro
strRegistroActual = ""
For Each Campo In rst.Fields
strRegistroActual = strRegistroActual & Campo & "|"
Next
' comparo el registro actual con el anterior y si son iguales elimino
el actual
If strRegistroAnterior = strRegistroActual Then
rst.Delete
Else
strRegistroAnterior = strRegistroActual
End If
rst.MoveNext
Loop
Else
MsgBox "No hay registros en la tabla " & strTabla, vbInformation +
vbOKOnly, "Eliminación de registros duplicados"
End If

If Not rst Is Nothing Then
rst.Close
Set rst = Nothing
End If

End Sub ' EliminarRegistrosDuplicados


Saludos a tod@s
Emilio [MS-MVP Access 2006/8]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio


"Jesus" <Je...@discussions.microsoft.com> escribió en el mensaje

news:58BE9556-7DB0-4D3C...@microsoft.com...

Jesus

unread,
Mar 5, 2008, 2:38:03 PM3/5/08
to
Muchas gracias por tu respuesta Emilio

Al principio de mi mensaje te comentaba que no tengo conocimientos avanzados
de access. Lo que veo aqui es un programa en VBA (Visual Basic Acess) que lo
que hace es buscar los registros duplicados en una tabla... cierto?

Si me pudieras dar unas instrucciones simples de donde pegar ese código y
como ejecutarlo... podría ponerlo en funcionamiento con mi tabla y probarlo.

La verdad que me vendría bien tener un programa como el tuyo, ya que podría
usarlo en cualquier tabla sin tener que ir haciendo consultas.

Lo siento pero no se mucho de programación en Access

Dónde pego ese código? Cómo lo ejecuto?

Gracias
Jesús

Emilio

unread,
Mar 5, 2008, 3:03:14 PM3/5/08
to
--------------------------------------------------------------------------
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
--------------------------------------------------------------------------
Hola!

VBA = Visual Basic para Aplicaciones, es utilizable en Access, Excel, Word,
Outlook, ... , Autocad, y otras muchas aplicaciones.

Pega ese código en un módulo nuevo y solo tienes que escribir en la ventana
inmediato (pulsa Ctrl+G para abrirla si no está abierta ) del editor de VBA
y por supuesto pulsar enter.

EliminarRegistrosDuplicados "LaTabla"

Saludos a tod@s

Emilio [MS-MVP Access 2006/8]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro

http://www.mvp-access.es/emilio


"Jesus" <Je...@discussions.microsoft.com> escribió en el mensaje

news:8934D2B7-FCF3-4103...@microsoft.com...

lrfsan...@gmail.com

unread,
Mar 9, 2008, 9:36:11 AM3/9/08
to
jesus; mira lo mio es muy sencillo sin escribir una linea de codigos:
haz una copia de tu base con codigos repetidos llamado base2 por ej. y
lugo borras todos los datos de base original, y por ultmo marca todos
los registros de base2 lo copias al portapapel(control+V) clique en tu
base original que esta vacia y agregas los registros con control+C
(copiar) y automaticamente creara una base de errores de los cuales
esta repetidos esta es la forma más rrapida y segura de que has
eliminadoos todos tus codigo repetidos
0 new messages