Access - Subformularios. Socorro

 
Vista:

Subformularios. Socorro

Publicado por Mouse (1 intervención) el 12/06/2006 22:33:44
Tengo un form con varios subform, (unos en controles ficha, otros independeintes, etc) y recientemente he añadido otro subform.

Este nuevo subform llamado "TPerResumen" esta vinculado con el principal por un campo llamado NumeroPos, en una relación 1 a 1, sin duplicados, tirando de una tabla que está vacia al principio (TablaR).

La idea es que si cambia algo en alguno de los otros forms / subforms, antes de cambiar a otro registro en el form principal fuerce a rellenar un campo del subform "TPerResumen" campo llamado "Resumen" previamente, ofreciendo la posibilidad (¿msgbox tal vez?) de forzar la salida sin añadir el registro a la tabla "TablaR".

Necesitaria el código o por donde atacar este problema. Tambien ha de ser posible añadir el registro a TablaR aunque no se haya cambiado nada, aunque esto no es problema pues con posicionarse ya estaría.

De verdad, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Validar cambios antes de cambiar de registro en un formulario con subformularios

Publicado por Alejandro (4142 intervenciones) el 19/07/2023 18:45:48
Para lograr la validación de cambios antes de cambiar de registro en un formulario con subformularios y forzar la entrada de un campo en un subformulario específico, puedes utilizar código VBA en el evento BeforeUpdate del formulario principal. Aquí tienes un ejemplo de cómo puedes abordar este problema:

1. Abre el formulario principal en el modo de diseño en Access.

2. Selecciona el formulario principal y ve a la sección "Eventos" en la ventana de propiedades.

3. Busca el evento "BeforeUpdate" y haz doble clic en el cuadro de texto a la derecha para abrir el Editor de Visual Basic.

4. En el Editor de Visual Basic, agrega el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim subform As SubForm
    Dim subformControl As Control
    Dim resumenControl As Control
 
    ' Nombre del subformulario
    Const nombreSubform As String = "TPerResumen"
 
    ' Nombre del campo Resumen en el subformulario
    Const nombreCampoResumen As String = "Resumen"
 
    ' Obtener referencia al subformulario
    Set subform = Me.Controls(nombreSubform).Form
 
    ' Obtener referencia al control de campo Resumen
    Set resumenControl = subform.Controls(nombreCampoResumen)
 
    ' Verificar si el campo Resumen está en blanco
    If IsNull(resumenControl.Value) Or Trim(resumenControl.Value) = "" Then
        ' Mostrar mensaje y dar opción de cancelar
        If MsgBox("El campo Resumen en el subformulario no ha sido completado." & vbCrLf & _
            "¿Desea continuar sin añadir el registro a la TablaR?", vbExclamation + vbYesNo) = vbNo Then
            Cancel = True ' Cancelar el cambio de registro
        End If
    End If
End Sub

5. Personaliza el código según tus necesidades:
- Reemplaza "TPerResumen" con el nombre del subformulario que deseas validar.
- Reemplaza "Resumen" con el nombre del campo Resumen en el subformulario que deseas validar.
- Personaliza el mensaje del cuadro de diálogo MsgBox según tus preferencias.

6. Guarda y cierra el Editor de Visual Basic.

Cuando intentes cambiar de registro en el formulario principal, el código verificará si el campo Resumen en el subformulario especificado está en blanco. Si está en blanco, se mostrará un mensaje que te permitirá cancelar el cambio de registro si deseas forzar la entrada en el campo Resumen. Si decides continuar sin completar el campo Resumen, el registro no se añadirá a la tabla "TablaR".

Recuerda que debes reemplazar "TPerResumen" y "Resumen" con los nombres reales de tu subformulario y campo. Además, asegúrate de que el subformulario esté correctamente vinculado y que los nombres de los controles sean los correctos.

Puedes aplicar esta solución a otras consultas similares en las que necesites validar cambios en subformularios antes de cambiar de registro en el formulario principal. Simplemente personaliza el código según tus necesidades y ajusta los nombres de los subformularios y campos correspondientes.

Espero que esta solución te sea útil. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar