Hay cientos de formas de incluir un calendario en una aplicación de Access pero creo que lo interesante es que sea sencillo de incluir y de manejar posteriormente. Lo primero que tenemos que tener es una base de datos para trabajar. Yo he creado una sencillita de ejemplo que podréis descargaros para hacer las pruebas que queráis al final del tutorial. Nuestra base de datos debe tener una tabla en la que haya un campo fecha que deberá estar presente también en el formulario sobre el que vayamos a trabajar.
|
| |
Abrimos nuestra base de datos y posteriormente el formulario en el que queramos incluir el calendario. Eso sí lo abrimos en modo diseño para poder realizar las modificaciones necesarias.
|

|
Luego seleccionamos el campo fecha en el que queremos incluir un calendario y hacemos clic con el botón derecho para seleccionar posteriormente ‘Propiedades’.
|

|
En la ventana PROPIEDADES nos dirigimos a la pestaña DATOS para conocer (si no lo sabéis ya) cuál es el origen de la información y cómo se llama ese campo en el formulario. En nuestro caso tanto el origen de datos como el campo de formulario se llaman ‘FECHA_FACTURA’. En la imagen inferior la zona marcada en negro hace referencia al campo de la tabla que es origen de los datos que se muestran y en la pestaña superior izquierda el nombre del campo. Recordamos esta información porque después nos hará falta…
|
|
Volvemos a hacer clic con el botón derecho del ratón sobre el campo que contiene la fecha pero esta vez usamos la opción Cambiar a > Cuadro combinado. De esta forma estaremos modificando el tipo de campo de formulario.
|
|
Ahora lo que necesitamos es insertar el calendario en nuestro formulario. Para ello usamos el botón ‘Más controles’ del Panel de Herramientas (poner imagen). Se nos desplegará un menú y deberemos elegir el Control de Calendario. Dependiendo de la versión de Access que estés utilizando encontrarás una versión u otra. En mi caso estoy trabajando con Access 2003 y esta versión incluye el Control de Calendario 11.
|
|
Automáticamente el cursor habrá cambiado de aspecto y en lugar de una flecha será un pequeño martillo. Haz clic cerca del campo fecha y a continuación arrastra el cursor hasta cubrir la zona que desees para tu calendario. No te preocupes si aparece debajo de otro elemento como me ocurre a mí ya que conseguiremos que nuestro calendario esté oculto mientras no lo necesitemos y cuando vayamos a hacer uso de él aparecerá encima del resto de elementos.
|
|
Debería quedar algo parecido a lo que aparece en la siguiente imagen.
|

|
El siguiente paso que debemos dar es hacer que nuestro calendario sea invisible para que no nos estorbe mientras no sea necesario. Luego, a través de código, haremos que aparezca y desaparezca a voluntad. Para ello abrimos el Panel de propiedades del calendario y en la pestaña ‘Todas’ establecemos el valor de la propiedad ‘Visible’ en 'No' (False) para ocultarlo.
|
|
Sin cerrar el Panel de propiedades abrimos la pestaña ‘Eventos’ y en la propiedad ‘Al actualizar’ hacemos clic sobre el icono que aparece con tres puntitos a su derecha.
|
|
Se nos abrirá de inmediato una pequeña ventana con tres opciones. Seleccionaremos la opción ‘Generador de código’.
|
|
Automáticamente se nos abrirá la ventana de Visual Basic. Access aunque es bastante completo no abarca todas las posibilidades ni incluye todas las herramientas que un desarrollador puede necesitar. Por ese motivo da la opción de crear manualmente esas aplicaciones a través del lenguaje Visual Basic. Esta misma opción está incluida también en Microsoft Word y en Microsoft Excel. Para poner en práctica nuestro ejemplo no necesitarás conocer este lenguaje de programación pero te invito a que busques información en la Red y que realices todas las pruebas que quieras con los ejemplos. Seguimos… en la ventana de Visual Basic aparecerá ya un texto escrito. Hace referencia al evento ‘Al actualizar’ (Update) pero realmente no es el evento que nos interesa. El evento que necesitamos es ‘Al hacer clic’ (Click) pero como podréis comprobar no aparece entre los eventos a elegir del Control de calendario. Para utilizar el evento que nos interesa desplegamos la lista que aparece en la parte superior derecha de la ventana y lo seleccionamos.
|
|
Automáticamente se insertará dos líneas de código entre las cuales insertaremos el código necesario para conseguir nuestro objetivo. Las líneas de código que aparecían en un principio podemos ignorarlas o borrarlas. En el evento Click introducimos el texto que aparece en la imagen inferior. Con la primera línea (FECHA_FACTURA.Value = Calendar0.Value) establecemos que cuando hagamos clic sobre el calendario traspasemos el valor señalado al campo de la fecha. Tenéis que tener claro que deberéis utilizar el nombre que tenga este campo en vuestro formulario.. Recuerda que en un paso anterior vimos cómo se llamaba ese objeto del formuario. Con la segunda línea de código (FECHA_FACTURA.SetFocus) hacemos que el cursor (el foco) regrese al campo FECHA_FACTURA. Por último con la tercera línea (Calendar0.Visible = False) volvemos a ocultar el calendario porque no lo necesitaremos de nuevo. ¿Ocultarlo de nuevo? Tienes razón lo habíamos ocultado antes y ahora volvemos a hacerlo. ¿Raro verdad? Tranqui, ahora verás porqué lo hacemos así.
|
|
Una vez introducido el código para este evento necesitaremos un segundo evento. Este será el que consiga que cuando hagamos clic en el desplegable del campo combinado donde aparece la fecha nos muestre nuestro calendario. Para ello utilizamos los desplegables que se encuentran en la parte superior de la ventana de Visual Basic. En el desplegable de la izquierda seleccionamos el nombre del campo donde está la fecha (en nuestro caso FECHA_FACTURA) y en el de la derecha el evento ‘MouseDown’.
|

