Mensaje en access

Tengo una BBDD de access y necesito que cuando se rellenar el campo CONTESTACIÓN y el campo ESTADO, este en CERRADA, pero solo quiero que me salga un mensaje de aviso.
He probado con esto antes de actualizar el formulario:
If IsNull(Me.CONTESTACION.Value) = False Then
    If valorEstado = "ABIERTA" Then
    MsgBox "TIENE QUE ESTAR CERRADA", vbCritical, "Campo Obligatorio"
        Me.CONTESTACION.SetFocus
        Cancel = True
        End If
        End If

1 Respuesta

Respuesta
1
Si como entiendo lo que te interesa es "que cuando se rellenar el campo CONTESTACIÓN" ¿Por qué lo pones en el evento "antes de actualizar el formulario"? Lógicamente en ese evento no hará nada ya que antes de actualizarlo... pues eso no estará actualizado.
Haz la prueba poniendo el código en el evento "después de actualizar" del campo "CONTESTACION" (pudiera ser que necesitases añadir al principio un "me.refresh")
Por otro lado, "me.contestación.value" es igual que "me.contestación", si no se le indica nada más a Access, ese es el valor que toma por defecto. Y si como creo "valorEstado" es un control del formulario, siempre es mejor ponerlo con el "Me." para que access no se "lie".
Un saludo

Muchas gracias por tu aclaración, solo me falta una cosa, lo he puesto en vez en los datos del campo, lo he puesto en los datos del formulario, y ya me sale el mensaje, lo único que en vez de quedarse en el mismo registro, para que yo pueda modificar el campo Estado, se cambia de registro. Te copio lo que tengo puesto ahora en DESPUÉS DE ACTUALIZAR:
Private Sub Form_AfterUpdate()
If IsNull(Me.CONTESTACION) = False Then
    If Me.Estado = "ABIERTA" Then
    MsgBox "TIENE QUE ESTAR CERRADA", vbCritical, "Campo Obligatorio"
        Me.CONTESTACION.SetFocus
        Cancel = True
        End If
        End If
End Sub
Yo para cambiar de registros uso la barra de desplazamiento de formulario.
Espero puedas ayudarme.
Un Saludo
No se a que registro se te cambia, pero no debería cambiar a ninguno. Por si acaso, lo he recreado en una BD y a mi me deja en el mismo registro y con el foco en CONTESTACIÓN. Mira a ver si no hay algún contro código o evento que este causando que te cambie de registro.
Hola, pues no se si puede haber otro control o no que me haga que no funcione. Te explico un poco más lo que hago, yo relleno el formulario escribo en el campo Contestación y dejo sin cambiar el campo ESTADO, para que me salga el aviso. Pincho en registro siguiente, de la barra de desplazamiento, y me sale el aviso, pero me mueve al siguiente registro, no se me queda en el registro del que sale el aviso. Lo mismo me pasa si pincho en el de registro anterior, final o primero.
Tengo un control parecido para el campo tipología, este control esta en el comando antes de actualizar del formulario y te sale el aviso de que esta vació el campo y no te deja moverte del registro. Te copio lo que tengo en este control.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Nz(Me.Cuadro_combinado46, "") = "" Then
        MsgBox "Tipología esta vacío", vbCritical, "Campo Obligatorio"
        Me.Cuadro_combinado46.SetFocus
        Cancel = True
End If
End Sub 
Por eso cuando empecé a hacer este código para el campo Contestación empecé poniéndolo en Antes de Actualizar
Un saludo.
He estado realizando pruebas y lo que pusiste en el primer mensaje a mi me funciona. Lo otro también, por lo que debes examinar porque, ya que el código es correcto. A mi me deja en el mismo registro.
De todas formas, si cuando se rellena el campo CONTESTACIÓN, el campo ESTADO, debe ser cerrado, ¿Por qué no lo cambias automáticamente? Salvo que el ESTADO dependa de otras variables, evitarías dar un mensaje y tener que volver al registro para cambiarlo a mano.
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas