Vincular casillas de verificación de diferentes tablas

Tengo un formulario (Form1), referido a la tabla "Fincas", con la casilla de verificación "Verif01". A su vez, dentro del mismo, tengo un subformulario (Form2), referido a la tabla "Locales", con las casillas de verificación "Verif02" y "Verif03".
La cuestión es que, estando Form1 y Form2 vinculados por el campo "pcatastral1", y sabiendo que a cada registro del primero le corresponden varios registros del segundo, me gustaría saber qué orden debería dar, a quién y cómo, para que siempre que una de las casillas "Verif02" o "Verif03" esté activada para cualquiera de los locales referidos a una finca del subformulario "Form02", se active también la casilla "Verif01" del formulario principal "Form01".

1 respuesta

Respuesta
1
Los campos Verif01, Verif02... ¿existen realmente en la tabla?
Es que no me entero muy bien de lo que quieres, supongo una Finca en el formulario Form1 y todos sus registros relacionados en Form2 ¿te refieres a que si en la tabla locales alguno está señalado se señale automáticamente en la tabla Fincas?
Me cuentas, Angeles
Buenas otra vez.
Empiezo de nuevo, a ver si logro aclararte un poco el lío:
Tengo un formulario (Form1), vinculado a la tabla "Fincas", y con la casilla de verificación "Verif01" que se enlaza con el campo "Revisar" de dicha tabla. A su vez, dentro del mismo, tengo un subformulario (Form2), vinculado a la tabla "Locales", y con las casillas de verificación "Verif02" (campo "ErrorEnUso") y "Verif03" (campo "ErrorEnSuperficie).
Los formulario Form1 y Form2 se vinculan por el campo "pcatastral1".
Así pues, sabiendo que a cada registro del primero le corresponden varios registros del segundo (es decir, a cada "finca" le corresponden varios "locales"), me gustaría saber qué orden debería dar a las casillas de verificación "Verif02" y "Verif03" para que siempre que alguna de ellas sea activada, en cualquiera de los locales del "Form2" referidos a una finca del formulario principal "Form01", se active también la casilla "Verif01" de éste último (y por tanto, rellene también el campo enlazado a ésta).
El problema es que si fuera dentro del mismo registro, de la misma tabla, y del mismo formulario, podría resolverlo sencillamente con un condicional (p.e.: "If Verif02 = True then Verif = True"), pero al ser 2 tablas diferenciadas, y existir varios registros de la segunda por cada uno de los de la primera, no sé cómo hacerlo...
A ver si he logrado explicarme mejor...
(Muchas gracias)
Quizá te pueda aclarar mejor esta imagen:
Primero tendremos que verificar al cargar el formulario si hay que revisar o no, para ello en el Evento Al cargar:
Private Sub Form_Load()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
' Vemos si para el PCatastras1 hay chequeado algún registro en los campos ErrorEnUso o ErrorEnSuperficie
Set rs = db.OpenRecordset("Select * from Locales where PCatastral1='" & Forms!Form01!PCatastral1.Value & "' and (ErrorEnUso=True or ErrorEnSuperficie=True)")
If Not rs.EOF Then
Forms!Form01!Verif01.Value = True ' Si devuelve registros
Else
Forms!Form01!Verif01.Value = False ' Si no devuelve registros
End If
End Sub
Después en las casillas de verificación Verif02 y Verif03 en el evento Al hacer clic tendremos que contemplar 2 opciones: hacemos clic para chequear o hacemos clic para deschequear, si chequeamos directamente Verif01=True si deschequeamos hacemos la misma comprobación que al cargar el formulario.
El código es:
Private Sub Verif02_Click()
Me.Refresh
If Forms!Form01!Form02.Form!Verif02.Value = True Then
Forms!Form01!Verif01.Value = True
Else
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from Locales where PCatastral1='" & Forms!Form01!PCatastral1.Value & "' and (ErrorEnUso=True or ErrorEnSuperficie=True)")
If Not rs.EOF Then
Forms!Form01!Verif01.Value = True
Else
Forms!Form01!Verif01.Value = False
End If
End If
Forms!Form01.Refresh
End Sub
Private Sub Verif03_Click()
Me.Refresh
If Forms!Form01!Form02.Form!Verif03.Value = True Then
Forms!Form01!Verif01.Value = True
Else
Set rs = db.OpenRecordset("Select * from Locales where PCatastral1='" & Forms!Form01!PCatastral1.Value & "' and (ErrorEnUso=True or ErrorEnSuperficie=True)")
If Not rs.EOF Then
Forms!Form01!Verif01.Value = True
Else
Forms!Form01!Verif01.Value = False
End If
End If
Forms!Form01.Refresh
End Sub
Me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas