Comparar dos tablas completas en un solo procedimiento

Migre de un sistema a otro la base completa de cliente (ambos sistemas tienen la misma estructura y nombres de campos), ambas bases la incorpore en un access y quisiera validar que todos los datos de los clientes este idénticos en ambas tablas, lo podría realizar campo a campo con el campo referenciado del ID del cliente, quisiera saber si existe un procedimiento (query, Sql o código) que con solo relacionar el ID del cliente me compares todo los campos de las dos tablas y me arroje como resultado el o los registros que tengan diferencia (no es necesario que solo me muestre la diferencia, solo el ID de cliente).

1 Respuesta

Respuesta
2

En Access, dentro del asistente de consultas, tienes dos opciones que te pueden servir (no me queda claro que es lo que quieres exactamente, pero yo apostaría por la segunda):

Asistente para búsqueda de duplicados

Asistente de búsqueda de no coincidentes

Hola, estaría buscando la No coincidentes pero ese asistente sólo busca los no coincidentes de un solo campo, yo necesitaría que compare todos los campos entre ambas tablas.

Entonces tendrás que hacerlo por código "a lo bestia", algo así (suponiendo que cada ID va estar una vez en cada tabla):

1º/ Creas una tabla (TDiferencias) con un único campo (IDCliente)

2º/ Creas un formulario con un botón de comando, y en el botón le programas un código parecido a éste (con los nombres de tus tablas y campos...)

Dim rst1 As DAO.Recordset

Dim rst2 As DAO.Recordset

Set rst1=CurrentDb.OpenRecordset("Tabla1")

Set rst2=CurrentDb.OpenRecordset("Tabla2")

rst1.MoveFirst

Do Until rst1.EOF

rst2.FindFirst "ID=" & rst1("ID")

If rst2.nomatch then

CurrentDb.Execute "INSERT INTO TDiferencias(ID) VALUES (" & rst1("ID") & ")"

Else

If rst1("Campo1)<>rst2("campo1") Then 

CurrentDb.Execute "INSERT INTO TDiferencias(ID) VALUES (" & rst1("ID") & ")"

Goto Siguiente

End If

If rst1("Campo2)<>rst2("campo2") Then 

CurrentDb.Execute "INSERT INTO TDiferencias(ID) VALUES (" & rst1("ID") & ")"

Goto Siguiente

End If

...

'Pondrás tantos Ifs como campos vayas a comparar

Siguiente:

rst1.MoveNext

End If

rst1.Close

Set rst1=Nothing

rst2.Close

Set rst2=Nothing

Cuando termine de ejecutar el código, deberías tener en la tabla TDiferencias, los IDs de lso registros que no coinciden en la tabla 2 con los de la tabla 1.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas