Buscar Coincidencias en Dos Tablas de Access

Estoy intentando realizar la búsqueda de uno datos de una tabla de access en otra.

La tabla 1 (Datos de Búsqueda) contiene dos columnas: Documento de identificación (pueden ser alfanuméricos) y Nombres completos.

Tabla 2 Contiene: IdRegistro, Documento de identificación, Nombres Completos, Y otras columnas.

La idea es crear una consulta que tome la tabla 1 y busque si existen coincidencias en la tabla 2.

Las coincidencias serían:

Tipo 0: No existen coincidencias

Tipo 1: Documento de identificación y Nombres EXACTOS

Tipo 2: Documento EXACTO (Significa que el nombre posiblemente no coincide)

Tipo 3: Nombre EXACTO

Puede ser posible que en la tabla 2 algunos campos no tengan Número de Documento registrado.

La consulta debe realizarse sin importar el orden de los nombres: Apellidos Nombres o Nombres Apellidos.

Necesito enviar la respuesta a otra tabla de resultado donde me diga:

Documento consultado, Nombre Consultado, Tipo de Coincidencia encontrada, Documento Encontrado, Nombre Encontrado, IdRegistro.

E intentado realizarlo de mil maneras, pero la verdad no me ha sido posible.

Muy amable por tu valiosa colaboración.

1 Respuesta

Respuesta
1

Debes hacer una subrutina que haga precisamente eso que quieres. Ejemplo:

Public sub Coincidencias()

dim strSQL as string

dim A as recordset

dim B as recordset

dim C as recordset

dim DB as database

set db=dbengine(0)(0)

'Seleccionas la primer tabla

strsql = "Select * From Tabla1"

set A=db.openrecordset(strsql)

if a.recordcount > 0 then   'la tabla tiene datos

do while not a.eof

   strsql = "Select * From Tabla2 where identificacion='" a!identificacion & "' and        Nombres='" & a!nombres & "'"

set B=db.openrecordset(strsql)

if b.recordcount>0 then   'Identificacion y nombres exactos

'Aqui agregas a la tabla de resultados con un INSERT

end if

a.movenext

loop

else

'Aqui no hay coincidencias

end if

end sub

Con esta misma lógica puedes checar lo que quieras.

Buenas tardes, Ismael

Te agradezco mucho la respuesta, sin embargo quede un poco perdido

La instrucción:  a!identificacion & "' and  Nombres='" & a!nombres & "'", me esta generando error.

Por otro lado no te comprendí muy bien cuando dices: 'Aquí agregas a la tabla de resultados con un INSERT.

Y el resultado de los tipos de coincidencia como lo encuentro.

Disculpa la molestia.

El código que escribí como respuesta es solo el ejemplo que debes seguir para resolver la situación que comentas, es posible que los nombres de campo y las tablas no se llamen como yo lo escribí, por eso te manda error. Debes cambiar el código con tus nombre de tabla y campos correctos para que funcione. Donde dejé el comentario acerca del INSERT creí que sabias como hacerlo, una disculpa. El insert sería algo como esto (si tu tabla de resultados se llamara "Resultados"):

dim strsql as string

'Aqui deben ir todos tus campos y terminar con parentesis

strsql = "INSERT INTO Resultados Values('"

strsql = strsql & documento_consultado  & "','"

strsql = strsql & nombre_consultado  & "','"

strsql = strsql & Tipo_coincidencia  & "','"

strsql = strsql & documento_consultado  & "')"

db.execute (strsql)

Ojalá te ayude esto.

Muchas gracias, Ismael

Aún continúa generando el error en el código:

 strsql = "Select * From Tabla2 where identificacion='" a!identificacion & "' and        Nombres='" & a!nombres & "'"

Cambie los nombres de los campos pero aún me dice: 

Error de Compilación

Se esperaba: Fin de la Instrucción.

Disculpa la molestia 

Tal vez le falta una comilla al terminar (")

Hola, Ismael

Logre resolver la línea, solo le faltaba (&) antes de a!Identificación.

Cree un formulario con un botón donde inserte el código pero al ejecutarlo no me realiza ninguna operación.

No se si podría abusar de tu confianza y enviarte a algún correo el ejemplo para que tu me hagas el favor de verificar donde tengo el error.

Perdona la intensidad.

Envíame tu BD y en cuanto tenga un espacio te lo regreso.

Envíame tu BD y en cuanto tenga un espacio te lo regreso. [email protected]

Muchas gracias por tu respuesta, ya lo envié al correo que me indicas.

Este sería el código para que resuelvas tu problema en el caso de la coincidencia exacta, las otras opciones te las dejo a ti para que practiques. Es lo más que puedo hacer por ti. Tal vez alguien más te pueda ayudar.

Private Sub Comando0_Click()
Dim strSQL As String
Dim A As Recordset
Dim B As Recordset
Dim Db As Database
Set Db = DBEngine(0)(0)
'Seleccionas la primer tabla
strSQL = "Select * From Tabla1"
Set A = Db.OpenRecordset(strSQL)
If A.RecordCount > 0 Then
Do While Not A.EOF
'Buscar coincidencia en la segunda tabla
strSQL = "Select * From Tabla2 where Identificacion='" & A!identificacion & "' and Nombre='" & A!nombre & "'"
Set B = Db.OpenRecordset(strSQL)
If B.RecordCount > 0 Then 'Identificacion y nombres exactos
'Aqui agregas a la tabla de resultados tipo 1 cuando la identificacion y nombre son exactos
strSQL = "INSERT INTO T_Resultados Values('"
strSQL = strSQL & A!identificacion & "','" 'IdentificacionConsultada
strSQL = strSQL & A!nombre & "','" 'NombreConsultado
strSQL = strSQL & 1 & "','" 'Tipo_coincidencia
strSQL = strSQL & B!identificacion & "','" 'IdentificacionCoincidencia
strSQL = strSQL & B!nombre & "'," 'NombreCoincidencia
strSQL = strSQL & B!idregistro & ")" 'IdRegistro
Db.Execute (strSQL)
End If
A.MoveNext
Loop
MsgBox "Coincidencia exacta terminada"
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas