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
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...
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ó:
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...
'*******************************************************************************
'* 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...
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
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...