Comparar dos campos de tablas diferentes.

Como podría hacer para comparar dos tablas y en un informe me muestre el cualquier color la diferencia que hay entre las tablas, ejempemplo:
Tabla 1 Tabla2
Manzana Roja Manzana roja
Manzana Roja Manzana verde
La Rev1 La Rev2
Fecha 12/10/11 Fecha 25/10/11
Y el resultado en un informe fuera el siguiente:
Tabla 1 Tabla2 Resultado1 Resultado2
Manzana Roja Manzana roja Igual
Manzana Roja Manzana verde Diferente Manzana verde (Solo texto verde en otro color porque manzana es igual)
La Rev1 La Rev2 Diferente (Rev2 en otro color)
Fecha 12/10/11 Fecha 25/10/11 Diferente (25 en otro color)

1 Respuesta

Respuesta
1
Lamento comentarte que lo que estás pidiendo imagino que se podría hacer, pero requeriría programar un montón de código y empezar a hacer testeos y más testeos hasta que saliera bien. Y desafortunadamente no puedo dedicar tanto tiempo a una consulta.
Intentaré darte otra solución ligeramente diferente, a ver si te va bien:
Así como lo explicas doy por supuesto que las dos tablas son iguales en cuanto a registros; es decir, en la tabla 1 hay, por ejemplo, 100 registros, y en la tabla 2 hay otros tantos, porque el sistema que te voy a proponer depende de eso. Además, los registros son "paralelos", es decir, que si la tabla uno tiene:
Registro 1: manzana roja
Registro 2: pera azul
En la tabla 2 lo que hay es
Registro 1: manzana roja (y no pera verde)
Registro 2: pera verde (y no manzana roja)
Si no tendrías que realizar algún tipo de ordenación en las tablas (a través de consultas) para que te quedaran de la manera que te comento (y eso te obligaría a adaptar el código)
Además, lo que pides de que sólo una parte del texto cambie de color no es factible con este sistema, porque lo que se compararán serán campos, no textos.
Vamos allá:
1.- Creas una tabla vacía, y la llamas, por ejemplo, TCompara. Le creas los siguientes campos (no hace falta que crees ninguna clave principal):
- [Tabla1] -> Texto
- [Tabla2] -> Texto
- [Resultado] -> Texto
2.- Creas una consulta, sobre la "Tabla1", y la conviertes en una consulta de datos anexados con la tabla TCompara y anexas el campo en cuestión con el campo [Tabla1]. Guardamos esa consulta como "CAnexa"
Para la "Tabla2", de cara al código, he llamado "Campo2" el campo que contiene el valor.
3.- En un formulario en blanco creas un botón de comando y le generas el siguiente código:
---
Private Sub...
DoCmd.SetWarnings False
DoCmd.OpenQuery "CAnexa"
DoCmd.SetWarnings True
Dim rst As Recordset, rst2 As Recordset
Set rst = CurrentDb.OpenRecordset("TCompara")
Set rst2 = CurrentDb.OpenRecordset("Tabla2")
rst.MoveFirst
rst2.MoveFirst
Do until rst2.EOF
With rst
.Edit
.Fields("Tabla2").Value = rst2.Fields("Campo2").value
.Update
End with
rst.MoveNext
rst2.MoveNext
Loop
rst2.Close
rst.MoveFirst
Do Until rst.EOF
With rst
If .Fields(0).Value = .Fields(1).Value Then
.Edit
.Fields(2).Value = "Igual"
.Update
Else
.Edit
.Fields(2).Value = "Diferente"
.Update
End If
End With
rst.MoveNext
Loop
Rst. Close
DoCmd. OpenReport "RCompara", acViewPreview
End Sub
---
4.- Creamos un informe sobre la tabla TCompara, y lo llamamos RCompara. Lo situamos en vista diseño y sobre el campo [Resultado] creamos un formato condicional que diga
Si el valor es igual a "Diferente"
Y le ponemos, por ejemplo, color de letra en rojo.
Ahora haces click sobre ese botón y verás los resultados.
OJO: si quieres repetir el proceso deberás abrir antes la tabla TCompara y borrar todos los registros, porque si no no te funcionará el código. Si lo quieres hacer automático creas una consulta de eliminación y la ejecutas.
Buenas noches experto Neckkito, muchísimas gracias; agradezco tu ayuda, estaba consiente que mi petición era un sueño guajiro, es decir difícil, pero lo que me enviaste me parece excelente, lo voy a probar.
Saludos desde México Raúl

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas