Mostrando entradas con la etiqueta Visual Basic. Mostrar todas las entradas
Mostrando entradas con la etiqueta Visual Basic. Mostrar todas las entradas

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
Leer más...

miércoles, 21 de marzo de 2012

Excel en Mac: Semejanzas y Diferencias


En la última década, Excel se ha potenciado como una de las principales hojas de cálculo a nivel mundial. Su flexibilidad, potencia y usabilidad lo consolidan como la herramienta más potente en cuánto a información para la toma de decisiones a nivel gerencial, expandiéndose en diversos ámbitos como la psicología, biología, matemática, etc. Su éxito ha sido tal que se ha diseñado para los distintos sistemas operativos existentes en el mercado, especialmente para los 2 más consolidados: Windows y Mac. Es cierto que muchas de las aplicaciones del programa son similares en ambos sistemas operativos, no obstantes existen ciertas diferencias.

En las versiones que han surgido a principios de nuestra década (Excel 2004 para Mac y 2003 para Windows) es donde podemos encontrar el mayor número de diferencias, de las cuales podemos mencionar las más importantes como: Excel para Mac no admite el uso de controles de ActiveX, las cuales son ocupadas para el uso de páginas dinámicas, por ello el cuadro de herramientas barra de herramientas no está disponible, lo que hace dificultoso el trabajo de una macro con Visual Basic; la modificación de las plantillas se realiza solamente guardando los cambios en Excel para Windows, en cambio para Mac requiere mantener la tecla MAYUS presionada mientras se realicen los cambios; el diseño es distinto, los íconos no aparecen a la izquierda de los comandos de menú como si se presenta en Windows.

Interfaz Excel Mac 2004

Interfaz Excel Windows 2003

Existen también diferencias transversales a todas las versiones que son ineludibles, ello por el hardware de los distintos sistemas operativos y por ende, distintas teclas que hacen variar los comandos de acceso de Office. Un ejemplo claro es la fijación de celdas, que en Excel se ocupa anteponiendo el símbolo ‘$’ a la coordenada de cierta celda, para Windows basta con presionar F4, no obstante este mismo no resulta es Mac, por lo que hay que presionar la tecla +T para obtener iguales resultados.

En cuanto a las semejanzas, podemos encontrar similitud en las diversas fórmulas que ofrece el programa en sus diversas secciones: aritméticas, comparación, combinación y referencia, dentro de las cuales  las consonantes y operadores funcionan de igual manera (ejemplo de ello es el signo ‘*’ que funciona como multiplicador), además de su sintaxis. Podemos encontrar además el uso de gráficos en todas sus versiones, tablas dinámicas, filtros y el uso de imágenes y elementos predefinidos. Si bien existen mejoras de una versión a otra de estos ítems, la idea original se mantiene, por lo que siguen siendo provechosas herramientas para extraer información.

En cuanto a las últimas versiones de Excel para Mac, se puede notar la falta de herramientas que si son empleadas en Excel para Windows, ejemplo de ello son: el soporte a Visual Basic, crucial para la programación de macros (no presente en la versión 2008), guías de fórmulas (ausente en la versión 2004) y minigráficos (novedad para la versión 2011) y la interfaz Ribbon,  presente anteriormente en la versión de Excel 2007 para Windows.
Interfaz Excel Mac 2011

Interfaz Excel Windows 2007


En cuanto a las últimas versiones realizadas por Microsoft para sus versiones de Excel 2010 para Windows  y Excel 2011 para Mac, la crítica señala que no solo se ha mejorado notoriamente en las funcionalidades de este último, sino que también las versiones presentan una funcionalidad y manejo muy similar, por lo que trabajar en uno u otro lo hace indistinto al usuario.  Como podemos ver en las imágenes presentadas, la interfaz al usuario es similar en ambos sistemas operativos, las mejoras de Excel 2011 para Mac permite un acceso más fácil y rápido a tareas cotidianas que son requeridas por el usuario y consigo, un mejor provecho de la herramienta para quien desee ocuparlo. En otras palabras, Office para Mac está equiparado con el nivel de Windows, característica que en sus versiones anteriores, por razones de diseño, programación y uso de la herramienta, no se presentaba así, ya que el usuario avanzado seguía prefiriendo la herramienta en el sistema Windows.