|
| Igual que antes se incluirán dos líneas de código entre las que deberemos teclear el código necesario. Antes hemos introducido el código que vamos a utilizar con el objeto calendario y ahora vamos a introducir el código que dirá el comportamiento que tendrá el objeto campo 'FECHA_FACTURA'. En la imagen inferior podrás ver el código que debes introducir. En la primera línea de este nuevo evento (Calendar0.Visible = True) le diremos a Access que cuando hagamos clic en el campo fecha muestre el calendario porque, como recordaréis, establecimos el valor como oculto en el Panel de propiedades… ¿ves como no me había olvidado?. En la segunda línea (Calendar0.SetFocus) establecemos el foco en el calendario ya que hasta ese momento se encontraba en el campo fecha. Por último en la tercera línea (Calendar0.Value = FECHA_FACTURA.Value) le decimos a Access que, en el caso de que el campo fecha tenga algún dato, lo utilice para mostrarlo en el calendario. De esta forma si hace referencia a una fecha de hace dos años nos mostrará el calendario de ese mes en concreto y no el actual. Eso es muy útil para realizar comprobaciones a posteriori o para cambiar la fecha de un día a otro teniendo siempre visible el calendario correspondiente a esa fecha. |
|
Una vez que hemos introducido todo el código le damos a grabar y cerramos la ventana de Visual Basic. Ahora sólo nos queda probar nuestro ejemplo. Para ello guardamos todos los cambios que hemos realizado y a continuación hacemos clic en el botón Vista para pasar de vista diseño a vista formulario. Si todo ha ido bien y habéis seguido fielmente todos los pasos, nuestro formulario se mostrará aparentemente sin demasiados cambios… no hay noticias del calendario por ninguna parte. Sin embargo, si hacemos clic sobre el campo fecha aparecerá emergente nuestro querido calendario. Para seleccionar una fecha sólo tendremos que seleccionar el mes y el año y luego hacer clic en el día que queramos. Automáticamente el calendario desaparecerá y la fecha se introducirá automáticamente en nuestro campo |

|
| Bueno, espero que este sencillo tutorial os haya gustado. Seguramente habrá personas para las que este tutorial sea una simpleza y una pérdida de tiempo esta explicación (creedme hay gente así). Creo que quizás estas personas no sean tan listas ni sepan tanto como piensan si han olvidado tan pronto que no nacieron sabiendo y que hay personas que necesitan de este tipo de ayudas (al igual que ellos necesitaron de ayudas similares). A estos listillos sólo recordarles que cuanto más sabio eres mayor conciencia tienes de no conocer en su totalidad lo que te rodea. Al resto lo dicho, espero que os haya sido de utilidad y espero también vuestras críticas, recomendaciones y/o peticiones sobre otros posibles tutoriales. Gracias por haberme leído. |
| |
DESCARGAR BASE DE DATOS DE EJEMPLO
|
Si tenéis cualquier sugerencia o duda podéis contactar conmigo en... |
ATENCIÓN: Debido a algunas peticiones al respecto se ha ampliado este tutorial. Si quieres acceder a la segunda parte haz CLIC AQUÍ .
|
| |