CONSULTA:No coincidentes El Asistente búsqueda de no coincidentes permite buscar los registros de una tabla o de una consulta que no tienen ninguna relación con los de otra tabla o consulta.
En la pestaña CREAR, haga clic en el botón Asistente para consultas del grupo Consultas.
Seleccione la opción Asistente búsqueda de no coincidentes y, a continuación, haga clic en el botón Aceptar.
Active una de las opciones de la sección Ver en función de los objetos que desee mostrar en la lista: Tablas, Consultas o Ambas.
En la lista, seleccione el nombre de la tabla o de la consulta que contenga los registros que desee mostrar en la consulta de búsqueda de no coincidentes y, a continuación, haga clic en el botón Siguiente.
Active una de las opciones de la sección Ver en función de los objetos (tablas y/o consultas) que desee mostrar en la lista.
Seleccione el nombre de la tabla o de la consulta que contenga los registros relacionados con la tabla o la consulta seleccionada en el paso anterior y, a continuación, haga clic en el botón Siguiente.
Si el campo seleccionado en cada lista no es el campo común a las dos tablas (o consultas), seleccione los campos correspondientes en las listas y, a continuación, haga clic en el botón... En ilimitado con la suscripción ENI En la tienda oficial de ENI Anterior Crear una consulta de tabla de referencias cruzadas Siguiente Crear una consulta para buscar duplicados
Tengo una base de datos con tres tablas con datos de clientes y quería comparar la primera tabla con dos más, y que me mostrara los datos que coinciden con la primera tabla y los muestre e indique en que tabla es coincidente por ejemplo: * Tabla Clientes - DNI -Nombre *Tabla Pedidos -DNI -NOMBRE * Tabla Presupuestos -DNI -NOMBRE Lo que pretendo es comparar la tabla Cliente con las otras dos y que de como resultado los dni que se son coincidentes en PEDIDOS y PRESUPUESTO y que me diga en que tabla hay coincidencia.
Haz clic para o
'borramos los datos de las tablas destino Dim campo As Object ' creamos el objeto recorset con los datos de la tabla tabla1 Dim rsttabla2 As DAO.Recordset ' creamos el objeto recorset con los datos de la tabla tabla3 Dim rsttabla4 As DAO.Recordset ' creamos el objeto recorset con los datos de la tabla tabla1 Dim rsttabla2filtrado As DAO.Recordset ' creamos el objeto recorset con los datos de la tabla tabla3 Dim rsttabla4filtrado As DAO.Recordset ' creamos el objeto recorset con los datos de la tabla tabla1 Dim rsttabla1 As DAO.Recordset ' creamos el objeto recorset con los datos de la tabla tabla3 Dim rsttabla3 As DAO.Recordset ' consulta SQL Dim strSQLtabla2 As String ' consulta SQL Dim strSQLtabla4 As String ' consulta SQL Dim strSQLtabla2filtrado As String ' consulta SQL Dim strSQLtabla4filtrado As String ' consulta SQL Dim strSQLtabla1 As String ' consulta SQL Dim strSQLtabla3 As String ' valores nombre del campo y valor del campo Dim nombrecampo As String Dim valorcampo As String ' creamos la consulta de los datos que queremos recuperar strSQLtabla2 = "SELECT [Identificador], [Estado], [Número de serie], [Uso], [USO nominal], [Última configuración] FROM TABLA2" ' creamos la consulta de los datos que queremos recuperar strSQLtabla4 = "SELECT [Identificador], [Estado], [Número de serie], [Uso], [USO nominal],[Última configuración] FROM TWP WHERE Estado = " & " '" & "En servicio" & "' " '"SELECT * FROM ALTASBAJAS WHERE Identificador = " & " '" & datos & "'" & " And id_alta = " & datos1 & ";" ' creamos la consulta de los datos que queremos recuperar strSQLtabla3 = "SELECT * FROM TABLA3" ' creamos la consulta de los datos que queremos recuperar strSQLtabla1 = "SELECT * FROM TABLA1" ' rellenamos el recorset con la consulta de sql de la tabla tabla2 Set rsttabla2 = CurrentDb.OpenRecordset(strSQLtabla2) ' rellenamos el recorset con la consulta de sql de la tabla tabla4 Set rsttabla4 = CurrentDb.OpenRecordset(strSQLtabla4) ' rellenamos el recorset con la consulta de sql de la tabla tabla3 Set rsttabla3 = CurrentDb.OpenRecordset(strSQLtabla3) ' rellenamos el recorset con la consulta de sql de la tabla tabla3 Set rsttabla1 = CurrentDb.OpenRecordset(strSQLtabla1) ' borramos los registros antiguos de la tabla tabla1 Do Until rsttabla2.EOF ' creamos la consulta de los datos que queremos recuperar strSQLtabla4filtrado = "SELECT [Identificador], [Estado], [Número de serie], [Uso], [USO nominal],[Última configuración] FROM TWP WHERE Identificador = " & " '" & rsttabla2(0) & "'" Set rsttabla4filtrado = CurrentDb.OpenRecordset(strSQLtabla4filtrado) If rsttabla4filtrado.EOF = True Then '''''''''''''''''''''''''''''''''''''''''''''' '''' copiar a tabla1''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' rsttabla1.AddNew For Each campo In rsttabla2.Fields ' cambiamos los valores de un recorset a otro nombrecampo = campo.Name rsttabla1(nombrecampo).Value = rsttabla2(nombrecampo).Value Next rsttabla1.Update '''''''''''''''''''''''''''''''''''''''''''''' '''''''' fin copiar tabla1''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''' editar tabla3''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' rsttabla3.AddNew rsttabla3("Identificador") = rsttabla2(0) rsttabla3("Estado") = "0" rsttabla3("Número de serie") = "0" rsttabla3("Uso") = "0" rsttabla3("USO nominal") = "0" rsttabla3("Última configuración") = "01/01/1999" rsttabla3.Update '''''''''''''''''''''''''''''''''''''''''''''' '''''''' fin editar tabla3''''''' '''''''''''''''''''''''''''''''''''''''''''''' Else If rsttabla4filtrado(1) = rsttabla2(1) And rsttabla4filtrado(2) = rsttabla2(2) And rsttabla4filtrado(3) = rsttabla2(3) And rsttabla4filtrado(4) = rsttabla2(4) And rsttabla4filtrado(5) = rsttabla2(5) Then ' no hacer nada 'MsgBox ("ok") ElseIf rsttabla4filtrado(1) <> rsttabla2(1) Or rsttabla4filtrado(2) <> rsttabla2(2) Or rsttabla4filtrado(3) <> rsttabla2(3) Or rsttabla4filtrado(4) <> rsttabla2(4) Or rsttabla4filtrado(5) <> rsttabla2(5) Then '''''''''''''''''''''''''''''''''''''''''''''' '''' copiar a tabla1''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' rsttabla1.AddNew For Each campo In rsttabla2.Fields ' cambiamos los valores de un recorset a otro nombrecampo = campo.Name rsttabla1(nombrecampo).Value = rsttabla2(nombrecampo).Value Next rsttabla1.Update '''''''''''''''''''''''''''''''''''''''''''''' '''''''' fin copiar tabla1''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''' copiar tabla3''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' rsttabla3.AddNew For Each campo In rsttabla4filtrado.Fields ' cambiamos los valores de un recorset a otro nombrecampo = campo.Name rsttabla3(nombrecampo).Value = rsttabla4filtrado(nombrecampo).Value Next rsttabla3.Update '''''''''''''''''''''''''''''''''''''''''''''' '''''''' fin copiar tabla3''''''' '''''''''''''''''''''''''''''''''''''''''''''' End If End If rsttabla4filtrado.Close Set rsttabla4filtrado = Nothing rsttabla2.MoveNext Loop Do Until rsttabla4.EOF ' creamos la consulta de los datos que queremos recuperar strSQLtabla2filtrado = "SELECT Identificador, Estado, [Número de serie], Uso, [USO nominal],[Última configuración] FROM TABLA2 WHERE Identificador = " & " '" & rsttabla4(0) & "'" Set rsttabla2filtrado = CurrentDb.OpenRecordset(strSQLtabla2filtrado) If rsttabla2filtrado.EOF = True Then '''''''''''''''''''''''''''''''''''''''''''''' '''' copiar a tabla3''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' rsttabla3.AddNew For Each campo In rsttabla4.Fields ' cambiamos los valores de un recorset a otro nombrecampo = campo.Name valorcampo = campo.Value rsttabla3(nombrecampo) = valorcampo Next rsttabla3.Update '''''''''''''''''''''''''''''''''''''''''''''' '''''''' fin copiar tabla3''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''' editar tabla1''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' rsttabla1.AddNew rsttabla1("Identificador") = rsttabla4(0) rsttabla1("Estado") = "0" rsttabla1("Número de serie") = "0" rsttabla1("Uso") = "0" rsttabla1("USO nominal") = "0" rsttabla1("Última configuración") = "01/01/1999" rsttabla1.Update '''''''''''''''''''''''''''''''''''''''''''''' '''''''' fin editar tabla1''''''' '''''''''''''''''''''''''''''''''''''''''''''' End If rsttabla2filtrado.Close Set rsttabla2filtrado = Nothing rsttabla4.MoveNext Loop rsttabla2.Close Set rsttabla2 = Nothing rsttabla4.Close Set rsttabla4 = Nothing rsttabla1.Close Set rsttabla1 = Nothing rsttabla3.Close Set rsttabla3 = Nothing Subformulario_TABLA3.Requery Subformulario_TABLA1.Requery En mi base de datos Access funciona ... de código no me preguntéis que no se!! En teoría coge las dos tablas a comparar e inserta los cambios en otras dos tablas solo con los resultados que no coinciden... Editado por javifergavilan - 01/Abril/2020 a las 17:59 |