Autor |
Tema Buscar Opciones del Tema
|
JaviP
Nuevo
Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
|
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
|
|
Maverick2019
Habitual
Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 145
|
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,
|
|
JaviP
Nuevo
Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
|
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
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
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
|
|
JaviP
Nuevo
Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
|
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
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
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
|
|
JaviP
Nuevo
Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
|
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
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
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???
|
|
Antonalo
Asiduo
Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
|
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
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
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
|
|
JaviP
Nuevo
Unido: 04/Febrero/2020
Localización: españa
Estado: Sin conexión
Puntos: 19
|
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
|
|