Consulta a tres tablas

Muy buenas, mi consulta es la siguiente. Tengo una aplicación que controla la asociación a tres clubs distintos. Lo he hecho cada club en una tabla distitnta porque cada uno exige datos diferentes para su inscripción. Lo que quiero es que cuando introduzca el campo "DNI" en cualquiera de los formularios que controlan las tres tablas, si ya esta afiliado en otro club o en este mismo me avise. O sea, lo que quiero es hacer una consulta que busque en una tabla, luego en la otra y luego en la última.
Gracias por adelantado.
1

1 respuesta

Respuesta
1
Para hacer lo que quieres necesitas utilizar código. El problema es que como no sé los nombres de tus tablas y campos te voy a contestar a través de un ejemplo. Tú tendrás que cambiar los nombres del ejemplo por los de tus tablas.
Tabla1, Tabla2 y Tabla3 serán los nombres de tus tablas.
[DNI1] Será el campo donde guardas el DNI en la Tabla1; [DNI2] será el campo donde guardas el DNI en la Tabla2, y [DNI3] será el campo donde guardas el DNI en la Tabla3.
Finalmente, [txtDNI] será el nombre del campo en un formulario donde introduces el DNI (te lo escribo así para no liarte, porque en teoría debería coincidirte con el nombre del campo [DNIx], con x=(1,2,3), según en el formulario en que estés).
También doy por supuesto que el tipo de dato DNI es texto.
Te escribo el código de cabeza y sin testeos, por lo que si te da algún error me lo comentas y lo arreglamos.
Vamos allá:
1.- Sacas las propiedades del campo [txtDNI] y te vas a la pestaña Eventos. Ahí verás un evento llamado "Después de actualizar". Te sitúas en la parte blanca de su derecha y te aparecerá un pequeño botón de puntos suspensivos. Haces click sobre él y en la ventana que te sale le dices que quieres generar código.
2.- Se te abrirá el VBE, con dos líneas por defecto (Private Sub... y End Sub). Tienes que dejar estas líneas así como te salgan. En medio de ellas debes escribir este código:
---
Private Sub...
Dim vDNI as Variant
'Cogemos el valor del DNI introducido
vDNI = Me.[txtDNI].Value
'Si no hubiera valor interrumpe el proceso
If IsNull(vDNI) Then Exit Sub
'Crea el primer recordset para la primera Tabla
Dim vTDNI1 As Variant
Dim rst1 As Recordset
Set rst1=CurrentDb.OpenRecordset("Tabla1")
rst1.MoveFirst
Do Until rst1.EOF
vTDNI1=rst1.Fields("DNI1").Value
If vTDNI = vDNI Then
MsgBox "Este DNI ya existe en la tabla TABLA1",vbInformation,"AVISO"
Exit Do
End If
rst1.MoveNext
Loop
'Crea el segundo recordset para la segunda Tabla
Dim vTDNI2 As Variant
Dim rst2 As Recordset
Set rst2=CurrentDb.OpenRecordset("Tabla2")
rst2.MoveFirst
Do Until rst2.EOF
vTDNI2=rst2.Fields("DNI2").Value
If vTDNI2 = vDNI Then
MsgBox "Este DNI ya existe en la tabla TABLA2",vbInformation,"AVISO"
Exit Do
End If
rst2.MoveNext
Loop
'Crea el tercer recordset para la tercera Tabla
Dim vTDNI3 As Variant
Dim rst3 As Recordset
Set rst3=CurrentDb.OpenRecordset("Tabla3")
rst3.MoveFirst
Do Until rst3.EOF
vTDNI3=rst3.Fields("DNI3").Value
If vTDNI3 = vDNI Then
MsgBox "Este DNI ya existe en la tabla TABLA3",vbInformation,"AVISO"
Exit Do
End If
rst3.MoveNext
Loop
'Finaliza el proceso
rst1.Close
rst2.Close
rst3.Close
Set rst1 = Nothing
Set rst2 = Nothing
Set rst3 = Nothing
End Sub
---
Recuerda que debes cambiar los nombres de campos y tablas que te comentaba al principio por los tuyos.
Ya me dirás.
Un saludo, y suerte!
... http://neckkito.eu5.org ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas