Access - Validaciones en formularios ACCESS

 
Vista:

Validaciones en formularios ACCESS

Publicado por Miguel Angel (2 intervenciones) el 21/02/2006 08:52:57
Hola, muy buenas.... Necesito por favor que me ayudéis:

----- Tengo una tabla en Access con una serie de campos y necesito controlar cuando modifico el campo de Estado que otros dos campos no puedan estar a blancos, deben tener un valor bien que está en un combo o en otra tabla.

Si cambio campo Estado a valor "Desarrollo" a través del formulario hay dos campos de esa misma tabla y de ese mismo registro que no pueden contener blancos: los campos Técnico y Auditor. Los valores posibles están en un combo o una tabla, aunque prefiero tener una tabla para su mantenimiento. ¿como puedo hacerlo?

------Otra validación que tengo que realizar es que el campo de fecha de recepción no sea mayor que la fecha de validación del registro anterior:

Ejemplo: cod-id documento ciclo fecha recepción fecha validación

5 2 1 15-02-06 17-02-06
5 2 2 19-02-06 21-02-06
5 2 3 20-02-06

es decir que el 20-02-06(fecha recepción ciclo 3) no puede ser inferior al 21-02-06 (fecha de validación del ciclo 2) de ese mismo documento y código. ¿como se hace esto?

------Otra validación: todas las fechas de la tabla deben estar validadas contra una tabla que existe y que contiene las fechas del calendario laboral. ¿como puedo hacerlo?

-----Dentro de un mismo registro la fecha de validación debe ser posterior o igual a la de recepción. ¿como puedo hacerlo?

Os agradezco muchísimo vuestra ayuda. Que tengáis un buen día...
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

Validaciones de campos y fechas en una tabla

Publicado por Alejandro (4142 intervenciones) el 20/06/2023 22:39:09
1. Validación de campos no nulos al modificar el campo Estado:
- Abre el formulario en modo diseño.
- Selecciona el campo Estado y ve a la pestaña "Eventos".
- Haz doble clic en el evento "Después de actualizar".
- En el editor de código VBA, agrega el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Estado_AfterUpdate()
    If Me.Estado = "Desarrollo" Then
        If IsNull(Me.Técnico) Then
            MsgBox "El campo Técnico no puede estar en blanco.", vbExclamation, "Validación de campo"
            Me.Undo
            Exit Sub
        End If
        If IsNull(Me.Auditor) Then
            MsgBox "El campo Auditor no puede estar en blanco.", vbExclamation, "Validación de campo"
            Me.Undo
            Exit Sub
        End If
    End If
End Sub

Este código verifica si el campo Estado se establece como "Desarrollo" y luego comprueba si los campos Técnico y Auditor están en blanco. Si alguno de ellos está en blanco, muestra un mensaje de error y deshace la actualización.

2. Validación de fechas en relación a registros anteriores:
- Abre el formulario en modo diseño.
- Selecciona el campo Fecha Recepción y ve a la pestaña "Eventos".
- Haz doble clic en el evento "Antes de actualizar".
- En el editor de código VBA, 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
Private Sub Fecha_Recepción_BeforeUpdate(Cancel As Integer)
    Dim strSQL As String
    Dim rs As DAO.Recordset
    Dim fechaValidacion As Date
 
    strSQL = "SELECT [Fecha Validación] FROM TuTabla WHERE Cod = " & Me.Cod & " AND IDDocumento = " & Me.IDDocumento & " AND Ciclo = " & Me.Ciclo - 1
    Set rs = CurrentDb.OpenRecordset(strSQL)
 
    If Not rs.EOF Then
        fechaValidacion = rs("Fecha Validación")
        If Me.Fecha_Recepción < fechaValidacion Then
            MsgBox "La fecha de recepción no puede ser anterior a la fecha de validación del ciclo anterior.", vbExclamation, "Validación de fecha"
            Me.Undo
            Exit Sub
        End If
    End If
 
    rs.Close
    Set rs = Nothing
End Sub

Este código verifica si existe un registro anterior para el mismo Cod, IDDocumento y Ciclo y compara la Fecha Recepción con la Fecha Validación del ciclo anterior. Si la Fecha Recepción es anterior, muestra un mensaje de error y deshace la actualización.

3. Validación de fechas contra una tabla de calendario laboral:
- Abre el formulario en modo diseño.
- Selecciona el campo Fecha Recepción y ve a la pestaña "Eventos".
- Haz doble clic en el evento "Antes de actualizar".
- En el editor de código VBA, agrega el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Fecha_Recepción_BeforeUpdate(Cancel As Integer)
    Dim strSQL As String
    Dim rs As DAO.Recordset
    Dim fechaCalendario As Date
 
    strSQL = "SELECT [Fecha] FROM TablaCalendario WHERE [Fecha] = #" & Format(Me.Fecha_Recepción, "yyyy/mm/dd") & "#"
    Set rs = CurrentDb.OpenRecordset(strSQL)
 
    If rs.EOF Then
        MsgBox "La fecha de recepción no coincide con una fecha válida del calendario laboral.", vbExclamation, "Validación de fecha"
        Me.Undo
        Exit Sub
    End If
 
    rs.Close
    Set rs = Nothing
End Sub

Este código verifica si la Fecha Recepción existe en la tabla de calendario laboral. Si no coincide con ninguna fecha válida, muestra un mensaje de error y deshace la actualización.

4. Validación de fecha de validación posterior o igual a la fecha de recepción:
- Abre el formulario en modo diseño.
- Selecciona el campo Fecha Validación y ve a la pestaña "Eventos".
- Haz doble clic en el evento "Antes de actualizar".
- En el editor de código VBA, agrega el siguiente código:

1
2
3
4
5
6
7
Private Sub Fecha_Validación_BeforeUpdate(Cancel As Integer)
    If Me.Fecha_Validación < Me.Fecha_Recepción Then
        MsgBox "La fecha de validación no puede ser anterior a la fecha de recepción.", vbExclamation, "Validación de fecha"
        Me.Undo
        Exit Sub
    End If
End Sub

Este código verifica si la Fecha Validación es anterior a la Fecha Recepción. Si es anterior, muestra un mensaje de error y deshace la actualización.

Estas soluciones te ayudarán a realizar las validaciones necesarias en tu base de datos de Access. Recuerda que debes agregar el código en los eventos correspondientes de los formularios.
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