Formato de fechas en formulario

Tengo una base de datos en access.

Una tabla productos con un campo llamado fechavenci.

Un formulario independiente para alimentar esta tabla.

Dentro de los campos solo necesito obligatorios algunos como son

Codigo de barras

Nombre del producto

Precio de venta

El resto son opcionales.

En el formulario tengo un boton guardar con la siguiente instruccion:

Private Sub btn_guardar_Click()

If IsNull(Me.codigobarras) Or IsNull(Me.Nom_Prod) Or IsNull(Me.Prec_Prod) Then
MsgBox "Faltan los **campos obligatorios del producto", vbInformation, "Registrando Producto"
Exit Sub
End If
CurrentDb.Execute "INSERT INTO tbproductos(codigobarras,Nom_Prod,Prec_Prod,marca,Id_cat,iva,lote,fechavenci) VALUES ( " & Me.codigobarras & ", '" & Me.Nom_Prod & "', " & Me.Prec_Prod & ", '" & Me.Marca & "', " & Me.Id_cat & ", " & Me.IVA & ",'" & Me.Lote & "', " & Format(Me.FechaVenci, "mm/dd/yyyy") & " )", dbFailOnError
'CurrentDb.Execute "INSERT INTO tbproductos(codigobarras,Nom_Prod,Prec_Prod,marca,Id_cat,iva,lote,fechavenci) VALUES ( " & Me.codigobarras & ", '" & Me.Nom_Prod & "', " & Me.Prec_Prod & ", '" & Me.Marca & "', " & Me.Id_cat & ", " & Me.IVA & ",'" & Me.Lote & "', #" & Me.FechaVenci & "# )", dbFailOnError
MsgBox "REGISTRO INSERTADO", vbInformation, "Avíso"
DoCmd.Close acForm, Me.Name
End Sub

Hasta aquí todo bien el problema es que si no pongo una fechavenci me guarda la hora y no la fecha.

1 respuesta

Respuesta
1

Pruebe con este código

Private Sub btn_guardar_Click()
If IsNull(Me.codigobarras) Or IsNull(Me.Nom_Prod) Or IsNull(Me.Prec_Prod) Then
MsgBox "Faltan los **campos obligatorios del producto", vbInformation, "Registrando Producto"
Exit Sub
End If
CurrentDb.Execute "INSERT INTO tbproductos(codigobarras,Nom_Prod,Prec_Prod,marca,Id_cat,iva,lote,fechavenci) VALUES ( " & Me.codigobarras & ", '" & Me.Nom_Prod & "', " & Me.Prec_Prod & ", '" & Me.Marca & "', " & Me.Id_cat & ", " & Me.IVA & ",'" & Me.Lote & "', " & Format(Me.FechaVenci, "\#mm\/dd\/yyyy\#") & " )", dbFailOnError
MsgBox "REGISTRO INSERTADO", vbInformation, "Avíso"
DoCmd.Close acForm, Me.Name
End Sub

Profesor

excelente ya me funciona. pero sucede que al dejar el campo de fechavenci vacio. me sale ese aviso.

y para que funcione correcto debo siempre registrarle una fecha de vencimiento.

pero hay productos los cuales NO tienen fecha de vencimiento.

como lo puedo programar para que no me exija este dato de fecha de vencimiento.

Muchas gracias Profesor.

Si claro tiene razón la fecha es nula entonces se debe detectar si no hay fecha, pruebe con este código:

Private Sub btn_guardar_Click()
If IsNull(Me.codigobarras) Or IsNull(Me.Nom_Prod) Or IsNull(Me.Prec_Prod) Then
MsgBox "Faltan los **campos obligatorios del producto", vbInformation, "Registrando Producto"
Exit Sub
End If
CurrentDb.Execute "INSERT INTO tbproductos(codigobarras,Nom_Prod,Prec_Prod,marca,Id_cat,iva,lote,fechavenci) VALUES ( " & Me.codigobarras & ", '" & Me.Nom_Prod & "', " & Me.Prec_Prod & ", '" & Me.Marca & "', " & Me.Id_cat & ", " & Me.IVA & ",'" & Me.Lote & "', " & Format(Me.FechaVenci, "\#mm\/dd\/yyyy\#") & " )", dbFailOnError
MsgBox "REGISTRO INSERTADO", vbInformation, "Avíso"
DoCmd.Close acForm, Me.Name
End Sub

Observe el IIF(), valida se el campo Me.FechaVenci hay una fecha, en este caso fija la fecha, sino deja "".

Profesor gracias.

en el código que me envía no veo el IIF();  donde lo escribo para la validación??

Que pena le había copiado el código que no era

Private Sub btn_guardar_Click()
If IsNull(Me.codigobarras) Or IsNull(Me.Nom_Prod) Or IsNull(Me.Prec_Prod) Then
MsgBox "Faltan los **campos obligatorios del producto", vbInformation, "Registrando Producto"
Exit Sub
End If
CurrentDb.Execute "INSERT INTO tbproductos(codigobarras,Nom_Prod,Prec_Prod,marca,Id_cat,iva,lote,fechavenci) VALUES ( " & _
Me.codigobarras & ", '" & Me.Nom_Prod & "', " & Me.Prec_Prod & ", '" & Me.Marca & "', " & Me.Id_cat & ", " & Me.IVA & ",'" & Me.Lote & "', " & _
IIf(IsDate(Me.FechaVenci), Format(Me.FechaVenci, "\#mm\/dd\/yyyy\#"), "") & " )", dbFailOnError
MsgBox "REGISTRO INSERTADO", vbInformation, "Avíso"
DoCmd.Close acForm, Me.Name
End Sub

Profesor gracias. pero me sigue saliendo error.

Si puede envíeme la base de datos o la miro por el TeamViwer puede ser mañana a las 9 am

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas