jueves, 23 de enero de 2014

Complemento para generar formularios más funcionales en Access usando Macros

El propósito de esta publicación es dar una lección formativa, vía Macros, que permita complementar la creación y edición de los formularios en Access. En lo puntual, se mostrará el paso a paso de la habilitación de preguntas que se encuentran anidadas o que las respuestas de una de ellas estén condicionadas a las de otra pregunta. Esto te permitirá generar mejores formularios, más funcionales y coherentes con las exigencias de los mismos. 

Introducción y definiciones previas


Access se ha transformado en una herramienta sencilla de usar, que permite alojar datos y crear aplicaciones de base de datos por medio de sistemas y funciones especializadas para ello. Hoy por hoy, se dice que este representa más que un mantenedor de bases de datos y se impone como una herramienta de gestión fundamental para las empresas del nuevo siglo, ya que ha permitido la creación de programas computacionales a medida que se ajustan a las problemáticas y necesidades coyunturales de las organizaciones actuales, permitiendo el aumento de la eficiencia y eficacia en el trabajo. Cabe mencionar que Access resulta el programa medular de este post.

Por otro lado, el análisis y la administración de datos han crecido notablemente el último tiempo. Por lo mismo, para lograr el manejo óptimo de las estructuras de orden, procedimientos y tareas, se han desarrollado herramientas que permiten automatizar un grupo de órdenes escritas. Las Macros son un conjunto de instrucciones escritas que permiten automatizar y llevar a cabo tareas complejas. Muchas veces, basta tan sólo dar un click a un botón. Macros opera bajo el lenguaje de programación Visual Basic (VBA), el cual resulta elemental para las herramientas de Excel y otros programas de Microsoft Office. Se debe tener presente que manejar esta herramienta representa una ventaja comparativa en el vertiginoso mundo de los negocios.

A continuación se entrega una secuencia lógica, usando Macros, sobre un objeto de base de datos que puede utilizarse para escribir, modificar y mostrar datos de una consulta o de una tabla, es decir, un formulario. En esta lección, se enseñará a habilitar preguntas anidadas y condicionadas a la(s) respuesta(s) de otra pregunta. Primero, resulta útil revisar ciertas estructuras que encontramos en lenguaje VBA, las cuales serán fundamentales para el correcto entendimiento del contenido medular de este post. Tener en cuenta que el contenido presente en esta publicación requiere un nivel intermedio de uso de formularios en Access y Macros

Estructuras Condicionales

En Visual Basic para Aplicaciones (VBA) existen dos tipos de estructuras clásicas, las del tipo condicional y las reiterativas. Para efectos de esta publicación, sólo será necesario detallar la primera. Ahora bien, se mostrará principalmente su sintaxis y lógica, los aspectos más teóricos y elementales exceden el propósito de este post y, por lo tanto, representa labor del lector ahondar en estos contenidos.
Las estructuras condicionales son instrucciones de programación que tienen como propósito evaluar si una condición es verdadera (True) o falsa (False) y posteriormente permiten especificar instrucciones a seguir según el resultado de la condición. Se debe tener presente que este tipo de estructura cumple con las propiedades de Operación Lógica. Además, para usar más de una condición, podemos hacer uso de las operaciones Or en el caso de la conjunción disyuntiva (O) y el And  para la conjunción copulativa (Y). 

La estructura condicional If <cond> Then … End If  se compone de la forma que se muestra en la Ilustración I adjunta:


Observaciones:

  • Sub y End Sub indican el inicio y el final de la Macro de nombre “estructuras_condicionales”.
  • Or  puede ser reemplazado por And  si se quiere imponer estrictamente el cumplimiento de varias sentencias a la vez.
  •  Si va una sola condición, no se imponen los operadores lógicos (And y Or).
  • La Ilustración I muestra que si se cumple lo que se impone después del If, entonces (Then) se ejecutarán las sentencias seguidas de esta. En otro caso, se ejecutarán las que se encuentren luego de Else.
  • Se sugiere al lector ampliar los contenidos y buscar el segundo tipo de estructura condicional: Select Case, lo que es equivalente a tener un If… End if de forma anidada.

Macro para pregunta con check list de formulario en Access

Nivel de dificultad: Intermedio.

Objetivo: Habilitar pregunta(s) anidada(s) a otra(s) pregunta(s) utilizando una Macro para formulario en Access.

Tal cual se indicó en la primera parte, el principal propósito de esta publicación es dar una lección formativa, vía Macros, que permita complementar la creación y edición de los formularios en Access. En lo puntual, se mostrará el paso a paso de la habilitación de preguntas que se encuentran anidadas o que las respuestas de una de ellas estén condicionadas a las de otra pregunta. Esto te permitirá generar mejores formularios, más funcionales y coherentes con las exigencias de los mismos.

Es un probable que hayas, en más de una oportunidad, utilizado un check list o lista de verificación. Esta permite analizar, comprobar y verificar una lista. El ejemplo que se presenta para mostrar esta Macro, es un formulario de ingreso de un alumno a la base de datos de cierto establecimiento educacional. El módulo de interés es “Antecedentes Escolares”, puntualmente los campos “¿Ha repetido algún curso?” y “Curso que ha repetido”. Luego, se pretende habilitar el campo “Curso que ha repetido” solamente en el caso que el alumno haya repetido algún curso.  Esto último se muestra en la Ilustración II adjunta, en la que se activa una lista desplegable que permite indicar el curso reprobado por el alumno a partir del “sí” de la pregunta “¿Ha repetido algún curso?”.


“Paso a paso” para lograr la Macro

  1. Tener las etiquetas de los campos y las preguntas que deseas que posea el formulario en cuestión.
  2. Inhabilitar la(s) pregunta(s) que buscas anidar a la(s) respuesta(s) de otro campo. En este caso se debe inhabilitar la lista desplegable asociada a “Curso que se ha repetido”.
    -          Formulario en “modo diseño”.
    -          Seleccionar (pinchar) lista desplegable asociada a “Curso que ha repetido”.
    -          Ir a “hoja de propiedades” (ALT+ENTER) de la lista y seleccionar la pestaña “Datos”.
    -          Modificar “” por “No” en opción “habilitado” (ver Ilustración III adjunta). 


  3. Programar Macro sobre check list asociado a la pregunta “¿Ha repetido algún curso?” y automatizar orden de habilitar lista desplegable de “Curso que ha repetido” en caso de que la respuesta a la primera pregunta sea afirmativa.
    -          Formulario en “modo “diseño”.
    -          Seleccionar el check list en cuestión.
    -          Ir a “hoja de propiedades” (ALT+ENTER) de la lista y seleccionar la pestaña “eventos”.
    -          Hacer click sobre botón que contiene 3 puntos suspensivos en su interior (“…”) en la opción “Al hacer click” (primera fila de opciones de la pestaña “eventos” de la “hoja de propiedades”).  Esto permite especificar la forma en que el evento dará inicio a la automatización buscada. Se abrirá el cuadro “elegir generador”, el que ofrece 3 alternativas para crear el evento.  Debe pinchar la opción “generador de código” para esta Macro. Presione “aceptar” (ver Ilustración IV adjunta).
    -          El paso anterior abrirá una ventana que permitirá programar la Macro en lenguaje VBA. Ahora es cuando le será útil haber aprendido la sintaxis y uso de las estructuras condicionales (primera parte de esta publicación).
    -          Finalmente, la Macro se computa como muestra la Ilustración V adjunta. Luego, se cierra la ventana VBA y la automatización está terminada. Se cambia a “vista formulario” y se chequea que la Macro funcione.

    Observaciones a partir de la Ilustración V:

  • En (1) se indica que si el chek list relacionado con “¿Ha repetido algún curso?” es “” (True), entonces se ejecutará la sentencia especificada en (2). Notar que para aludir al check list, se invoca a través de su nombre luego de “Me.”.
  • La sentencia de (2) permite habilitar la lista desplegable asociada al “Curso que ha repetido” (recordar que previamente se había inhabilitado) agregando “.Enabled =  True” luego de “Me.” y el nombre de la lista desplegable (en este caso “Cuadro_combinado163”).   
  • Las sentencias que se especifican después del Else, se ejecutarán en caso que no se active el check list (False de (1)). De esta forma, se ejecutarán las sentencias (3) y (4).
  • Tener presente que se debe terminar con el comando End If para computar la Macro
---------------------------------------------------------------------------------------------------------------------
Y este es el final de esta lección educativa que buscaba, vía Macros, complementar la creación y edición de los formularios en Access. Se mostró el paso a paso de la habilitación de preguntas que se encuentran anidadas o que las respuestas de una de ellas estén condicionadas a las de otra pregunta. Esto te permitirá generar mejores formularios, mucho más funcionales y te dará una ventaja comparativa entre tus colegas. 

¡Queda pendiente subir un link de descarga del archivo para que puedas ahondar los contenidos y practicar con el archivo adicional!

Slds!

Descargar Archivo

No hay comentarios:

Publicar un comentario