Una macro es una especie de rutina que puede ser
ejecutada en respuesta a algún evento que ocurre en el sistema. Por
ejemplo, podemos accionar una rutina cuando una exclusión de registro
estuviera para ser efectiva y esta rutina puede exigir confirmación por
el usuario. El Access provee una serie de aciones que serán
ejemplificadas en este texto.
Para crear una macro se selecciona Macros en la
ventana Base de Datos y se acciona el botón Nueva. Para alterar
una macro se utiliza el botón Diseño y para ejecutar una macro
(en general para testear) se utiliza el botón Ejecutar. La
ventana para el montaje de una macro está detallada en la figura 8.1.
FIGURA 8.1. Ventana de proyecto de Macro.
Esta ventana muestra una macro constituida de 4
acciones. Esa macro será activada en un formulario (detallado mas
adelante) a través del accionar de un botón y va a presentar en la
pantalla una ventana tipo hoja de datos correspondiente a la tabla
PADRÓN DE DEPARTAMENTOS. Como se observa, para la acción Abrir Tabla
tenemos que especificar 3 parámetros: cual es la tabla a ser abierta, de
que forma ella es exhibida (hoja de datos), y cual es la acción del
usuario que será admitida sobre la ventana exhibida (solamente lectura).
La acción Abrir Tabla es inmediatamente seguida
de la acción de posicionamiento de la ventana recién abierta porque
deseamos elegir su dimensión y posición. La opción Desplazar tamaño
especifica la dimensión (largo y alto) y posición (derecha, abajo) en
relación a la pantalla; las dos acciones iniciales de esta macro: Eco y
reloj de arena proveen un control adicional sobre el proceso de
presentación de la tabla. La acción Eco debe tener el parámetro Eco
activo especificado como siendo no. Esto indica que
eventuales procesos intermediarios que ocurren durante el montaje de la
tabla en la pantalla no serán exhibidos. En general no hay realmente
interés en exhibir esos procesos. Mientras tanto, como esto puede
significar que durante un breve espacio de tiempo el usuario quedará sin
ningún tipo de respuesta en la pantalla, se acciona la acción Reloj de
arena para mostrar el icono correspondiente hasta que la tabla a sea
definitivamente presentada en la pantalla.
Vale recordar que la ventana de montaje de macros
funciona análogamente a las ventanas de construcción de tablas. Podemos
redimensionar las columnas, seleccionar y mover líneas, eliminarlas y
redimensionar sus alturas. Eventualmente puede ser hasta necesario
incrementar dos columnas adicionales de nombres de macros y de
condiciones. Esto es hecho vía condiciones y grupos de macros y es visto
en los ejemplos que siguen.
FIGURA 8.2 Barra de herramientas de la ventana de
diseño de diseño de Macro.
A partir de la tabla PADRÓN DE EMPLEADOS
fue desarrollado anteriormente un formulario de columna simple.
Esa misma tabla dio origen a un formulario en formato tabular presentado
adelante y que será utilizado para mostrar algunos recursos
implementables a través de macros. La construcción de ese formulario
puede ser hecha a través de un asistente y no será detallado aquí. La
figura 8.3. muestra el formulario en uso presentando los datos de la
tabla en la forma de columnas. Al frente del formulario aparece la
ventana con la tabla PADRÓN DE DEPARTAMENTOS accionada a
través del botón deptos del formulario.
FIGURA 8.3 Formulario que presenta los
datos en forma tabular.
El botón deptos no es incluido por el
asistente generador de formulario. Él es incorporado por el proyectista
en la ventana de proyecto vía cuadro de herramientas. Al botón debe ser
atribuido un texto para la leyenda. Conviene también atribuir un nombre
(interno) al control/botón.
Finalmente es necesario especificar cual acción
el debe ejecutar cuando fuese picado con el Mouse. Para eso se
especifica el nombre de la macro con las acciones deseadas en la
propiedad Al hacer clic del botón. La macro mostrada en el ítem
anterior fue la macro asociada al evento al hacer clic conforme
se puede observar en la ventana del proyecto correspondiente en al
figura 8.4.
Si el botón Asistente de controles
de la barra de herramientas estuviera activado, el proceso será un poco
diferente. En la primera ventana de diálogo que aparece luego del diseño
del botón de comando, la categoría a ser seleccionada es Miscelánea
y acción es Ejecutar macro. La próxima pantalla pide la
definición de la macro que va a ser utilizada para el control, que en
nuestro caso es mostrar PADRÓN DE DEPARTAMENTOS. En la pantalla
siguiente se debe elegir Texto y digitar el nombre del botón
(correspondiente a la leyenda) y picar Avanzar. Después se elige un
nombre que va a ser atribuido al control, para uso interno del Access y
picar Concluir.
FIGURA 8.4 Pantalla de proyecto del
formulario y ventana de propiedades del botón.
La macro funciona presentando en la
pantalla la ventana de la tabla PADRÓN DE DEPARTAMENTOS.
La activación de una ventana se sobrepone a las otras que por ventura
estuvieran activas. Cualquier ventana puede ser movida, minimizada,
cerrada y redimencionada. Mientras tanto esto interpone un problema si
cerramos la ventana del formulario sin cerrar la ventana de la tabla
Efectivamente esta continúa abierta. A pesar de ella poder ser cerrada
manualmente, se puede forzar su cierre si la ventana del formulario
fuera cerrada.
Para esto construimos la macro "cerrar
padrón" construida de una acción de cerrar. La acción tiene dos
parámetros: el tipo de objeto a cerrar (en nuestro caso la tabla) y el
nombre del objeto.
Esa macro es especificada en la propiedad /
Evento del formulario que ocurre cuando él es cerrado (Al Cerrar):
Al cerrar, antes del formulario ser cerrado ahora es ejecutado a
la acción de cerrar la tabla, es la tabla activa o no en la pantalla. La
figura 8.5 muestra la macro que fue descripta.
FIGURA 8.5 Estructura de macro cerrar padrón.
En el formulario anterior también se incluye una
macro para enviar un mensaje de aviso cuando un registro fuera excluido
y exigir confirmación. Al intentarse borrar (vía tecla DEL) un registro
seleccionado será mostrado un cuadro de mensaje con dos botones: si y no
conforme figura 8.6.
FIGURA 8.6 Cuadro de mensaje del Macro confirmar
exclusión.
Esa ventana de aviso es mostrada a través de la
llamada de función interna Cuadro de Mensaje ("confirma exclusión";
52,"") donde el primer parámetro es el mensaje a ser exhibido, el
segundo indica los botones a ser exhibidos y el tercero es el título del
cuadro de mensaje. La forma exacta de determinar el segundo parámetro
puede ser vista en el Help correspondiente de la función. El se
constituye en una suma de valores: 4 para exhibir botones si y no, 48
para el icono de exclamación es cero para que el primer botón sea
asumido como patrón. El botón que fuera accionado determina el resultado
que la función devuelve: 6 para el botón si y 7 para el botón no.
Como la función retorna un valor optamos en este
formulario por emplear un control tipo cuadro de texto con función
auxiliar de apenas almacenar el valor resultante de la función. En la
ventana de proyecto ese control debe ser creado en el encabezado a la
derecha. Él es un control invisible en la ventana del formulario por
tener la propiedad Visible posicionada en No. Además de eso, es
obligatorio atribuir un nombre a él pues el nombre será referenciado en
la macro, en nuestro caso el nombre elegido fue aux.
La macro será accionada cuando ocurra el evento
Al excluir del formulario. Ella deberá realizar dos acciones:
mostrar el cuadro de mensaje (y obtener el resultado de la llamada de la
función) y enseguida debe testear si el valor resultante determina o no
el cancelamiento de la ejecución. Como una condición está comprendida y
es necesario incrementar la columna de condiciones (picar en el
botón de la barra de herramientas el botón condiciones)en la ventana de
la macro conforme lo detallado en al figura 8.7.
FIGURA 8.7 Ventana de proyecto de la macro
confirmar exclusión.
La acción Definir Valor posee dos
parámetros: para donde debe ir el valor calculado (cuadro de texto aux.)
y cuál es la expresión a ser calculada (CuadroMsj("eliminar";52;"").
Ejecuta esa acción si pasa el test del contenido del cuadro aux. en la
columna condición. Si el test da el resultado verdadero, será ejecutada
la acción especificada en la columna acción. En caso, que se desee
cancelar el evento en curso, por lo tanto, se utiliza la acción
CancelarEvento.
Construida la macro y atribuido un nombre a ella
("confirmar exclusión") se puede incorporar su llamada al evento
correspondiente del formulario. Para eso se debe abrir la ventana de
propiedades del formulario y especificar el nombre de la macro en la
propiedad/evento. Al excluir.
Conviene recordar que es patrón de Access
solicitar confirmación a cada remoción de registros. Mientras tanto, ese
mensaje puede ser desactivado par todo ambiente vía menú Herramientas
Opción Modificar/Buscar, activando en confirmar la opción
Cambios en los registros.
El formulario desarrollado exige que el usuario
digite la sigla del departamento. Si el no recuerda ese código, puede
inspeccionar la tabla correspondiente accionando el botón de encabezado.
Pero, de cualquier manera, es siempre él quien digita el código en
cuestión y es importante que este código se confirme con algún código
del padrón correspondiente.
Para garantizar que esto ocurra podemos crear una
macro asociada al cuadro de texto de la sigla y que será activado
inmediatamente antes de ocurrir la actualización. La macro debe
verificar si el valor digitado consta en el padrón correspondiente. Si
no consta debe emitir un mensaje de aviso y cancelar la actualización.
Para que el test pueda ser hecho es necesario que el control (cuadro de
texto) posea un nombre, en nuestro caso se le atribuye el nombre sigla a
la propiedad sigla Nombre del control.
Para verificar si la información consta de los
otros padrones utilizamos la función interna Dbúsq. Se debe especificar
tres argumentos tipo texto en la llamada de esta función:
-
El nombre del campo de donde será
obtenido el valor que ella va a retornar
-
El nombre de la tabla donde la
búsqueda es hecha.
-
La condición que debe ser testada y
que posiblemente es hecha sobre otro campo de la tabla.
En el caso el test incorporado a la macro está
especificado a continuación. En la ventana de la macro no es posible ver
todo el texto del test por razones de espacio.
EsNulo(DBúsq([Nombre del Departamento];[Padron
de Departamentos];[Sigla del Departamento]=[sigla]))
Por lo tanto la función busca la tabla PADRÓN
DE DEPARTAMENTOS. En esta tabla ella hace la búsqueda sobre la
columna [sigla del departamento] hasta localizar la primera línea donde
el valor sea igual al contenido del cuadro de texto [sigla]. Esta línea
determina el valor en la columna [nombre del departamento] que será
devuelto como resultado de la llamada de la función. Si en ninguna línea
el test fuera satisfecho entonces la búsqueda no tubo suceso y la
función retorna valor nulo.
En la macro en cuestión estamos apenas
interesados en saber si un valor fue localizado o no. Realmente no nos
interesa el nombre del departamento en caso de que localice alguno. De
esta forma, la acción en la macro correspondiente al verificar si la
función retornó nulo pues, en este caso, deseamos mostrar un mensaje de
aviso vía acción CuadroDeMensage seguido de la acción CancelarEvento.
Como son dos acciones a ser ejecutadas en caso que el texto dé
verdadero, debemos colocar reticencias (...) en la columna condición
correspondiente.
Observar que para la acción CuadroDeMensage
tenemos que indicar el texto del mensaje, si queremos o no un aviso
sonoro y el tipo de icono que deba ser mostrado junto con el mensaje.
Finalmente, el nombre de la macro (validación de la sigla del
departamento) es especificado en la propiedad Antes de Actualizar
del cuadro de texto de la sigla del departamento.
FIGURA 8.8 Macro de validación de la sigla del
departamento.
Podemos desear que al abrir la Base de datos en
el menú archivo, se accione una ventana de formulario denominada
pantalla base donde consten botones que accionan las principales tareas
de este sistema. En el ejemplo actual, apenas a título de ilustración,
están reunidas las funciones en torno de la consulta, entrada de datos y
visualización de los informes. La ventana del formulario está presentada
a continuación. Detalles de su construcción son presentados en el
próximo ítem.
FIGURA 8.9 Formulario pantalla base.
Para accionar esta pantalla creamos una macro que
abre el formulario pantalla base. Esta macro no presenta novedades. Para
que su activación sea inmediata debemos atribuirle un nombre patrón al
Access autoexec. La macro está presentada a continuación.
FIGURA 8.10 Pantalla proyecto de la macro que
abre el formulario pantalla base.
La ventana / formulario pantalla base posee una
serie de botones. Básicamente a cada uno de ellos está asociada a una
macro de única acción que corresponde al abrir la pantalla, formulario o
informe correspondiente. En nuestro caso tendríamos que crear 8 macros y
denominar a cada una; esto causaría cierta confusión en la ventana de la
Base de Datos. Para simplificar podemos reunir las diversas macros en
una única ventana conforme muestra la figura.
FIGURA 8.11 Grupos de macros de la pantalla base
Se trata de una ventana que reúne un grupo de
macros. Para eso fue necesario incrementar una columna para el nombre de
la macro y emplear nombres mas cortos y por lo tanto mnemotécnicos. Este
nombre será especificado en la propiedad/evento Al picar el botón
correspondiente a través de la siguiente sintaxis: nombre del grupo.
Nombre de la macro, por ejemplo, en el botón empleados se especifica
botones de la pantalla base abremp. El Access trata de buscar el
nombre de la macro en el grupo y ejecuta sus acciones hasta encontrar el
nombre de otra macro en la columna de nombres.
El formulario pantalla base merece algunas
observaciones pues el no se parece a un formulario común. Esto se debe
al echo de que todos los controles están en el encabezado del
formulario. Para este encabezado se especificó el color de fondo
gris. Además de eso, las siguientes propiedades del formulario
fueron especificadas:
-
Título pantalla base
-
Permitir ediciones no (desactiva
Permitir edición)
-
Barras de desplazamiento ninguna
(quita barras de desplazamiento)
-
Vistas permitidas formulario
(desactiva botón hoja de datos)
-
Permitir filtros no (desactiva
botones de filtros).
|