Controlar que un campo no sea nulo ni cero antes de guardar

Espero puedan ayudarme y desde ya muchas gracias

Les comento tengo un botón en un formulario que controla que algunos campos tengan valores. Los campos de texto me los controla sin problemas.

Ahora bien quiero que cuando el último campo sea cero o nulo me avise y luego me devuelva al formulario de lo contrario que grabe ese campo. El campo que quiero controlar es "RC" que copia el valor del campo "RecursoCosto" . El código se me fue complicando porque incluye una selección y no logro que funcione como deseo, espero me pueda ayudar. Cuando ejecuto el comando me avisa que el valor no puede ser cero pero luego me aparece un aviso, y no se como volver el foco a algún control del subformulario. Si no es nulo o cero lo graba sin problemas. Espero me puedan ayudar.

El código es el siguiente 

Private Sub Guardar_Click()

If IsNull(Me.RecursoTipo.Value) Then
MsgBox "Debe Ingeresar un Tipo de Recurso", vbCritical, "SIN DATOS"
Exit Sub
End If
If IsNull(Me.RecursoNombre.Value) Then
MsgBox "Debe Ingeresar un Nombre de Recurso", vbCritical, "SIN DATOS"
Exit Sub
End If
If (Me.RC = "0") Or IsNull(Me.RC.Value) Then
MsgBox "El valor no puede ser CERO, revise los campos anteriores", vbCritical, "SIN DATOS"
DoCmd.SelectObject acForm, "F3RecursoCostoAlta"
DoCmd.GoToControl "RecursoTipo"
Else: DoCmd.RunCommand acCmdSaveRecord
Exit Sub
End If

Select Case Form!RecursoTipo
Case "1"
Dim vSub As Currency
vSub = Me.SFT4Recurso2Detalle.Form.CostoRemuneraciónPorHora.Value
Me.RecursoCosto.Value = vSub
Case "2"
Dim vSu2 As Currency
vSu2 = Me.SFT4Recurso2Detalle2.Form.CostoRemuneraciónPorHora.Value
Me.RecursoCosto.Value = vSu2
Case "3"
Dim vSu3 As Currency
vSu3 = Me.SFT4Recurso2Detalle3.Form.CostoRemuneraciónPorHora.Value
Me.RecursoCosto.Value = vSu3
End Select
End Sub

1 respuesta

Respuesta
2

Así, a bote pronto puedes poner algo así como

If isnull([cuadroquesea]) or cuadroquesea="0" then

Msgbox"El control que sea no puede quedar vacío"

Docmd. Cancelevent

end if

Muchas gracias por responder tan rápido, pero ahora no se me graba el registro:

If isnull([cuadroquesea]) or cuadroquesea="0" then

Msgbox"El control que sea no puede quedar vacío"

Docmd. Cancelevent

Else: DoCmd.RunCommand acCmdSaveRecord

end if

Alguna sugerencia???

Por partes, en Access, si no le dices nada en contra siempre te guarda lo que hayas escrito en un control.

Si tengo una tabla como la imagen

Y tengo un formulario

Si dejo vacío el cuadro de texto País y pulso el botón me sale el mensaje, pero si en País pongo España y lo pulso

Y el código del botón es simplemente

If IsNull([Pais]) Then
MsgBox "El cuadro de texto Pais no puede quedar vacio", vbOKOnly, "Que lo sepas"
DoCmd.CancelEvent
Else
DoCmd.RunCommand acCmdSaveRecord
End If

También tienes una forma muy simple, que es poner el campo de la tabla como Requerido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas