Access - Evitar guardar subformulario en blanco

 
Vista:
sin imagen de perfil

Evitar guardar subformulario en blanco

Publicado por cristian (10 intervenciones) el 27/04/2022 03:15:42
Buenas tardes, espero se encuentren bien... escribo para ver si pueden apoyarme en una problemática que estoy teniendo y no encuentro como hacer para darle solución; me explico:

Estoy creando una base de datos en microsoft access 2019 y tengo un formulario el cual se llama "datos_clientes" y en dicho formulario, tengo agregado un subformulario el cual lleva por nombre "solicitudes_clientes" en el cual dicho subformulario contiene varios campos que los clientes pueden solicitar (articulo, cantidades, categoría, área).

Todo funciona correctamente... la problemática que surge es cuando quiero guardar (presionando botón para guardar). En el formulario principal si marca que hay campos obligatorios que tienen que ser llenado el cual se procede a llenarlos, pero cuando estan llenado, se presiona para guardar y en el subformulario no marca que esta vació y deja guardar a pesar de que no se le coloque nada, ningún valor... he hay el problema.

De que forma podría generar alguna validación o algo, en la cual ese botón de guardar al momento de dar clic, haga que mire que el subformulario no se tiene ningún registro capturado y que no deje guardar a menos de que se llene un registro al menos.

Espero de favor puedan ayudarme con la problemática que estoy tratando de resolver, saludos, que se encuentren bien.
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

Evitar guardar subformulario en blanco

Publicado por Anonimo (3316 intervenciones) el 27/04/2022 09:41:08
Es una opción que normalmente necesita procesos avanzados, porque lo que esta ocurriendo es lo que tiene que pasar ya que no se puede obligara a un registro que no quiere 'ser padre' a tener hijos.

Para poder 'tener hijos' primero ha de existir como 'padre' (la regla es: si no se es padre no se pueden tener hijos), guardar el registro es el paso previo e imprescindible para que exista (primero como registro, después como 'padre').

Hay una propiedad (HasData) que delata si un informe (por asociación también un formulario o subformulario) tiene datos y según sea la respuesta obtenida, aplicar alternativas.
Otra opción para ese control es la de contar los registros del sub-formulario (su propiedad 'RecordCount')

En la aplicación practica de esa verificación habrá que analizar 'cuantas puertas de escape' tiene ese formulario para controlarlas y evitar conflictos.
Por ejemplo: la 'primera vez' se tendrá que saltar la verificación de tener hijos o se entrará en un bucle (afortunadamente existe la propiedad 'NewRecord'. indicador de es registro es nuevo).
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
sin imagen de perfil

Evitar guardar subformulario en blanco

Publicado por cristian (10 intervenciones) el 27/04/2022 17:07:15
buenos días, agradezco tu respuesta pero no entendí, a lo que quiero entender es que es algo complicado realizarlo?

De no ser así como pudiera aplicarlo eso que me comentas??, con macros creo se puede resolver el proceso, mas no tengo conocimiento de como comenzar a escribir el codigo.
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

Evitar guardar subformulario en blanco

Publicado por Anonimo (3316 intervenciones) el 28/04/2022 00:50:23
Reitero que son 'procesos avanzados', no es lo mismo poner un vendaje que operar unas cataratas.

Cuando se crea un registro, para que sea considerado un registro y no unos cuadros de texto con valores, es preciso asentarlo en la tabla (guardarlo), si se impone la condición de que no se puede guardar -si no tiene registros asociados- entramos en un bucle, porque es indispensable guardarlo para asociarle otros registros y a la vez no se puede guardar porque no tiene registros asociados.

Así que habrá que dar un rodeo si se cumple esa condición: es nuevo --> se guarda 'aunque no tenga registros asociados'
(el guardado lo hace de forma automática al pasar del formulario al subformulario y no se puede evitar por diseño)

Habrá que detectar cuando se guarda (el evento 'antes de actualizar') y si es nuevo, si lo es:
.- se aborta la salida
.- se guarda (sin salir de el)
.- Se envía el foco al sub-formulario y .....
.- se crea el nuevo registro (o al menos el indispensable para salir).