Leer más...

miércoles, 11 de enero de 2012

Eventos para Formularios en Access

Un formulario es una de las muchas herramientas que Access pone a disposición de los usuarios con el objetivo de escribir, modificar o mostrar los datos de una tabla o consulta. Para el diseño de estos, Microsoft Access proporciona diferentes elementos, tales como: botones, imágenes, cuadros de listas, cuadros combinados, entre otros. Pero ¿cómo hacemos que ocurra una acción determinada cuando pulsamos un botón, cuando ponemos el ratón sobre una imagen, o pulsamos sobre un menú despegable? La respuesta dice relación con la utilización de eventos, tema que se expone a continuación.

Un
evento es una acción determinada que se produce en o con un objeto particular, donde Access puede responder a una variedad de eventos: clics del ratón, cambios en los datos, formularios que se abren o se cierran, y muchos otros.


sta herramienta se puede aplicar tanto a los formularios como a los informes. Pero donde mayor utilidad posee es en los formularios al ser éstos herramientas de entrada/salida, mientras que los informes son sólo herramientas de salida.
Creación de un evento
Para crear un evento asociado a un objeto de un formulario, basta con realizar los siguientes pasos:
1. Abrir el formulario en modo de diseño.
2. Abrir la ventana de propiedades en la hoja de propiedades del objeto deseado seleccionar la pestaña Eventos.

3. Elegir el tipo de código deseado: macros, VBA o generador de código, siendo este último el más interesante. El generador de código abre una ventana de edición de código VBA y crea un procedimiento asociado al evento con un cuerpo completamente vacío o sólo con la gestión de errores.


3. Rellenar el cuerpo del procedimiento con las instrucciones necesarias para realizar las tareas deseadas. A continuación se muestra una imagen del código que se abre al seleccionar la pestaña generador de código.

Ejemplo: Creación de un evento para abrir el formulario Detalle de Producto
Suponga que desea que un formulario Detalles de producto se abra cuando haga clic en un botón de comando Detalles de producto en un formulario Pedidos. En el ejemplo siguiente se indica cómo llevar a cabo esta tarea mediante un procedimiento de eventos.
1. Para hacer que un procedimiento de eventos se ejecute cuando un usuario haga clic en el botón de comando, haga clic en la propiedad AlHacerClic (OnClick) del comando...

2.... haga clic en el botón Generar y, a continuación, haga clic en Generador de código para agregar código de Visual Basic al procedimiento de eventos.

1. El procedimiento de evento ProductDetails_Click utiliza el método OpenForm para abrir el formulario Detalles de producto.


Como se vio al comienzo en las propiedades de los formulanrios existen otras pestañas para aplicaciones diferentes a la de los eventos. Para conocer más sobre las propiedades de los formularios se recomienda visitar la página siguiente:

Leer más...

domingo, 11 de diciembre de 2011

SQL y Visual Basic para Access

Lo más común es usar Visual Basic para hacer macros en Excel, sin embargo también existen la posibilidad de usar Visual Basic en los otros productos de la suite Office. A continuación veremos algunos métodos y su uso para Access y en particular en el uso de SQL.

SQL es un lenguaje ampliamente utilizado para hacer consultas en bases de datos, gestores populares de base de datos como MySQL, postgreSQL (web), Oracle, entre otros lo utilizan. Cuando hacemos consultas en Access es SQL el lenguaje que el programa ocupa para hacerlas aunque nos muestra la interfaz de diseño de consultas. Los que lo desconozcan pueden encontrar un tutorial en w3schools.

Todo el resto después del salto.
Leer más...