Access Controlar campos vacíos al enviar datos a una tabla

Amablemente solicito su ayuda con lo siguiente:

Tengo el siguiente código en un botón que al darle click debe controlar que no existan campos vacíos y enviarlos a una o más tablas. La primera vez funciona y me arroja el mensaje de control que dice por favor revise los campos vacíos, pero si vuelvo a oprimir el botón, me graba el registro, obviamente con datos en blanco.

¿Cómo podría corregir la situación para que cada vez que le de click al botón haga la validación y arroje el mensaje?

Como siempre muchas gracias por su colaboración.

Saludos..

Jorgef

Private Sub btnAgregarProductoPDM_Click()
DoCmd.SetWarnings False
'Verifica Campos Nulos e Inserta los productos en la tabla temporal
If Not IsNull(txbCodigoProducto) And Not IsNull(txbDescripcion) And Not IsNull(txbUMedida) And Not IsNull(txbCantidadPDM) Then
DoCmd.RunSQL "insert into t003ProductosPDMTemp (CodigoProductoPDMTemp, DescripcionProductoPDMTemp, UnidadMedidaProductoPDMTemp, CantidadProductoPDMTemp) " _
& " select forms!frmPDM!txbCodigoProducto, forms!frmPDM!txbDescripcion, forms!frmPDM!txbUMedida, forms!frmPDM!txbCantidadPDM from t099Registros;", -1
'Muestra los productos agregados al PDM
lbxProductosPDM.RowSource = "SELECT [t003ProductosPDMTemp].[idProductosPDMTemp], [t003ProductosPDMTemp].[CodigoProductoPDMTemp], [t003ProductosPDMTemp].[DescripcionProductoPDMTemp], " _
& " [t003ProductosPDMTemp].[UnidadMedidaProductoPDMTemp], [t003ProductosPDMTemp].[CantidadProductoPDMTemp] from t003ProductosPDMTemp"
Else
MsgBox "Por Favor Revise los Campos Vacios", vbCritical, "Serticol"
End If
txbBuscaDescripcion = ""
txbCodigoProducto = ""
txbMarcaProducto = ""
txbUMedida = ""
txbReferenciaProducto = ""
txbCantidadPDM = ""
txbDescripcion = ""

End Sub

1 respuesta

Respuesta
2

Honestamente no he mirado todo el código porque me parece excesivamente extenso. Si lo que quieres es comprobar que no se dejen cuadros de texto vacíos, lo puedes hacer de muchas formas, por ejemplo, basta con poner en el código del botón

dim forero as control

for each forero in form.controls

If forero.controltype=actextbox then

if isnull([forero]) then

msgbox"Tienes cuadros en blanco",vbokonly,"O los llenas o no pasas"

forero.setfocus

exit sub

end if

end if

next

Docmd...(lo que quieres que haga si están todos rellenos

Así, vamos a suponer que te has dejado dos cuadros de texto en blanco. Al pulsar el botón te aparece la ventana y al pulsar aceptar el cursor se "queda" en el primer cuadro de texto que tengas en blanco. Lo rellenas y si vuelves a pulsar el botón se repetirá este proceso hasta que todos los cuadros estén rellenos.

Hola Icue, muchas gracias por responder... y funciona bien, pero si tuviera por ejemplo el textbox1 y el textbox8 si pudiesen estar en blanco como puedo excluir estos dos controles? (por ejemplo el campo observaciones puede estar en blanco)

gracias por la claridad

saludos

jforero

Como te decía lo puedes hacer de muchas formas, todo depende de como esté construido el formulario y lo que se quiere. Por ejemplo, supongamos que tengo el formulario con los controles Texto1 y texto8 vacíos, entre otros.

Si pulso el botón

Cuando acepto, hago que te ponga en amarillo el cuadro de texto al que se va y escribo algo

Se ha ido al control texto3 porque estaba vacío. Escribo algo y si vuelvo a pulsar el botón

Escribo algo

Y si pulso el botón, como el 7 ya tiene datos y en 8 me da igual

En la imagen no sale pero el cursor se ha ido al texto7

En este caso, y siguiendo lo que has dicho, el código del botón es

Private Sub Comando17_Click()
Dim i As Integer
Dim forero As Control
 For i = 2 To 7
     Set forero = Controls("Texto" & i)
     If IsNull([forero]) Then
     MsgBox "Tienes que rellenarlo", vbOKOnly, "No te aviso más"
     forero.SetFocus
     Exit Sub
     End If
Next i
End Sub

Después de next i, tendrías que poner lo que quieres hacer una vez comprobado todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas