Poner un número en un campo de access de tipo fecha y que salga la fecha del mes y año actual automáticamente

Creo que no tiene mucha dificultad, pero no me acuerdo como se realiza. Lo que pretendo es que en un campo fecha ponga por ejemplo el número 1 y que automáticamente me ponga a día de hoy 01/12/2019 y que si pongo el mismo número 1 dentro de un mes que ponga 01/01/2020, osea que automáticamente me ponga por defecto el año y mes actual. Mi idea en principio es meter ese campo desde un formulario.

Respuesta
2

Si solo lo quieres mostrar en un cuadro de texto de un formulario, puedes poner como origen de control algo como:

=[Campo] & "/" & Mes(Fecha()) & "/" & Año(Fecha())

Si el dato lo quieres guardar en la tabla, en el evento "después de actualizar" del campo en el que escribes:

Me.NombreCampoFecha=Me.CampoNumero & "/" & Month(Date) & "/" & Year(Date)

o también:

Me.NombreCampoFecha=DateSerial(Year(Date),Month(Date),Me.CampoNumero)

Releyendo tu pregunta, veo que la he interpretado mal, tu quieres escribir y que te autocomplete la fecha en el mismo campo.

La solución es prácticamente la misma, poner el código en el evento "después de actualizar" haciendo referencia al valor del mismo campo:

Me.NombreCampoFecha=DateSerial(Year(Date),Month(Date),Me.NombreCampoFecha)

Pero ¡ojo! en el campo que escribes no puedes tenerle definido un formato de fecha, puesto que no te dejará dejar una fecha "a medias".

Me pone que no encuentra el objeto me. Igual hago algo mal.

¿Cómo no va a encontrar el objeto Me. si se refiere al propio formulario...:?

¿Dónde estás poniendo ese código, en el editor de VBA (donde tiene que ir) o en otro lado (que no es correcto)?

Yo puse el código en el evento al actualizar  el campo FECHA (que es el que quiero que pulsando 1 me ponga 01/12/2019 a día de hoy). Dicho campo lo puse como dijiste de tipo número en su tabla de origen (tabla REGISTROS).

Private Sub Dia_AfterUpdate()
Me.Fecha = DateSerial(Year(Date), Month(Date), Me.Fecha)
End Sub

Si pongo el número 1 me pone el número 43800 y me da el error de Microsoft Acess no encuentra el objeto 'Me'

Vamos a ver, si el campo en el que escribes el número se llama Dia (lo que deduzco del código), y quieres que en ese mismo campo te ponga la fecha, en el código el campo que tienes que usar es Dia y no Fecha (que ni sé si existe siquiera en la tabla)

Por otro lado, ya deberías de saber que las fechas son números con un formato "especial". Si el campo Día en al tabla lo tienes como número, te la escribirá como número, si lo tienes como texto, te escribirá una fecha, pero si lo tienes como fecha, te dará un error, porque no te deja escribir solo un número...

El número 43800 el el 01/12/2019, por lo que el código funcionar, funciona...

http://www.filebig.net/files/sqeDxTgG32 

Lo del error del Me casi seguro que es porque tienes algo mal en alguna parte de tu código. Depúralo a ver qué errores te marca y soluciónalos.

¡Gracias! Como siempre en todo tienes razón, el código tenía al actualizar formulario el código mal. Por otra parte, puse el campo tipo texto y genial pone la fecha correctamente. Lo dicho muchas gracias.

Ahora tengo un problema técnico ... pulsas cualquier número y pone correctamente el día del año, el mes actual y el año actual. Pero si quiero modificar el día, mes o año me da error 13 en tiempo de ejecución. ¿hay alguna forma de omitir el error?

Si quieres modificar el día, tendrás que borrar todo lo que hay escrito en el cuadro de texto, para que el código se encuentre con solo un número y pueda crear la fecha entera.

Y si no te sirve, una "chapuza" sería añadirle al principio del código un "on error resume next"

¡Gracias! Jeje esa "chapuza" era lo que buscaba. De hecho ya la puse antes pero no me funcionaba al no ponerla al principio del código (que burriño soy). Sé que es una chapuza pero en este caso es sólo por si hay que modificar un día de otro mes o año, sino no podría modificarlo, si borro todo y pongo un número me saldrá el de este mes y año, pero no el de otro. Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas