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