** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Campo fecha posterior al último almacenado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCampo fecha posterior al último almacenado

 Responder Responder
Autor
Mensaje
JaviP Ver desplegable
Nuevo
Nuevo


Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
Enlace directo a este mensaje Tema: Campo fecha posterior al último almacenado
    Enviado: 11/Febrero/2020 a las 13:46
Buenos días tengo un formulario para hacer facturas con un campo Fecha Factura que lo relleno de forma manual, necesito que en ese campo la fecha siempre sea posterior a la de la última factura que se almacena en la tabla Facturas.
¿Alguna idea?
Un saludo
Arriba
Maverick2019 Ver desplegable
Habitual
Habitual


Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 145
Enlace directo a este mensaje Enviado: 11/Febrero/2020 a las 14:37
Hola
Este cuadro de texto para la fecha de factura ¿es independiente?
Podrías usar el evento Current del formulario para agregar un día al máximo de fecha contenido. Para ellos juega con las funciones DMax y DateAdd (la primera te serviría para obtener el máximo de fecha, la segunda para agregarle un día). Mira la ayuda para más información de éstas funciones.

Salu2,
Arriba
JaviP Ver desplegable
Nuevo
Nuevo


Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
Enlace directo a este mensaje Enviado: 11/Febrero/2020 a las 16:14
Hola, 
Gracias por la respuesta,el valor fecha de factura se almacena en la tabla fecha de factura en el campo fecha, lo que necesito es que al introducir la fecha en el formulario busque en la tabla y no me deje introducir un fecha anterior a la última que aparece en la tabla, si en la tabla la última fecha es 15-2-2020 no pueda meter una factura con fecha 1-2-2020.
Gracias de nuevo
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 11/Febrero/2020 a las 17:29
Te hace falta saber dos cosas.

Por un lado la ultima fecha, y por otro que si es inferior no te deje meterla.

Para saber la ultima fecha.  Algo asi

Dim varFecha As Date
'Sacamos la fecha mas alta
varFecha = DMax("CampoFecha", "TablaFecha")

'MsgBox varFecha

'Verificamos si la fecha indrocucida es la mas alta
If Me.NombreCampo < varFecha Then
MsgBox "La fecha no puede ser menor a las introducidas en tabla. La fecha mas alta es " & varFecha, vbExclamation
Me.Undo
End If
Arriba
JaviP Ver desplegable
Nuevo
Nuevo


Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
Enlace directo a este mensaje Enviado: 12/Febrero/2020 a las 09:19
Hola, 
El código me ha quedado así y consigo que funcione , me lanza el mensaje de error y el MsgBox muestra la última fecha de la tabla pero en el campo fecha del formulario me deja introducir esa fecha aunque sea errónea, ¿dónde cometo el error? Os dejo el código

Private Sub FechaPresupuesto_AfterUpdate()
Dim FechaReg

FechaReg = DMax("[Fecha de Presupuesto]", "TPresupuesto")

If Me.FechaPresupuesto < FechaReg Then
MsgBox "Utima fecha de factura " & DMax("[Fecha de Presupuesto]", "TPresupuesto")

End If
End Sub

Muchas gracias
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 12/Febrero/2020 a las 09:30
Hola

Yo modificarías varias cosas.
-Declararía las variables as Date
-No te haría falta volver a utilizar el DMax en el msgbox, pon la variable que ya tiene ese dato
-Te faltaría Me.Undo para deshacer la operación de la fecha indrocucida si no es valida
Y por ultimo es muy buena costumbre no dejar espacios, ni poner simbolos raros a los nombres de los campos......te evitaran dolores de cabeza.

Private Sub FechaPresupuesto_AfterUpdate()
Dim FechaReg as Date

FechaReg = DMax("[Fecha de Presupuesto]", "TPresupuesto")

If Me.FechaPresupuesto < FechaReg Then

MsgBox "Utima fecha de factura " & FechaReg

Me.undo

End If

End Sub
Arriba
JaviP Ver desplegable
Nuevo
Nuevo


Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
Enlace directo a este mensaje Enviado: 12/Febrero/2020 a las 10:50
Hola Rokoko
Gracias por las recomendaciones, los espacios y demás son errores de principiante. 
Tu código funciona perfectamente pero Me.Undo no me deshace los cambios, también he probado con FechaPresupuesto.Undo y tampoco funciona


Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 12/Febrero/2020 a las 11:14
Si es registro de nueva creacion undo te lo deberia dejar vacio, y si es registro que editas te deberia colocar la fecha anterior guardada, me extraña que no te funcione. No tienes ningun otro codigo que se te ejecute y te guarde del registro antes del undo???
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
Enlace directo a este mensaje Enviado: 12/Febrero/2020 a las 11:38
Yo haría que en el nuevo registro, el control de fecha marcara por defecto la fecha máxima + 1
de esa manera, sabrías cual es la primera fecha válida.

Luego, en caso de cambiar de fecha, por precaución, en el evento de después de actualizar, un código que en caso de que hayas introducido una fecha inferior por error, te avise, y te sustituya lo que has puesto por su valor por defecto es decir, fecha máxima +1
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 12/Febrero/2020 a las 12:54
A mi me funciona, tanto en el evento antes de actualizar como en el de despues de actulizar.
https://www.dropbox.com/s/dtjcri02tu8w5qa/DeshacerRegistroUltimaFecha.rar?dl=0
Arriba
JaviP Ver desplegable
Nuevo
Nuevo


Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
Enlace directo a este mensaje Enviado: 13/Febrero/2020 a las 07:40
No se por que no he conseguido que me funcione el Undo, pero lo he solucionado de manera que en caso de escribir una fecha anterior me devuelva el valor de la última fecha .


Private Sub FechaPresupuesto_AfterUpdate()
Dim FechaReg As Date

FechaReg = DMax("[Fecha de Presupuesto]", "TPresupuesto")

If Me.FechaPresupuesto < FechaReg Then


MsgBox "Utima fecha de factura " & FechaReg


Me.FechaPresupuesto = FechaReg

End If
End Sub

Muchas gracias por todo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable