Access - evitar registros con campos en blanco

 
Vista:
sin imagen de perfil

evitar registros con campos en blanco

Publicado por Javier (25 intervenciones) el 27/01/2024 21:55:12
Captura-de-pantalla-2024-01-27-212731

es que los campos los tengo en la tabla como requeridos y me graba los registros aunque los campos esten en blanco.
me gustaria saber porque.
un saludo y 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

evitar registros con campos en blanco

Publicado por Anonimo (3316 intervenciones) el 28/01/2024 01:09:32
Es fácil que suceda (y seria correcto) si además de declararlos como requeridos, se les adjudicase un valor por defecto (valor predeterminado).

Dado que los guarda 'en blanco' (un espacio es un hueco 'en blanco' y no un NULL) cumplirá con la regla de 'tener un valor', otra cosa es que sea util.

Una cosa es FORMS (referencia a la colección de formularios) y otra es FORM (la referencia a un formulario en funciones de subformulario).

Por otra parte, una variable (que por diseño no permite espacios en su declaración) no se debe encerrar entre corchetes ni los necesita.

Cualquiera de esas dos causas puede ser la que provoca el error.

¿Te has planteado verificar solamente los datos requeridos (y alguno más) en lugar de recorrer todos los objetos del formulario en la búsqueda de una minima parte?.

(en mi opinión) verificar lo imprescindible aumentara el rendimiento con respecto a esa búsqueda genérica de fantasmas.
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 registros con campos en blanco

Publicado por Eduardo Pérez Fernández (317 intervenciones) el 28/01/2024 18:01:42
El mensaje de error es muy claro no ha definido la variable Control, debe anteponer este código

1
Dim Control  As Control
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 registros con campos en blanco

Publicado por Javier (25 intervenciones) el 28/01/2024 18:14:00
muchas gracias, lo voy a probar
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 registros con campos en blanco

Publicado por Eduardo Pérez Fernández (317 intervenciones) el 29/01/2024 17:41:16
Le dejo esta función que utilizo en mis aplicaciones, utiliza "Información adicional" del formulario para determinar si un campo se debe validar, si al menos un campo no cumple la condición retorna true y cambia el color del control.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Public Function validar_campo(Optional tag As String = "validar", Optional bgColor As Long = 16776960) As Boolean
 
'Función para marcar y validar los campos que no
'cumplen un valor. Puede cambiar la palabra "validar" por otra pero la misma
'se tiene que incluier en propiedades del campo "Información adicional"
'igualmente puede cambiar el codigo del color
 
'Elaborada por: EDUARDO PEREZ FERNANEZ
'Fecha: 25/03/2023
'Esta autorizado para utilizar este código en sus aplicaciones
'Solo le recomiendo conservar al autoría, toda vez, que no cobro un dolar.
'Nota: Como está la funcion solo se validan los campos que tengan en "Información adicional" la palabra "validar"
 
   On Error GoTo hay_error
 
   Dim ctl As Control
 
   For Each ctl In Screen.ActiveForm.Controls
 
    Select Case ctl.ControlType
 
        Case acTextBox, acComboBox, acOptionGroup
 
            If Len(Trim(ctl.tag)) > 0 Then
 
                If IsNull(ctl) Or ctl = "" Then
                    ctl.BackColor = bgColor
                    validar_campo = True
                Else
                    ctl.BackColor = vbWhite
                End If
            End If
 
        Case acListBox
 
             If ctl.tag = tag Then
                If ctl.ItemsSelected.count = 0 Then
                 'ctl.BackColor = bgColor
                 validar_campo = True
               Else
                 ctl.BackColor = vbWhite
              End If
            End If
 
        ' Agregamos soporte para otros tipos de controles
        Case acCheckBox, acOptionButton
 
            If ctl.tag = tag Then
                If Not ctl.value Then
                    ctl.BackColor = bgColor
                    validar_campo = True
                 Else
                    ctl.BackColor = vbWhite
                End If
            End If
 
        Case acToggleButton
 
            If ctl.tag = tag Then
                If ctl.value = 0 Then
                    ctl.BackColor = bgColor
                     validar_campo = True
                Else
                    ctl.BackColor = vbWhite
                End If
             End If
 
        Case Else
     ' No hacemos nada
    End Select
  Next
 
Exit Function
hay_error:
   MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "Error en la función validar_campo"
 
End Function

La puede llamar eel evento Grabar registro. Algo como .

1
2
3
4
If validar_campo = True Then
      MsgBox "Falta información obligatoria", vbInformation, "Cuidado..."
          Exit Sub
    End If
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