Supongamos que -por cualquier motivo inesperado- se crea el nuevo registro en el formulario principal pero no hay opción ni intención de crear el sub-registro, para cumplir con la regla habrá que borrar el registro principal.

Esa y otras posibilidades son las que hay que analizar para que en el uso cotidiano no aparezcan los problemas mas habituales (los no-habituales obtendrán una/su solución cuando se presenten).

Un análisis pormenorizado de lo que se desea y de los problemas que puedan surgir al llevar la teoría a la practica es fundamental para que tenga el mínimo de problemas (si se tiene un conocido con titulo oficial de 'gafe' hay que hacer uso de el para acortar los pasos).

En definitiva: se puede hacer, las macros pueden ayudar pero lo optimo es VBA que da mas libertad, como condición indispensable -hacer un diagrama de flujo- y tras ello se puede comenzar a programar.

Una opción sencilla seria verificar al salir del registro si tiene datos asociados, de no tenerlos ... se borra el registro (factible si no se entra en un bucle).

No se conoce lo suficiente la aplicación para poder aportar soluciones concretas.
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
Imágen de perfil de Eduardo

Evitar guardar subformulario en blanco

Publicado por Eduardo (317 intervenciones) el 28/04/2022 20:42:17
No es necesario tanta teoría, lo puede hacer con una función a nivel de módulo para validar los campos requeridos y valiéndose de la propiedad TAG (Información adicional del formulario), por ejemplo, fijando la palabra "validar" sin comillas u cualquier texto para los campos que son obligatorios.

DISEÑO DEL FORMULARIO

validar_campos_diseno2

CÓDIGO DELBOTÓN GRABAR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim miRS As Recordset
 
Set miRS = Me.frmSubCompras.Form.RecordsetClone
 
  If miRS.RecordCount = 0 Then
    MsgBox "No hay registros para incorporar la compra", vbInformation, "Ejemplo"
    Exit Sub
 
  End If
 
If validar_campo THEN
  Msgbox "Verifique falta información requerida",vbinformation,"Cuidado"
  Exit Sub
ENDIF

Cambie "frmSubCompras" por el nombre del su subformulario,

CÓDIGO DE LA FUNCIÓN

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
27
28
29
30
31
Public Function validar_campo() As Boolean
 
'Función para marcar y validar los campos que no
'cumplen un valor
'Elaborada por: EDUARDO PEREZ FERNANEZ
'Fecha: 12/04/2021
'La función se puede llamar desde cualquier formulario
'Trabaja con base a "Información adicional" (Tag)
 
 On Error Resume Next
 
Dim ctl As control
 
    For Each ctl In Screen.ActiveForm.Controls
 
         With ctl
            If (.ControlType = acTextBox Or .ControlType = acComboBox Or _
            .ControlType = acOptionGroup) And .Tag <> "" Then
 
               If IsNull(ctl) Or ctl = "" Then
                   .BackColor = RGB(246, 110, 96)
                   validar_campo = True
               Else
                  .BackColor = vbWhite
             End If
            End If
        End With
    Next
 
 
End Function

Este proceso lo hago en todas mis aplicaciones e inclusive con formularios independientes y base de datos PostgreSQL. Si lo aplica bien ganará mucho tiempo en validar la información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Evitar guardar subformulario en blanco

Publicado por Anonimo (3316 intervenciones) el 29/04/2022 01:16:19
Sin la teoría no existiría mas que la ignorancia.

Saber 'como/porqué' asienta los conocimientos y abre puertas ocultas por .la ignorancia, estado del que no se sale simplemente copiando y pegando.

En fin, espero que no aparezca otro ataque de SPAM, que parece ligado al humor de algún participante concreto.
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
Imágen de perfil de Eduardo

Evitar guardar subformulario en blanco

Publicado por Eduardo (317 intervenciones) el 29/04/2022 02:29:01
Para esto se explica el código, pero no confundamos a los usuarios hay que ser practicos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Evitar guardar subformulario en blanco

Publicado por cristian (10 intervenciones) el 29/04/2022 02:38:03
Muchas gracias... lo pondré en practica lo escrito y publicado por ti, saludos.
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