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 de Neckkito Nck
1
1
Neckkito Nck, Access... ser o no ser. Esa es la cuestión
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