Access 2016

Gestion de Datos con Microsoft Access 2016 Tabla de Contenido PRESENTACIÓN AVANZADA USANDO FORMULARIOS................

Views 675 Downloads 5 File size 12MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Gestion de Datos con Microsoft Access 2016

Tabla de Contenido PRESENTACIÓN AVANZADA USANDO FORMULARIOS..................................................... 1 CREACIÓN DE FORMULARIOS ........................................................................................................ 2 ASISTENTE PARA FORMULARIOS ................................................................................................... 4 Actividad 1: Crear Formulario usando asistente ........................................................................ 6 PROPIEDADES DEL FORMULARIO ................................................................................................... 9 Propiedades de Formato ............................................................................................................ 9 Actividad 2: Modificar la presentación del Formulario Anterior ................................................ 11 Propiedades de Datos .............................................................................................................. 14 Actividad 3: Formulario sin acceso a datos ............................................................................. 17 AUTOFORMATO ......................................................................................................................... 19 VISTAS: FORMULARIO, PRESENTACIÓN Y DISEÑO.......................................................................... 20 EDITAR CONTROLES................................................................................................................... 23 Seleccionar controles ............................................................................................................... 24 Cambiar las dimensiones ......................................................................................................... 26 Ajustar ...................................................................................................................................... 26 Mover ....................................................................................................................................... 27 Alinear Usted puede alinear múltiples controles. Para ello: ........................................................... 27 Eliminar controles ..................................................................................................................... 27 Agregar controles ..................................................................................................................... 28 Propiedades de los controles ................................................................................................... 34 Cuadros combinados ............................................................................................................... 36 Actividad 4: Crear un formulario con columnas de búsqueda ................................................. 43 Actividad 5: Insertar una etiqueta e imagen ............................................................................. 47 Actividad 6: Editar los controles de un formulario .................................................................... 48 Actividad 6: Agregar etiquetas, cajas de texto y fichas ............................................................ 49 FORMULARIOS CONTINUOS ......................................................................................................... 52 Actividad 8: Crear un formulario continuo ................................................................................ 52 Encabezado y Pie de formulario .............................................................................................. 55 Actividad 9: Cuadro combinado en el encabezado .................................................................. 56 SUBFORMULARIOS ..................................................................................................................... 59 Actividad 10: Subformulario creado manualmente .................................................................. 60 Utilizar el asistente para Subformularios/Subinformes Campos vinculados entre formulario padre y formulario hijo .............................................................................................................. 61 Actividad 11: Subformulario empleando el asistente para formularios .................................... 65 Modificar el diseño del subformulario ....................................................................................... 68 PREGUNTAS DE REPASO ............................................................................................................ 69 EJERCICIOS CASOS PROPUESTOS............................................................................................... 70 Actividad propuesta 1 ................................................................................................................. 70 Actividad propuesta 2 ................................................................................................................. 72 UTILIDADES ......................................................................................................................... 75 FORMAS DE ABRIR UNA BASE DE DATOS ....................................................................................... 76 SEGURIDAD .............................................................................................................................. 81 Cifrar una Base de Datos mediante contraseña ...................................................................... 83 Actividad 1: Cifrar una Base de Datos mediante contraseña .................................................. 83 Abrir una bd cifrada .................................................................................................................. 85 Descifrar contraseña de una Base de Datos ........................................................................... 85 Actividad 2: Anular contraseña de una Base de Datos ............................................................ 85 Uso del centro de confianza ..................................................................................................... 86 Actividad 3: Agregar un sitio de confianza ............................................................................... 87 CONVERTIR A OTRAS VERSIONES ................................................................................................ 89 ARCHIVOS ACCDE ................................................................................................................... 90 Convertir una base de datos al formato de archivos de Access 2016 ..................................... 91 Copia de Seguridad de base de datos ..................................................................................... 92

MANTENIMIENTO DE UNA BASE DE DATOS ..................................................................................... 93 ANALIZAR LAS TABLAS ................................................................................................................ 93 Actividad 4: Analizar las tablas de una base de datos ............................................................. 93 COMPACTAR Y REPARAR UNA BASE DE DATOS .............................................................................. 96 DIVIDIR UNA BASE DE DATOS ....................................................................................................... 98 Actividad 5: Procedimiento para dividir una tabla .................................................................... 98 ANALIZADOR DE RENDIMIENTO .................................................................................................. 101 DOCUMENTADOR DE BASE DE DATOS ......................................................................................... 102 PREGUNTAS DE REPASO .......................................................................................................... 104 TRABAJANDO CON DATOS EXTERNOS ......................................................................... 105 IMPORTAR .............................................................................................................................. 106 Access .................................................................................................................................... 106 Excel ....................................................................................................................................... 107 Lista de SharePoint ................................................................................................................ 111 Archivo de texto...................................................................................................................... 113 Actividad 1 : Importar de un Archivo de Texto ...................................................................... 114 Archivo XML ........................................................................................................................... 119 EXPORTAR.............................................................................................................................. 121 Excel ....................................................................................................................................... 123 Un archivo RTF de Word ....................................................................................................... 128 Lista de SharePoint ................................................................................................................ 129 Archivo de texto...................................................................................................................... 132 Archivo XML ........................................................................................................................... 133 PREGUNTAS DE REPASO .......................................................................................................... 136 EJERCICIOS CASOS PROPUESTOS............................................................................................. 136 MACROS Y OPCIONES DE INICIO .................................................................................... 137 INTRODUCCIÓN A MACROS ....................................................................................................... 138 Crear una Macro .................................................................................................................... 138 ¿Qué es el catalogo de acciones? ......................................................................................... 140 Actividad 1: Crear una macro sencilla .................................................................................... 141 Actividad 2: Asignar la macro a mas de un formulario ........................................................... 144 Actividad 3: Crear Macros condicionadas .............................................................................. 148 BOTONES DE COMANDO EN FORMULARIOS.................................................................................. 153 El asistente para controles ..................................................................................................... 153 Macro Autoexec ..................................................................................................................... 155 Actividad 4: Crear un formulario de Login con autoexec ....................................................... 155 Actividad 5: Crear un formulario que filtre una tabla .............................................................. 159 OPCIONES DE NAVEGACIÓN ...................................................................................................... 163 Crear Categorías .................................................................................................................... 163 Cambiar entre categorías ....................................................................................................... 171 Ordenar categorías ................................................................................................................ 171 Vistas ...................................................................................................................................... 172 OPCIONES DE LA BASE DE DATOS .............................................................................................. 172 Formulario o página inicial ..................................................................................................... 172 Actividad 6: Creando un formulario de inicio Panel de Control ............................................. 173 PREGUNTAS DE REPASO .......................................................................................................... 178 EJERCICIOS CASOS PROPUESTOS............................................................................................. 178 Actividad propuesta 1 ............................................................................................................... 178 Actividad propuesta 2 ............................................................................................................... 178 PROGRAMACIÓN CON VBA ............................................................................................. 179 USO DE VBA EN ACCESS ......................................................................................................... 180 Actividad 1: Crear nuestro primer archivo vba ....................................................................... 181 Actividad 2: Creando un formulario, para ingresar código vba .............................................. 184

Actividad 3: Agregar código vba a un formulario ................................................................... 187 Actividad 4: Conociendo la ventana Inmediato ...................................................................... 192 Variables ................................................................................................................................ 196 Ámbito ó Alcance de las Constantes y variables ................................................................... 200 Conociendo los tipos de variables ......................................................................................... 201 Procedimientos y Funciones .................................................................................................. 202 Actividad 5: Creando un procedimiento sencillo .................................................................... 203 Actividad 6: Conociendo los ámbitos de las variables ........................................................... 205 Actividad 7: Funciones en Formularios .................................................................................. 210 Probando los tipos de variables ............................................................................................. 214 Estructuras de Control............................................................................................................ 216 Estructuras de Decisión. ........................................................................................................ 216 Actividad 8: Ejemplo de condicional mas compleja ............................................................... 219 Actividad 9: Ejemplo de instrucción Select Case ................................................................... 221 Estructuras Repetitivas .......................................................................................................... 222 Actividad 10: Ejemplos de instrucciones Repetitivas ............................................................. 225 PROGAMACIÓN ORIENTADA A OBJETOS ...................................................................................... 229 Actividad 11: Aplicando eventos al formularios ..................................................................... 232 Actividad 12: Continuando con eventos al formulario ........................................................... 236 Tratamiento de los errores en procedimientos ..................................................................... 240 Errores en Tiempo de Diseño ................................................................................................ 240 Errores en Tiempo de Ejecución ............................................................................................ 241 EDITANDO EL CÓDIGO DE LAS MACROS DE ACCESS ..................................................................... 243 Código frente a macros .......................................................................................................... 243 Actividad 13: Editando botones para operar registro y Formulario ........................................ 257 Los modelos de objetos de Access ........................................................................................ 261 LOS CONTROLES ACTIVEX ....................................................................................................... 262 Agregando controles en el Formulario ................................................................................... 262 Actividad 14: Conociendo el orden de los eventos de un Formulario .................................... 264 Conexión con datos en un formulario .................................................................................... 271 Actividad 15: Usando la propiedad ControlSource en tablas diferentes ................................ 276 Editando el código de los controles ActiveX .......................................................................... 290 Actividad 16: Creando una barra de progreso ....................................................................... 290 PROGRAMACION A.D.O ...................................................................................................... 296 Esquema básico de como funciona una conexión ADO ........................................................ 297 Actividad 17: Conectando a datos con ADO .......................................................................... 298 datos no duplicados en una tabla .......................................................................................... 302 Actividad 18: Verificar que al guardar datos no se duplique en la bd .................................... 302 PREGUNTAS DE REPASO .......................................................................................................... 303 EJERCICIOS CASOS PRACTICOS ................................................................................................ 303

Capítulo

1 Presentación avanzada usando formularios Objetivos Especificos: Crear formularios. Utilizar el asistente de formularios. Modificar las propiedades de los formularios Agregar campos a un formulario y modificar sus propiedades

Introducción: Los formularios, tiene un formato que nos permite visualizar y presentar los datos guardados en tablas o consultas de forma atractiva, ya que, si bien la función principal de Access es manejar información, la manera en que la presentemos es fundamental, para obtener de ella su máximo provecho.

Microsoft Office Access 2016

Creación de formularios Antes de crear los formularios, primero debemos tener claro lo que deseamos mostrar y la forma en la cual queremos visualizar la información. Su elaboración tiene un objetivo, que es trabajar con los registros para poder visualizar y/o modificar los datos de una tabla o consulta. Los formularios son un elemento clave en Access ya que permite poder visualizar la data de una manera mas amigable. En este capitulo, vamos a tratar en la creación de los formularios, que es un complemento de las tablas y las consultas, ya que nos permite realizar multiples operaciones sobre la base de datos, por ejemplo; ingresar nuevos registros, buscar datos especificos, filtrar los datos, modificar y eliminar registros. Además, es un medio de acceso a la información que resulta atractiva para el usuario, por lo tanto, será más agradable utilizar estos objetos cuando se necesite acceder a la información almacenada en las tablas o consultas de la base de datos. Para trabajar con los formularios, se necesita ingresar a la ficha Crear y usamos cualquiera de las opciones del grupo Formularios que se muestra a continuación:

1

Formulario: Esta opción permite crear un formulario de una tabla o consulta que se encuentre seleccionado, en el Panel de Navegación, el diseño es predeterminado por Access.

2

Diseño de Formulario: De manera automática ingresa al modo edición de formulario, donde podemos insertar los campos asi como algún control que se desee.

3

Formulario en Blanco: Crea un formulario completamente vacio, sin controles ni campos, ideal cuando se desea crear un formulario principal, que permita llamar a los otros formularios

Escuela de Tecnología de la Información

2

Capítulo 1: Presentación avanzada usando formularios

Mas Formularios: Permite poder elegir entre cuatro opciones para la creación de nuevos formularios: Varios elementos (formulario que muestra varios registros a la vez), Hoja de datos (Es un formulario que muestra varios registros en una hoja de datos), Formulario dividido (Posee el formulario arriba y en la parte inferior una hoja de datos para ingresar información) y Cuadro de dialogo modal (Crea un formulario con los botones Aceptar y Cancelar de manera predeterminada asi como la configuración de modal en verdadero ).

4

Navegación: Crea un formulario con pestañas de navegación en distintas posiciones para explorar distintos formularios.

5

6

Asistente para formularios: Llama a una ventana con el asistente donde nos guía en la creación paso a paso de un formulario.

Escuela de Tecnología de la Información

3

Microsoft Office Access 2016

Asistente para Formularios Uno de los caminos más rápidos para crear formularios es utilizar el asistente para formularios. Para hacer uso de él ejecute el siguiente procedimiento: 1. Haga clic en la ficha Crear, en la Cinta Formularios, Opción Mas Formularios y elegir Asistente para Formularios.

2. Al iniciar el asistente, seleccione la tabla o

consulta desde la que serán tomados los datos. Si los datos que necesita ver en el formulario se encuentran en dos o más tablas, puede crear primero una consulta que las relacione y después crear el formulario.

3. Seleccione los campos que desea incluir en el formulario. Para esto usted puede: 

Hacer doble clic convenientemente en cada uno de los campos de la lista izquierda.



También puede seleccionar un campo y luego emplear el botón >.



Si desea seleccionar todos los campos, haga uso del botón >>.

Escuela de Tecnología de la Información

4

Capítulo 1: Presentación avanzada usando formularios



Para deseleccionar campos haga doble clic en los elementos de la lista derecha o emplee los botones < o se encuentra desactivado, es porque hemos hecho clic sobre él y entonces han aparecido las opciones en la parte inferior del cuadro. Desde allí podrás seleccionar cómo y en qué medida quieres importar los objetos. Como habrás podido observar existen otros métodos de importación de datos, podrás acceder a ellos haciendo clic en los diferentes botones de la sección Importar.

Excel Para importar datos desde Excel en una base de datos de Access y utilizar y mantener estos datos en Access de ahora en adelante. Cuando se importan datos, Access los almacena en una tabla nueva o existente sin modificarlos. Sólo puede importar una hoja de cálculo cada vez durante una operación de importación. Para importar datos de varias hojas de cálculo, se repite la operación de importación para cada hoja de cálculo. A continuación, se incluyen algunos ejemplos comunes de importación de datos de Excel en Access: 

Utiliza Excel con mucha frecuencia, pero a partir de ahora desea utilizar Access para trabajar con estos datos. Desea mover los datos de las hojas de cálculo de Excel a una o varias bases de datos de Access.



Su departamento o grupo de trabajo utiliza Access, pero de vez en cuando recibe datos en formato de Excel que debe combinar con bases de datos de Access. Desea importar estas hojas de cálculo de Excel a la base de datos cuando las recibe.

Escuela de Tecnología de la Información

107

Microsoft Office Access 2016



Utiliza Access para administrar los datos, pero los informes semanales que recibe del resto de los integrantes de su equipo son libros de Excel. Desea agilizar el proceso de importación para asegurarse de que los datos se importan cada semana a una hora específica a la base de datos.

Si quieres importar datos de un archivo de Excel solo tienes que hacer clic en el botón Excel. Se abrirá el siguiente cuadro de diálogo:

Damos clic al botón Examinar, buscamos el archivo, en este caso seleccionamos el archivo PcKaxi:

108

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Para importar una hoja del archivo de Excel, hay que indicarle cual Hoja de Trabajo, o bien, Mostrar Rangos con Nombres, si previamente se han definido y pulsar el botón Siguiente.

Verificar si la Primera Fila tiene encabezados de Columna.

Escuela de Tecnología de la Información

109

Microsoft Office Access 2016

Si es posible especificar algunas Características sobre las Opciones de Campo, por ejemplo, el tipo de datos, o si va a ser indexado.

Luego de Presionar Siguiente, tendrás que definir una clave principal para la tabla que estas importando, en caso contrario Access lo hará por ti.

110

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Por último, indicarle el nombre que va a tener

Lista de SharePoint Al importar una lista de SharePoint crea una copia de la data en una base de datos de Access. Durante la operación de importación, puede especificar las listas que desea copiar y, para cada lista seleccionada, puede indicar si desea importar toda la lista o sólo una vista específica. La tarea de importación procede a crear una tabla en Access, y copia las columnas y los elementos de la lista de origen (o de la vista) en la tabla en forma de campos y registros. Al terminar la operación de importación, puede elegir guardar la información de la operación de importación como una especificación. Una especificación de importación ayuda a repetir la operación de importación en el futuro sin tener que examinar el Asistente para importación cada vez. Esto lo puede hacer el guardar la operación de importación siempre que ustede repita estos procedimietos. Espacios comunes para importar una lista a Access  En general, una lista de SharePoint se importa a una base de datos de Access por estos motivos:  Si ya no necesita la lista en el sitio de SharePoint, puede mover una lista de forma permanente, como la lista Contactos, a una base de datos de Access. Puede importar la lista a Access y eliminarla del sitio de SharePoint.  Su departamento o grupo de trabajo utiliza Access, pero utiliza ocasionalmente una lista de SharePoint para obtener datos adicionales que se deben combinar en una de sus bases de datos.

Escuela de Tecnología de la Información

111

Microsoft Office Access 2016

Prepararse para la operación de importación 1. Busque el sitio de SharePoint que contiene las listas que desea copiar y anote la dirección del sitio. Una dirección válida de un sitio empieza por http:// seguido del nombre del servidor y finaliza con la ruta al sitio específico en el servidor. 2. Identifique las listas que desea copiar a la base de datos y decida si desea toda la lista o sólo una vista determinada. Puede importar varias listas en una única operación de importación, pero puede importar sólo una vista de cada lista. Si es necesario, cree una vista que contenga sólo las columnas y los elementos que le interesen. 3. Revise las columnas en la lista de origen o la vista. En la tabla siguiente se explican algunas consideraciones que se deben tener en cuenta al importar distintos elementos. Elemento

Consideraciones

Columnas

Access solo admite 256 campos en una tabla, de forma que Access importa sólo las 256 primeras columnas. Para evitar este problema, cree una vista, agréguele sólo las columnas que desea y asegúrese de que el número total de columnas no sea superior a 256.

Carpetas

Cada carpeta de la lista de SharePoint o de la vista se muestra como un registro en la tabla de Access. Los elementos dentro de una carpeta también aparecen como registros, inmediatamente debajo del registro correspondiente a dicha carpeta.

Columnas de búsqueda

Si una columna de origen busca valores de otra lista, tiene dos opciones: Importar los valores de presentación como parte del campo. En este caso, no es necesario importar la lista relacionada. Obligar al campo de destino a buscar otra tabla. En este caso, si la base de datos no contiene una tabla que pueda proporcionar los valores de búsqueda, debe importar también la lista relacionada.

Columnas calculadas

Los resultados de una columna calculada se copian en un campo cuyo tipo de datos depende del tipo de datos del resultado calculado. No se copia la expresión que ejecuta el cálculo.

Datos adjuntos

La columna de datos adjuntos de la lista se copia en un campo denominado Datos adjuntos.

Relaciones

Access no crea automáticamente las relaciones entre tablas relacionadas al finalizar una operación de importación. Dichas relaciones la debemos crear manualmente entre las diversas tablas nuevas y las existentes mediante las opciones de la ficha Relaciones. Para ver la ficha Relaciones: En la ficha Herramientas de base de datos, en el grupo Relaciones. Haga clic en Relaciones

112

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Columnas multivalor

Una columna de tipo opción o búsqueda puede contener varios valores. Al importar una columna que admite varios valores, Access crea una columna que hace lo mismo. Para obtener más información sobre los campos multivalor en Access, abra los vínculos en la sección.

Formato de texto enriquecido

Las columnas que contienen un formato de texto enriquecido se importan a Access como campos Memo. La propiedad Formato de texto del campo Memo está establecida en Texto enriquecido y se conserva el formato.

1.

Identifique la base de datos a la que desea importar las listas. Asegúrese de que tiene los permisos necesarios para agregar datos a la base de datos. Si no desea guardar los datos en ninguna de las bases de datos existentes, cree una base de datos en blanco haciendo clic en el Archivo. A continuación, haga clic en Nuevo. Luego da clic a la ficha Datos Externos, en el grupo de comandos de Importar y Vincular, clic al cuadro combinado de Más. Clic en Lista SharePoint.

2.

Revise las tablas de la base de datos. La operación de importación crea una tabla con el mismo nombre que la lista de SharePoint. Si este nombre ya está en uso, Access anexará "1" al nuevo nombre de tabla, por ejemplo, Contactos1. (Si Contactos1 ya está en uso, Access creará Contactos2, etc.)

Archivo de texto Por ejemplo, para importar la información de una base de datos de un archivo de texto simplemente deberemos hacer clic en el botón Archivo de texto. En este caso se abrirá el Asistente para importación de texto, donde podrás indicar la forma en la que está formateado el archivo del que vas a tomar la información, incluso te podrás guardar esa descripción y volver a utilizarla para importar datos de otro fichero con las mismas características utilizando el botón Importaciones guardadas. A veces cuando se importan datos algunos datos no pueden ser almacenados por no coincidir con la definición de la tabla, en este caso Access nos avisará que se han producido errores en la importación y creará una tabla con esos errores para que los podamos analizar y comprobar.

Escuela de Tecnología de la Información

113

Microsoft Office Access 2016

Actividad 1 : Importar de un Archivo de Texto Crea una base de datos y asígnale el nombre Datos Importatos.accdb. Vamos a importar el archivo Lista de Clientes.txt. 1. Selecciona la ficha Datos Externos y haz clic en el botón Archivo de texto de la sección Importar.

2. En el cuadro de diálogo Importar selecciona Importar el origen de datos en una nueva tabla de la base de datos actual. Clic en el botón Examinar.

3. Navega hasta la carpeta ejercicios del curso y selecciona el archivo Lista de Clientes.txt. Clic en el botón Abrir.

114

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

4. Pulsa Aceptar. Se abrirá el asistente para importación de texto.

5. Pulsa el botón Avanzado, vamos a crear una especificación para archivos que tengan este determinado formato.

Escuela de Tecnología de la Información

115

Microsoft Office Access 2016

6. En Formato del archivo selecciona Delimitado. 7. En Delimitador de campo escribe ;. 8. En Cualificador de texto selecciona las dobles comillas ("). 9. En Orden de la fecha selecciona AMD. 10. Deselecciona la opción Años en cuatro cifras. 11. Selecciona la opción Ceros no significativos en fechas. Ahora pasaremos a establecer las propiedades de los campos. Ya hemos terminado de configurar las propiedades de los campos, debería haberte quedado algo así:

116

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Si se guarda esta especificación, más adelante, se puede volver a utilizarla. 12. En el diálogo de Avanzado haz clic de nuevo sobre el botón Aceptar. 13. En el siguiente paso hay que activar “Primera Fila contiene nombres de campos”

Ahora verás que a medida que vamos avanzando por el asistente todas las opciones ya se encuentran perfectamente configuradas. 14. Selecciona la opción Permitir a Access agregar la clave principal. 15.

Escuela de Tecnología de la Información

117

Microsoft Office Access 2016

16. Pulsa Siguiente para continuar. En esta ventana escribiremos en el cuadro de texto Importar a la tabla el nombre Clientes.

17. Acces pregunta si deseas guardar los pasos de importación, si deseas das clic en guardar importados

18. Pulsa Finalizar para terminar, una vez finalizada puedes ver su contenido. Verás cómo la tabla se importa.

118

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Archivo XML Para Importar un archivo XML a Access 2016, seguir los siguientes pasos a. Selecciona la ficha Datos Externos y haz clic en el botón Archivo XML de la sección Importar

b. Aparecerá un Cuadro de Dialogo, en el que tendrás que buscar la ubicación del archivo XML que necesitaras

c. Damos clic en Examinar y seleccionamos elArchivo deseado

d. Luego haz clic en Aceptar, y aparecerá la siguiente pantalla

Escuela de Tecnología de la Información

119

Microsoft Office Access 2016

e. Por defecto esta activada la opción Estructura y Datos, lo que implica que importara, tanto los campos que contienen la tabla, como el contenido de la misma Nos preguntara si deamos guardar la importación, Guardamos la importacion

120

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

f. Aceptar, y luego Cerrar

g. Finalmente se verá la tabla Importada

Exportar En el tema anterior veíamos como podíamos recuperar datos de otras bases de datos o incluso de archivos con otro formato, por ejemplo, de texto. Ahora veremos el proceso contrario, enviar la información de nuestra base de datos a otra base de datos o a un archivo de otro tipo, por ejemplo, de texto. Para ello, sólo tienes que seleccionar una de las opciones que encontrarás en la sección Exportar de la pestaña Datos Externos.

Escuela de Tecnología de la Información

121

Microsoft Office Access 2016

Estos comandos nos permitirán copiar tablas, informes, formularios, macros y en definitiva cualquier objeto de una base de datos a otra base de datos. Creando una copia exacta del objeto en otro lugar. Para utilizar esta opción sólo tendrás que seleccionar el objeto y entonces ejecutar cualquiera de los comandos que se encuentran dentro del grupo Exportar.

Si haces clic en el botón Más desplegarás más formatos de exportación entre ellos Base de datos de Access que te permitirá exportar datos de una base de datos a otra rápidamente.

Si deser importar desde Access a Access, el proceso es dar clic al botón

.

Se abrirá el cuadro Exportar tabla, sólo tendremos que indicarle en qué base de datos quieres copiar el objeto.

Dando clic en el botón examinar, buscamos, donde deseamos pegar el objeto, tenemos que buscar otra base de datos. En el caso del ejemplo es Senati.accdb.

122

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Podemos indicar el nombre que tendrá la tabla en la base de datos de destino y también elegir qué parte queremos exportar.

En el marco Exportar tablas podremos seleccionar Definición y datos para exportar la tabla completa (con todos los registros que contiene incluidos) o exportar únicamente su estructura seleccionando la opción Sólo definición. Para terminar clic en Aceptar.

Excel También se puede copiar los datos de una base de datos de Microsoft Office Access 2016 a una hoja de cálculo exportando un objeto de base de datos a una hoja de cálculo de Microsoft Office Excel 2016. Esto se hace mediante el Asistente para exportación en Office Access 2016. Desde la sección Exportar, podremos exportar el contenido de nuestras tablas, informes o formularios a aplicaciones del mismo paquete como Word o Excel.

Escuela de Tecnología de la Información

123

Microsoft Office Access 2016

Excel copia y formatea el contenido de nuestro objeto y lo presenta en una hoja de Excel dentro de un archivo tipo XLSX o otros tipos que podremos elegir. Contextos comunes para exportar datos a Excel  La empresa trabaja con una base de datos de Access y Excel para trabajar con datos. Guarda los datos en las bases de datos de Access, pero utiliza Excel para analizar los datos y distribuir los resultados de sus análisis. El equipo de trabajo exporta actualmente datos a Excel cuando y como lo necesita, pero desea aumentar la eficacia de este proceso.  Usted es un usuario experto en Access desde hace tiempo, pero su Jefe prefiere trabajar con los datos en Excel. A intervalos regulares, suele copiar los datos en Excel, pero desea automatizar este proceso para ahorrar tiempo. Si es la primera vez que exporta datos a Excel

124



Para exportar datos de Access a Excel, debe estar trabajando en Access (Excel no proporciona ningún mecanismo para importar datos de una base de datos de Access). Tampoco puede guardar una base de datos o una tabla de Access como libro de Excel mediante el comando Guardar como de Access. Es importante tener en cuenta que el comando Guardar como de Access permite guardar un objeto de Access en la base de datos actual sólo como otro objeto de base de datos de Access.



Se puede exportar todos estos objetos tabla, consulta o un formulario. También se puede exportar los registros seleccionados en una vista.



Lo que no se puede exportar son las macros y los módulos a Excel. Cuando se exporta formularios, informes u hojas de datos que contienen subformularios, subinformes u hojas secundarias de datos, sólo se exporta el formulario, el informe o la hoja de datos principales. Es necesario repetir la operación de exportación para cada subformulario, subinforme y hoja secundaria de datos que deseamos exportar a Excel.

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos



Sólo puede exportar un objeto de base de datos en cada operación de exportación. No obstante, puede combinar los datos en varias hojas de cálculo en Excel después de finalizar las operaciones individuales de exportación.

Prepararse para la operación de exportación 1. Abra la base de datos de origen. 2. En el panel de navegación, seleccione el objeto que contiene los datos que desea exportar. 3. Puede exportar una tabla, una consulta, un informe o un formulario.

Otra forma de exporta es dar clic derecha a la tabla, del menú contextual, se selecciona Excel, si es que deseamos exportar a dicho programa

Escuela de Tecnología de la Información

125

Microsoft Office Access 2016

4. Revise los datos de origen para asegurarse de que no contienen indicadores de error ni valores de error. 5. Si hay algún error, debe resolverlo antes de exportar los datos a Excel. De lo contrario, se pueden producir errores durante la operación de exportación y pueden aparecer valores nulos en los campos. 6. Si el objeto de origen es una tabla o una consulta, decida si desea exportar los datos con formato o sin él.

7. Esta decisión afecta a dos aspectos del libro resultante: la cantidad de datos que se exportan y el formato de presentación de los datos. En la tabla siguiente se describe el resultado de la exportación de datos con y sin formato. Exportar Sin formato

126

Objeto de origen

Campos y registros

Tabla o consulta.

Se exportan todos los campos y registros del objeto base.

Formato La configuración de la propiedad Formato se omite durante esta operación. Para campos de búsqueda, se exportan sólo los valores de identificador de búsqueda. Para campos de hipervínculo, el contenido se exporta como una

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

columna de texto que muestra los vínculos en el formato textoParaMostrar#dirección#. Con formato

Tabla, consulta, formulario o informe

Sólo se exportan campos y registros que se muestran en la vista o el objeto actual. No se exportan los registros filtrados, las columnas ocultas en una hoja de datos ni los campos no mostrados en un formulario o informe.

El Asistente de exportación respeta la configuración de la propiedad Formato. Para campos de búsqueda, se exportan los valores de búsqueda. Para campos de hipervínculo, los valores se exportan como hipervínculos. Para campos de texto enriquecido, se exporta el texto pero no el formato.

8. Elija el libro de destino y el formato de archivo. Durante la operación de exportación, Access le pide que especifique el nombre del libro de destino. En la tabla siguiente se resume cuándo se crea un libro (si no existe aún) y cuándo se sobrescribe (si ya existe).

Si el libro de destino

Y el objeto de origen es

Y desea exportar

No existe

Una tabla, consulta, formulario o informe

Los datos con formato o sin formato

El libro se crea durante la operación de exportación.

Ya existe

Una tabla o consulta

Los datos pero no el formato

El libro no se sobrescribe. Se agrega una nueva hoja de cálculo al libro y recibe el nombre del objeto del que se exportan los datos. Si ya existe una hoja de cálculo con ese nombre en el libro, Access le pide que reemplace el contenido de la hoja de cálculo correspondiente o especifique otro nombre para la nueva hoja.

Escuela de Tecnología de la Información

Entonces

127

Microsoft Office Access 2016

Ya existe

Una tabla, consulta, formulario o informe

Los incluido formato

datos, el

El libro se sobrescribe con los datos exportados. Se eliminan todas las hojas de cálculo existentes y se crea una nueva hoja de cálculo con el mismo nombre que el objeto exportado. Los datos de la hoja de cálculo de Excel heredan la configuración de formato del objeto de origen.

Los datos siempre se agregan en una hoja de cálculo nueva. No puede anexar los datos en una hoja de cálculo existente o en un rango con nombre.

Un archivo RTF de Word Word copia y formatea el contenido de nuestro objeto y lo presenta en una tabla dentro de un archivo tipo RTF.

Si sabes utilizar el comando Combinar correspondencia de Word, podrás seleccionar la opción Combinar con Microsoft Office Word que se encuentra en el desplegable del botón Más y así crear desde Access un archivo combinado para por ejemplo crear cartas personalizadas o enviar emails personalizados a todos los clientes (por ejemplo) que tengas en tu tabla de base de datos.

128

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Lista de SharePoint Si los usuarios trabajan con SharePoint, para comunicarse y colaborar entre ellos, se puede encontrar con escenarios donde algunos de los datos de la base de datos de Access deban estar disponibles en uno o varios sitios de SharePoint. El modo más fácil de exportar datos a un sitio de SharePoint es ejecutar el Asistente para exportación. Una vez ejecutado, puede guardar la configuración (la información proporcionada al ejecutar el Asistente) como especificación de exportación. Luego, puede ejecutar de nuevo la operación de exportación sin tener que volver a proporcionar la información.

Preparar la operación 1. Busque la base de datos que tiene la tabla o la consulta que desea exportar. Al exportar una consulta, las filas y columnas de los resultados de la consulta se exportan como elementos de lista y columnas. No se pueden exportar formularios ni informes. Puede exportar sólo un objeto a la vez. 2. Identifique el sitio de SharePoint en el que desea crear la lista. Una dirección de un sitio válido empieza por http:// seguido del nombre del servidor y finaliza con la ruta al sitio específico del servidor. El siguiente ejemplo es una dirección válida: http://adatum/EquipoAnalisis. 3. Tenemos que asegurarnos de tener los permisos de un usuario Administrador necesarios para crear una lista en un sitio de SharePoint. Sino póngase en contacto con el administrador del servidor si no está seguro de los permisos. La operación de exportación crea una lista nueva que tiene el mismo nombre que el objeto de origen de Access. Si el sitio de SharePoint ya tiene una lista con este nombre, se le pide que especifique un nombre diferente para la lista nueva. Tener en cuenta que no se pueden sobrescribir ni anexar datos a una lista que ya existe. 4. Hay que revisar los campos de la tabla o de la consulta de origen. La tabla siguiente explica cómo se importan determinados elementos y si se deben tomar acciones adicionales en casos específicos.

Escuela de Tecnología de la Información

129

Microsoft Office Access 2016

Elemento

Resolución

Campos y registros

Se exportan todos los campos y registros de la tabla o de la consulta, incluidos los campos ocultos en la hoja de datos. Se omite la configuración de filtros durante la operación de exportación.

Datos adjuntos

Si el objeto de origen tiene más de una columna adjunta, debe quitar todas las columnas de datos adjuntos excepto una. Esto se debe a que una lista de SharePoint sólo puede admitir una columna de datos adjuntos. Si el objeto de origen contiene más de una columna de este tipo, Access muestra un mensaje en el que se le pide que quite todas las columnas de datos adjuntos antes de iniciar la operación. Para resolver este problema, puede copiar cualquier columna adicional de datos adjuntos en otros objetos de Access y exportarla a otras listas de SharePoint.

Campos de búsqueda que tienen valores únicos o varios valores

Los valores de presentación en los campos de búsqueda de valor único se exportan como campos de opciones de menús desplegables en la lista de SharePoint. Si el campo de origen admite varios valores, se crea un campo de opción que permite selecciones múltiples en la lista de SharePoint. NOTA Un campo de opción de una lista de SharePoint no puede constar de más de una columna. Si el campo de búsqueda de origen contiene varias columnas, los valores de todas las columnas se combinarán en una única columna.

Campos de consulta calculados

Los resultados de las columnas calculadas se copian en un campo cuyo tipo de datos depende del tipo de datos del resultado calculado. No se copia la expresión en la que se basan los resultados.

Campos Objeto OLE

Los campos Objeto OLE se omiten durante la operación de exportación.

5. Si la base de datos de origen no está abierta aún, ábrala y vaya a la siguiente serie de pasos. Exportar los datos 1. En la ficha Datos externos, en el grupo Exportar, haga clic en Lista de SharePoint.

130

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Se inicia el Asistente para exportación. 2. En el cuadro Especifique un sitio de SharePoint, escriba la dirección del sitio de destino.

3. En el cuadro Especifique el nombre de la nueva lista de SharePoint, escriba un nombre para la nueva lista. Si el objeto de origen de la base de datos ya tiene el mismo nombre que el de una lista del sitio de SharePoint, especifique un nombre diferente. 4. De manera opcional, escriba una descripción para la nueva lista en el cuadro Descripción y active la casilla de verificación Abrir la lista al finalizar. 5. Haga clic en Aceptar para iniciar el proceso de exportación. 6. Access crea una lista en el sitio de SharePoint y muestra el estado de la operación en la última página del Asistente. Cuando finaliza la operación de exportación, puede cerrar el Asistente o guardar los pasos de la exportación en una especificación. 7. Asimismo, durante la operación, Windows SharePoint Services selecciona el tipo de datos correcto para cada columna basándose en el campo de origen correspondiente. Para ver una lista de cómo se asignan los tipos de datos de Access y Windows SharePoint Services entre sí durante la exportación de los datos, y qué valores de campo se exportan para cada tipo de datos, vea la sección Cómo se asignan los tipos de datos de Windows SharePoint Services a los tipos de datos de Access más adelante en este artículo.

Escuela de Tecnología de la Información

131

Microsoft Office Access 2016

Archivo de texto En el caso de exportar el contenido de una tabla a un archivo de texto podremos marcar la opción Exportar datos con formato y diseño.

Si activamos esta opción podremos elegir el modo en el que se guarda la información en el archivo de texto mediante este cuadro de diálogo:

Aquí podrás seleccionar el tipo de codificación de los datos de tipo Texto de la tabla. Aunque el predeterminado sea Windows, Unicode (UTF-8) suele ser el formato que mayor compatibilidad para datos externos que presenta. Aunque si nuestra intención es seguir trabajando dentro de la plataforma Windows dejamos la opción predeterminada seleccionada.

132

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Cuando abrimos la base de datos, en el block de notas

Archivo XML Para importar a un Archivo XML, seguir los siguientes pasos: 1. Elegir de la Cinta Exportar, la opción Mas, para luego elegir la opción Archivo XML 2. Indicarle la ruta y el nombre donde va a exportar

Escuela de Tecnología de la Información

133

Microsoft Office Access 2016

3. Aceptar la opción, y aparecerá la siguiente ventana

4. Si damos clic a mas opciones nos muestra

La ficha esquema nos muestra, la opción de incluir la clave principal

134

Escuela de Tecnología de la Información

Capítulo 3: Trabajando con datos externos

Para terminar esta la alternativa de guardar los pasos de exportación y terminados dando clic en el botón Cerrar.

Nos ubicamos en la Carpeta y vamos a observarl el archivo.

Escuela de Tecnología de la Información

135

Microsoft Office Access 2016

Preguntas de Repaso 1. ¿Como se denomina al proceso de recoger datos de un programa diferente y los incorpora a su base de datos? 2. ¿Cual de los siguientes elementos no puede importarse a otra base de datos: a. Tablas b. Consultas c. Formularios d. Macros? 3. A cuál grupo de comandos tengo que hacer clic, para incluir los datos un block de notas a mi base de datos a. El grupo Importar b. El grupo Exportar 4. Para Importar tablas de Access al mismo programa de Access, podemos elegir a. Importar datos y estructura b. Importar estructura y relaciones c. Ay B son ciertas d. A y B son falsas 5. ¿Cuál es la finalidad del guardar nuestras importaciones en:

Ejercicios Casos Propuestos 1. De la base de datos bdSenati de la tabla alumnos, exporte los campos alunombres, alupaterno, alumaterno, alufechnac, aludirección, alusexo y alucorreo, a Word para la realización de una carta tipo Combinacion de Correspondencia. En dicha carta comunicaremos a nuestros alumnos la aparición de de ofertas de nuevos cursos de Ofimática. 2. De la misma base de datos exporte todos los campos menos el campo alufoto a un Block

de Notas y a un archivo PDF.

136

Escuela de Tecnología de la Información

Capítulo

4 Macros y Opciones de Inicio Objetivos Especificos : Crear macros Asignar macros a controles de formulario Personalizar herramientas Definir las opciones de inicio

Introducción: Las macros son de mucha utilidad, ya que nos permite poder automizar tareas a través de fragmentos de código. Y en Access es una de las herramientas mas usada en la optimización de sus archivos. Asi que empecemos conociendo más el mundo de las macros.

Microsoft Office Access 2016

Introducción a Macros Las Macros son un método sencillo para llevar a cabo una o varias tareas básicas repetitivas como abrir y cerrar formularios, mostrar u ocultar barras de herramientas, ejecutar informes, etc... En Access tenemos dos tipos de macros, tenemos las macros independientes o la macros incrustadas o asociadas, cual es la diferencia entre una y otra, que en el caso de las macros independientes es que la podemos usar en cualquier lugar de mi base de datos. En cambio, una macro incrustada o asociada es la que se guarda de manera conjunta con el formulario o informe y solo se puede ejecutar desde el formulario o informe donde esta guardada. La configuración por defecto de Access, nos impedirá ejecutar ciertas acciones de macro si la base de datos no se encuentra en una ubicación de confianza, para evitar acciones malintencionadas. Para ejecutar correctamente las macros de bases de datos que consideremos fiables, podemos añadir la ubicación de ésta al Centro de confianza.

Crear una Macro El procedimiento, para crear una macro es el siguiente: Clic en la Ficha Crear: Del grupo de comandos de Macros y código: clic en Macro. Se abrirá la ventana principal de la Macro: Vista de diseño de Macro.

138

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

En ella se muestra un cuadro despeglable desde donde podemos elegir la macro que deseamos se ejecute. Dentro de la lista de este menú despegable se muestra una lista de las macros mas usadas y que no son de riesgos para manipular una base de datos.

Si nosotros desearamos ver todas las macros incluidas las de riesgos para poder trabajar con nuestra base de datos, es necesario que le demos clic al comando Mostrar todas las acciones, que se encuetra dentro del grupo de comandos de Mostrar u ocultar.

Escuela de Tecnología de la Información

139

Microsoft Office Access 2016

Luego procedemos nuevamente a dar clic en e cuadro combinado de macro y vamos a observar que la cantidad de macros que inicialmente había a aumentado, esto es debido a que también se muestra las macros que Access considera de riesgo.

Otro botón que es importante conocer es Catálogo de Acciones que se encuentra dentro del grupo de comandos de Mostrar u Ocultar, este botón es importante, ya que cuando damos clic se activa al lado derecho el Catalogo de Acciones.

¿Qué es el catalogo de acciones? Este panel nos muestra las acciones organizadas por categorías o jerarquías algo que resulta muy útil por que en versiones anteriores cuando uno quería hacer la búsqueda de una macro a través del menú despegable nos muestra todas las macros ordenadas de manera alfabética y es imposible saber para que sirve cada de una de estas macros Es por ese motivo que se ha incluido el catalago de acciones que no es ni mas ni menos que son las mismas macros que nos muestra el menú despegable, pero de una manera mas organizada y fácil para el usuario. Por ejemplo:

140

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Si quisiéramos saber de una macro que me permitiera poder manipular las ventanas en el catolago de acciones me voy a la categoría Administración de ventanas y cuando le haga un clic, te va a mostrar la lista de todas las macros categorizadas en el caso del ejemplo de Administración de ventanas.

Actividad 1: Crear una macro sencilla Vamos a abrir la base de datos BdSenati, de ella vamos a crear una macro que permita abrir la tabla: Instructor 1) Clic en la ficha Crear, luego clic en Macro. 2) Del cuadro combinado de Acciones, seleccionamos Abrir Tabla

3) Nos muestra una nueva ventana de Argumentos

4) De este cuadro de dialogo que nos muestra tres opciones, seleccionamos en nombre de la tabla: instructor, Vista, la dejamos en Hoja de datos y Modo de datos de la misma manera en modificar, como se muestra en la grafica adjunta.

5) El siguiente paso es dar clic en el botón Guardar 6) Ingresamos el nombre y aceptamos

Escuela de Tecnología de la Información

141

Microsoft Office Access 2016

Podemos añadir tantas acciones como queramos, simplemente deberemos colocarlas una después de otra y en el orden que queremos que se ejecuten. Recuerda que deberás tener cuidado con el orden en el que estableces las acciones, pues es muy importante. Imagina que tienes dos acciones (entre varias) que abren y cierran un formulario. El formulario deberá estar abierto antes de ejecutar la orden de cerrar el formulario, por lo que la acción de apertura debería ir antes de la de cierre. En todo momento podrás utilizar los botones de Insertar o Eliminar filas para insertar nuevas acciones entre dos existentes o eliminar una acción. Para cambiar el orden en el que se encuentren las acciones puedes seleccionar algunas de ellas y arrastrarlas con el ratón para colocarlas en otra posición. Cuando la Macro está terminada, puede guardarse, ejecutarse y cerrarse. Más tarde podremos llamarla desde un control Botón de comando, o ejecutarla directamente desde la ventana de la base de datos haciendo clic en Ejecutar o bien haciendo doble clic directamente sobre ella. Acciones más utilizadas En este punto veremos las acciones más utilizadas en las Macros. Siempre puedes si es necesario que necesites ayuda, sobre la acción que ejecuta una Macro, activar el catalogo de acciones y consultar desde dicho catalogo. Si no encuentras lo que buscas, puedes buscar ayuda en el ayudante de Access. Cuando selecciones una Acción en la lista desplegable, se activa la ventana de argumentosm, hay que tener en cuenta que las acciones de la ventana de argumentos no siempre van a ser la misma cantidad. Por ejemplo, la ventana de argumentos de abrir tabla como en la Actividad 1, ejecutada es diferente a la ventana de Argumentos como de la Macro:

142

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

A continuación, veremos las acciones más comunes, puedes ver la descripción de sus argumentos de acción haciendo clic en. TIPO DE MACRO

DESCRIPCION DE LA MACRO

Abrir Consulta

Esta acción abre una consulta escogida entre las existentes en la base de datos.

AbrirFormulario

Del mismo modo que la acción anterior, abre un formulario

AbrirInforme

Permite abrir un informe

AbrirTabla

Esta acción permite abrir una tabla.

BuscarRegistro

Esta acción busca el primer registro que cumpla los criterios especificados. Puedes utilizar esta acción para avanzar en las búsquedas que realices.

BuscarSiguiente

Se posiciona en el siguiente registro que cumpla con los criterios indicados en la acción BuscarRegistro anterior. No tiene argumentos.

CancelarEvento

Esta acción cancela el evento que produjo la ejecución de la macro. No tiene argumentos.

Cerrar

Con esta acción podrás cerrar cualquier objeto que se encuentre abierto.

CuadroMsj

Con las Macros incluso podremos mostrar mensajes para interactuar con el usuario.

DetenerMacro

Introduce esta acción en una Macro para detener su ejecución. No tiene argumentos. Verás su utilidad más adelante.

DetenerTodasMacros

Esta acción detendrá todas las Macros que se estén ejecutando en ese momento. No tiene argumentos.

*Eco

Esta acción es muy útil para ocultar al usuario las operaciones que se están realizando con una Macro. Permite la activación o desactivación de la visualización de las acciones en pantalla.

EjecutarComando

Utiliza esta acción para lanzar comandos que puedas encontrar en cualquier barra de herramientas.

*EstablecerValor

Permite modificar los valores de los campos.

IrARegistro

Te permitirá saltar a un registro en particular dentro de un objeto.

Maximizar

Esta acción maximiza la ventana activa para que ocupe todo el espacio de la ventana de Access.

Minimizar

Esta acción minimiza la ventana activa convirtiéndola en una barra de título en la parte inferior de la ventana de Access.

Salir

Esta acción hace que Access se cierre.

Escuela de Tecnología de la Información

143

Microsoft Office Access 2016

Algunas de estas acciones no se muestran si no está pulsado el icono Mostrar todas las acciones, en la banda de Diseño de Macros.

Actividad 2: Asignar la macro a mas de un formulario 1) Vamos a asignar una macro independiente, a dos formularios. 2) De la macro creada: Abrir Tabla Instructor, la vamos a asignar dentro de un formulario, para ello vamos a abrir en modo diseño el Formulario: Instructores

3) Le agregamos un botón de comando, si el esta activo el Asistente de de Controles, no interesa, solo cancelamos al momento de colocar el botón de comando al insertarlo en el formulario, le ponemos de nombre Abrir Tabla Instuctores

144

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

4) Clic derecho en el botón, seleccionamos la opción propiedadesy vamos a la ficha Eventos.

5) Clic en el cuadro combinado Al hacer clic, nos mostrará la macro creada, seleccionamos dicha macro.

6) Cambiamos el formulario en vista Formulario y damos clic al botón, observaremos que se visualizará la tabla instructores.

7) Se observa lo siguiente

Escuela de Tecnología de la Información

145

Microsoft Office Access 2016

8) Cerramos la tabla y el formulario, procedemos a abrir la tabla distritos y insertamos otroa botón de comando repitiendo los pasos anteriores hasta la ventana de propiedades del botón en la ficha eventos.

9) En la ficha eventos del comando, en el evento Al hacer doble clic.

146

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

10) Regresamos a la vista Formulario y ejecutamos, solo lo va a hacer cuando hagamos doble clic sobre el botón.

11) Guardamos y cerramos

Macros Condicionadas Ahora que ya conocemos las acciones y cómo introducirlas y ordenarlas, veremos un modo que nos ayudará a crear macros con muchas posibilidades. Para ello utilizaremos las condiciones, algo asi parecido como la función Si en Excel.

Escuela de Tecnología de la Información

147

Microsoft Office Access 2016

Actividad 3: Crear Macros condicionadas 1) Vamos a trabajar con una macro incrustrada dentro de un formulario 2) Cmo recordaremos existen dos tipos de macros las independientes que ya hemos trabajada y ahora la haremos con las incrustadas, el procedimiento es un poco diferente, al ya conocido independiente. 3) De la base de datos bdSenati, vamos a realizar que nos aparezca un mensaje que nos informe que esta jalado en el curso de NotFinal, de la tabla Notas. 4) Para ello abrimos el formulario Notas, activamos la ventana de propiedades del Formulario, vamos a la ficha Eventos, observaremos que el objeto formulario es el que presenta mas Eventos.

5) En el Evento: Al activar registro damos clic: en el botón …

6) Nos muestra la ventana Elegir generador, elegimos la opción Generador de Macros, y damos clic en Aceptar.

148

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

7) Nos aparece la ventana de macros, aca surge la duda, que opción es la que tengo que elegir. 8) Puedes optar desde el catalogo de opciones con la opción Sí, o desde el mismo cuadro combinado de macro clic a la ficha desplegable y elegir la opción Sí, cualquiera de ellos es la correcta.

9) Cuando damos Clic en Sí, nos muestra la siguiente ventana

10) Seleccionamos el Generador de Expresiones:

11) En la ventana generador de expresiones, vamos a escribir la condición, tal como se muestra en la pantalla:

Escuela de Tecnología de la Información

149

Microsoft Office Access 2016

12) Aceptamos y nos muestra la siguiente pantalla

13) Del cuadro combinado elegimos la macro: Cuadro de Mensaje

150

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

14) Damos clic en Agregar Sino, para el valor Falso de la función Sí.

15) Rellenamos de tal forma que nos quede de esta manera:

16) Guardamos y ejecutamos el formulario en vista Formulario.

Escuela de Tecnología de la Información

151

Microsoft Office Access 2016

17) Observaremos para alumnos aprobados en el examen final

18) Guardamos y cerramos.

Puedes unir varias condiciones utilizando los operadores Y y O como vimos en el tema de consultas. Aunque a primera vista el uso de Macros en Access pueda parecer algo limitado, veremos en las próximas páginas que podemos crear grupos de macros y definir bucles repetitivos que nos permitirán realizar operaciones mucho más complejas. Grupos de Macros Cuando tenemos muchas macros, puede llegar a ser dificultoso localizar una macro dentro de la ventana Base de Datos. Al igual que es más cómodo agrupar los archivos en carpetas, puede ser útil agrupar nuestras macros en grupos de macros que contengan macros relacionadas. También los grupos de macros pueden ser útiles para definir macros a modo de subrutinas dentro de una macro principal. Para definir un grupo de macros haremos uso de la opción Catalogo de Opciones, damos clic en la opción Grupo.

Esta columna nos da la opción de crear diferentes macros dentro de una Macro principal. Imagina que tenemos la siguiente macro y la guardamos como Macro1:

152

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Macro1 aparecerá en la ventana Base de Datos como una macro, pero realmente será un grupo de macros formado por las macros grupo1, grupo2, etc. A partir de este momento podremos ejecutar las acciones AgregarMenu, CuadroMsj, y Beep simplemente llamando a la macro Macro1

Botones de comando en formularios Como su nombre indica estos controles sirven para ejecutar comandos cuando son pulsados. Los usuarios avanzados de Access son capaces de concentrar muchísimas acciones en un solo botón gracias a la integración de este programa con el lenguaje de programación Visual Basic y al uso de macros.

El asistente para controles Cuando procedemos a activar un botón de comando, teniendo el asistente activado, nos aparece una cuadro de diálogo. Veremos paso a paso cómo deberemos seguirlo para conseguir nuestro objetivo.

Escuela de Tecnología de la Información

153

Microsoft Office Access 2016

En la primera pantalla podremos elegir entre diferentes acciones a realizar cuando se pulse el botón. Como puedes ver en la imagen estas acciones se encuentran agrupadas en Categorías. Selecciona la Categoría que creas que se ajusta más a lo que quieres realizar y luego selecciona la Acción en la lista de la derecha. Pulsa Siguiente para continuar.

Ahora podrás modificar el aspecto del botón. Puedes elegir entre mostrar un Texto en el botón, o mostrar una Imagen. En el caso de escoger Imagen, podrás seleccionar una entre las que Access te ofrece. Marca la casilla Mostrar todas las imágenes para ver todas las imágenes que Access tiene disponible para los botones. También podrías hacer clic en el botón Examinar para buscar una imagen en tu disco duro. Cuando hayas terminado pulsa Siguiente para continuar, y que aparezca la siguiente pantalla

En esta última pantalla le daremos un nombre al control Botón de Comando para poder reconocerlo más tarde en la lista de controles.

154

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Pulsa Finalizar para terminar. Al ser tan fácil añadir Botones de comando con el Asistente este control se convierte en una forma muy sencilla de añadir acciones a tus formularios e informes. Como podrás ver en las primeras ventanas del Asistente para controles existen varias acciones que podrás realizar. Con la categoría de Exploración de registros podrás moverte de forma rápida por todos los datos del formulario, buscando registros o desplazándote directamente a alguno en particular. Utiliza las acciones de Operaciones con registros para añadir nuevos, duplicarlos, eliminarlos, guardarlos o imprimirlos. Del mismo modo podrás jugar con los formularios aplicándoles filtros y actualizándolos. En cualquier momento podrás añadir un botón para abrir, cerrar o imprimir informes, formularios y consultas.

Macro Autoexec Una macro Autoexec, es una macro que se ejecuta al abrir una base de datos.

Actividad 4: Crear un formulario de Login con autoexec Vamos a proceder a crear un usuario que tres personas puedan acceder a través de un usuario, dependiendo del usuario va a abrir determinado Formulario. 1. Primero creamos un Formulario Login de la siguiente manera

Escuela de Tecnología de la Información

155

Microsoft Office Access 2016

2. Procedemos a crear una Macro que me permita poder abrir este formulario que acabo de crear. 3. Para ello clic en la Ficha Crear, clic en Macro y asignamos de acuerdo a nuestro gráfico que se muestra a continuación.

4. Procedemos a guardar la macro con el nombre: autoexec

5. Probamos cerrando la base de datos y vovlviendola a abrir, observaremos que saldrá de manera automática la pantalla de bienvenida

156

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

6. Procedemos a cambiar la vista del formulario en modo de diseño

7. Seleccionamos el objeto Login y vamos a la ficha eventos, seleccionamos el evento clic, el botón de los tres puntos

8. Vamos a trabajar en ella con la macro, que hace referencia a la función Sí, para ello vamos a considerar a tres usuarios: Liliana, Ximena y Nadia, cada uno de ellos procederá a abrir un determinado Formulario:

Escuela de Tecnología de la Información

157

Microsoft Office Access 2016

9. Procedemos a agregar las condiciones para cada usuario presionando clic en el botón Agregar o Sí, dejar configurado tal como se muestra en la pantalla.

10. Ejecutamos y vamos a observar que debe funcionar todo a la perfección, lo que significa que se abre primero la pantalla de Bienvenida, y dependiendo del usuario va a abrir el formulario correspondiente.

 Para omitir la macro AutoExec y otras opciones de inicio, mantenga presionada la tecla MAYÚS mientras se inicia la base de datos. Para obtener más información, vea el artículo Omitir las opciones de inicio cuando se abre una base de datos.  Otra forma de realizar acciones cuando se inicie una base de datos consiste en especificar un formulario de inicio y, a continuación, adjuntar las macros o código VBA a los eventos AlAbrir o AlCargar del formulario. Para obtener más información, vea el artículo Establecer el formulario predeterminado que aparece cuando se abre una base de datos.

158

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Actividad 5: Crear un formulario que filtre una tabla Abrimos la base de datos bdSenati, de la tabla alumnos creamos un formulario usando el asistente que se visualice de la siguiente manera

Ingresamos a vista diseño y en ella agregamos un cuadro combinado en la sección encabezado de formulario, se activará el asistente de formulario.

Damos clic en siguiente:

Escuela de Tecnología de la Información

159

Microsoft Office Access 2016

Agregamos dos valores Femenino y masculino

Damos clic en siguiente

160

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Ponemos de nombre Sexo y damos clic en Finalizar. En la propiedad nombre, le ponemos comboSexo

Luego en la ficha: Eventos, en el evento Al hacer clic, damos clic en el botón:

Seleccionamos generador de macros y aceptamos Nos muestra el editor de macros y procedemos a editar con la función si

Escuela de Tecnología de la Información

161

Microsoft Office Access 2016

Lo que se ha hecho es que Primeo en el combo Selecciono sexo y al estar seleccionado esta opción lo que ocurre es que se filtre la data de acuerdo al sexo seleccionado

En esta vista se puede observar los 80 registros, debido a que no se ha seleccionado nada del combo Procesados a aplicar el filtro seleccionemos un sexo: ejemplo femenino

Si observa nos muestra 46 registros todos de sexo Femenino,

162

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Opciones de navegación Cuando se crea una categoría personalizada, se crea para la base de datos que está abierta y la categoría está ligada a esa base de datos. No se pueden transferir categorías y grupos personalizados a otras bases de datos. Para crear y administrar categorías y grupos personalizados, se utiliza el cuadro de diálogo Opciones de exploración. Éstos son los pasos generales del proceso: 

Primero, se crea una categoría personalizada. Access proporciona la categoría: Personalizado. Puede cambiar el nombre de esa categoría y, a continuación, agregar o quitar grupos según sus necesidades, o bien, puede crear una nueva categoría en cualquier momento.



Tras la creación de una categoría, se crea uno o varios grupos para la nueva categoría.



Cierre el cuadro de diálogo Opciones de exploración y, en el panel de exploración, arrastre o copie y pegue los objetos de la base de datos que desee asignar al grupo personalizado. Los objetos se arrastran o se copian desde un grupo especial denominado Objetos no asignados, que Access crea cuando se crea una categoría personalizada.



Cuando se agrega un objeto de base de datos desde el grupo Objetos no asignados a un grupo personalizado, Access crea un acceso directo a ese objeto: no se mueve ni se copia el propio objeto. Si se cambia de nombre o se elimina un acceso directo en un grupo personalizado, esos cambios no afectan al propio objeto, sólo al acceso directo a dicho objeto.



Tras rellenar los grupos personalizados, puede ocultar el grupo Objetos no asignados y todos los demás grupos que no desee mostrar.

Crear Categorías 1. Haga clic con el botón secundario del mouse en el menú de la parte superior del panel de exploración y, a continuación, haga clic en Opciones de navegación...

Escuela de Tecnología de la Información

163

Microsoft Office Access 2016

2. En el cuadro de diálogo Opciones de navegación, bajo la lista Categorías, haga clic en Agregar elemento. Aparecerá una nueva categoría en la lista.

Esta figura ilustra una nueva categoría personalizada:

3. Escriba un nombre para la nueva categoría y, a continuación, presione ENTRAR. Procure usar un nombre que tenga sentido para los usuarios de la base de datos. Tras crear el nombre, observe que el título de la lista a la derecha cambia para reflejar ese nombre. Por ejemplo, si asigna el nombre Mi panel de control a la nueva categoría, el título de la lista a la derecha será Grupos de "Panel de control". Asimismo, observe que la lista contiene un grupo denominado Objetos no asignados, que Access crea de forma predeterminada. Este grupo contiene todos los objetos de la base de datos, y son dichos objetos los que se utilizan para rellenar el grupo personalizado.

164

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Tras crearse la categoría personalizada, se crea uno o varios grupos para dicha categoría. Se pueden crear tantos grupos como sean necesarios. Mantenga abierto el cuadro de diálogo Opciones de exploración y siga los procedimientos que se detallan a continuación Crear un grupo personalizado 1. Bajo la lista Grupos de "nombre de grupo", haga clic en Agregar grupo y, a continuación, escriba un nombre para el grupo. Puede repetir este proceso tantas veces como crea necesario. Por ejemplo, Mi panel de control puede contener tres grupos: Formularios de entrada de datos, Informes y Consultas. Los grupos que agregue en esta fase del proceso dependen de las necesidades de los usuarios o de sus propias preferencias.

2. Mantenga activada la casilla de verificación situada junto a Objetos no asignados y haga clic en Aceptar. Access cierra el cuadro de diálogo Opciones de exploración y agrega el nuevo grupo personalizado al panel de exploración, pero aún no podrá ver el nuevo grupo. 3. Siga los procedimientos descritos a continuación para poder ver el nuevo grupo y agregar objetos al grupo.

Escuela de Tecnología de la Información

165

Microsoft Office Access 2016

Agregar objetos a un grupo personalizado 1. Haga clic en el menú situado en la parte superior del panel de exploración y, en la sección superior del menú, haga clic en la nueva categoría. Los grupos creados para la categoría aparecen en la sección inferior del menú, junto con el grupo Objetos no asignados. 2. En el grupo Objetos no asignados, seleccione los elementos que desee usar en el grupo personalizado y, a continuación, muévalos a ese grupo. Access permite mover los elementos seleccionados de varias formas. Puede: 

Arrastrar los elementos individualmente.



Mantener presionada la tecla CTRL y hacer clic en varios elementos y, a continuación, arrastrar los elementos hasta el grupo personalizado.



Hacer clic con el botón secundario del mouse (ratón) en uno de los elementos seleccionados, elegir Agregar al grupo y, a continuación, hacer clic en el nombre del grupo personalizado.

Cuando finalice, podrá dejar visible el grupo Objetos no asignados en el panel de exploración u ocultarlo.

Ocultar el grupo Objetos no asignados 1. Haga clic con el botón secundario del mouse en el menú de la parte superior del panel de exploración y haga clic en Opciones de exploración.

166

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

2. En el panel Grupos de categoría, desactive la casilla de verificación Objetos no asignados.

Después de crear una categoría personalizado y un grupo personalizado y de agregar algunos accesos directos al grupo, puede usar esos accesos directos para crear otros grupos. En el siguiente procedimiento se explica cómo realizar esta operación. Crear un nuevo grupo personalizado mediante un objeto de un grupo personalizado existente Para usar esta técnica, primero debe crear una categoría personalizada y agrupar los objetos siguiendo los procedimientos descritos en las secciones anteriores. 1. Con una categoría y un grupo personalizados abiertos en el panel de exploración, haga clic con el botón secundario del mouse en el objeto que desee colocar en un grupo nuevo. 2. Elija Agregar al grupo y, a continuación, haga clic en Nuevo grupo. Aparecerá un grupo nuevo en el panel de exploración

Escriba un nombre para el nuevo grupo y, a continuación, arrastre accesos directos adicionales al nuevo grupo, según sea necesario.

Escuela de Tecnología de la Información

167

Microsoft Office Access 2016

Mostrar u ocultar los grupos y objetos de una categoría Es posible ocultar algunos o todos los grupos de una categoría personalizada y algunos o todos los objetos de un grupo. Recuerde los siguientes puntos: 

Access proporciona dos formas de ocultar un objeto. Se pueden usar los comandos del panel de exploración para ocultar un objeto de su grupo y categoría primarios, o bien, se puede elegir una propiedad de cada objeto y ocultarla de todos los grupos y categorías de la base de datos abierta.



Los objetos y grupos ocultos pueden quedar totalmente invisibles, o bien, se pueden mostrar en el panel de exploración como iconos atenuados y no disponibles. Para ello, active o desactive la casilla de verificación Mostrar objetos ocultos en el cuadro de diálogo Opciones de exploración. Esta casilla de verificación se usa también para mostrar o restaurar un grupo u objeto.

Los pasos que se describen en las siguientes secciones indican cómo se lleva a cabo cada tarea. Ocultar un grupo en una categoría 

En el panel de exploración, haga clic con el botón secundario del mouse en la barra de título del grupo que desee ocultar y, a continuación, haga clic en Ocultar.

Para realizar esta tarea también puede usar el cuadro de diálogo Opciones de navegación…. Abra el cuadro de diálogo (vea los pasos descritos en la siguiente sección si no sabe cómo hacerlo) y, en la lista Grupos de "categoría", desactive la casilla de verificación situada junto al grupo que desee ocultar.

168

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Restaurar un grupo oculto en una categoría 1. Haga clic con el botón secundario del mouse en la barra de menús de la parte superior del panel de exploración y, a continuación, haga clic en Opciones de navegación… en el menú contextual. 2. En la lista Categorías, seleccione la categoría que contenga el grupo oculto. 3. En la lista Grupos de "categoría", active la casilla de verificación situada junto al grupo oculto. 4. Haga clic en Aceptar.

Ocultar un objeto en su grupo primario 

En el panel de exploración, haga clic con el botón secundario del mouse en el objeto y, a continuación, haga clic en Ocultar.

Ocultar un objeto de todos los grupos y categorías 1. Haga clic con el botón secundario del mouse en el objeto que desee ocultar y, a continuación, haga clic en Propiedades del objeto.

Escuela de Tecnología de la Información

169

Microsoft Office Access 2016

Aparecerá el cuadro de diálogo Propiedades y Access agregará el nombre del objeto al título del cuadro de diálogo. Por ejemplo, si abre un formulario denominado Pedidos, el título del cuadro de diálogo será Propiedades de Pedidos. La siguiente figura muestra el cuadro de diálogo. 2. Active la casilla de verificación Oculto. 3. Haga clic en Aceptar. Restaurar o mostrar un objeto oculto 1. Haga clic con el botón secundario del mouse en el menú de la parte superior del panel de exploración y haga clic en Opciones de navegación… en el menú contextual. 2. Bajo Opciones de presentación, active la casilla de verificación Mostrar objetos ocultos. 3. Haga clic en Aceptar y vuelva al panel de exploración. En el panel se muestra un icono atenuado para todos los objetos ocultos. 4. Siga uno de estos procedimientos:

170



Si ocultó el objeto únicamente de su grupo y categoría primarios, haga clic con el botón secundario del mouse en el objeto y, a continuación, haga clic en Mostrar.



Si ocultó el objeto de todas las categorías y todos los grupos estableciendo la propiedad Oculto, haga clic con el botón secundario del mouse en el objeto, haga clic en Propiedades de vista y, a continuación, desactive la casilla de verificación Oculto.

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Quitar y restaurar objetos de grupos personalizados Los grupos personalizados pueden cambiar con el tiempo a medida que cambien las necesidades de los usuarios o de la empresa. Es posible agregar o quitar los objetos de un grupo en cualquier momento. Los siguientes procedimientos indican cómo hacerlo. Eliminar objetos de un grupo personalizado 

En el panel de exploración, haga clic con el botón secundario del mouse en el objeto que desee quitar y, a continuación, haga clic en Eliminar.

Restaurar un objeto en un grupo personalizado 1. Si está oculto el grupo Objetos no asignados, muéstrelo. a. Haga clic con el botón secundario del mouse en el menú de la parte superior del panel de exploración y haga clic en Opciones de navegación… en el menú contextual. b. En el panel Grupos de "categoría", active la casilla de verificación situada junto a Objetos no asignados. 2. Según sea necesario, arrastre o copie y pegue el objeto deseado del grupo Objetos no asignados en el grupo personalizado.

Cambiar el nombre de un objeto de un grupo personalizado 1. En el panel de exploración, haga clic con el botón secundario del mouse en el objeto cuyo nombre desee cambiar y, a continuación, haga clic en Cambiar nombre de acceso directo. Escriba el nuevo nombre del acceso directo y, a continuación, presione ENTRAR

Cambiar entre categorías Para cambiar entre categorías, solo hay que hacer clic en el Menú de Categorías y elegir la Categoría de su Preferencia

Ordenar categorías Haga clic con el botón secundario del mouse en el menú de la parte superior del panel de exploración y elija Ordenar por... Elegir la Opción que desee

Escuela de Tecnología de la Información

171

Microsoft Office Access 2016

Vistas Haga clic con el botón secundario del mouse en el menú de la parte superior del panel de exploración y elija Vista por:

Opciones de la base de datos Formulario o página inicial Cuando usted abre una base de datos se le muestra de forma predeterminada la ventana que le permite administrar objetos en ella (ventana Base de datos); esto es bueno, pero en muchos casos, cuando se entrega una base de datos a un usuario final, se desea que ellos accedan directamente a los formularios en un orden predefinido (precisamente para eso se ha diseñado el Panel de Control en este capítulo).

172

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Usted puede configurar el comportamiento de Access al abrirse una base de datos de la siguiente manera: 1. Haga clic en la ficha Archivo, Elija la opción Opciones, clic en la ficha Base de datos actual. Usted verá aparecer el cuadro de diálogo Base de datos actual

2. Especifique la configuración que desee establecer y haga clic en Aceptar. 3. Cierre la base de datos y vuelva a abrirla para ver el efecto de su configuración. Para abrir una base de datos ignorando las opciones de inicio que se haya establecido en ella: 1. Seleccione el archivo de la base de datos en el explorador de Windows. 2. Mantenga presionada la tecla SHIFT mientras hace doble clic sobre el archivo.

Actividad 6: Creando un formulario de inicio Panel de Control Usted abrirá la base de datos BdSenati, vamos a configurar en opciones de inicio 

Crear el Formulario principal que nos muestre opciones para poder crear el Formulari panel de control.



Primero tenemos que insertar el comando Administrador de panel de Control, que me permita poder crear dicho Formulario

Escuela de Tecnología de la Información

173

Microsoft Office Access 2016



Para hacer esto tenemos que entrar a opciones de Access, lo que tenemos que hacer es crear un Grupo, en el grupo creado agregamos el comando Administrador del panel de control.

Damos clic al comando Administrador de panel de control, como no encuentra un formulario de ese tipo me pregunta, si deseamos crear

Damos clic en Si

174

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Damos clic en el botón modificar y nos muetra esta ventana

Procedemos a dar clic en el botón Nueva…

Damos clic en el botón Aceptar, visualizaremos

Escuela de Tecnología de la Información

175

Microsoft Office Access 2016

El proceso es repetitivo, siigo agregando

Procedo a cerrar, dando clic en el respectivo botón

176

Escuela de Tecnología de la Información

Capítulo 4: Macros y opciones de inicio

Si damos clic en cualquiera de los botones como abrir alumnos este formulario me abre el formulario alumnos

Escuela de Tecnología de la Información

177

Microsoft Office Access 2016

Preguntas de Repaso 1. ¿Qué es una macro? 2. ¿Cómo se crea una macro? 3. ¿Cómo se asigna una macro a una etiqueta en un formulario? 4. ¿Cómo se asigna una macro a un botón de comando en un formulario? 5. ¿Cómo se crea una barra de herramientas? 6. ¿Cómo se especifican las opciones de inicio? 7. ¿Qué debe hacerse para que al abrirse una base de datos de Access se ignoren las opciones de inicio que se haya especificado?

Ejercicios Casos Propuestos Actividad propuesta 1 Abra la base de datos Biblioteca; en ella: 1. Cree un panel de control que abra los siguientes objetos de la base de datos: a. El formulario Libro b. El formulario Usuario c. El informe Prestamo. 2. Cree un formulario Panel de control y a los objetos mencionados en la pregunta 1 de esta actividad. Incluya el botón cerrar aplicacion 3. Establezca las opciones de inicio para que al abrirse la base de datos no se pueda abrir directamente ninguna tabla o consulta y el Panel de control sea el primer objeto que se muestre al usuario. Actividad propuesta 2 Abra la base de datos bdNeptuno; en ella: 1. Cree un panel de control que abra los siguientes objetos de la base de datos: a. El formulario Clientes b. El formulario Categorias c. El informe Empleados 2. Cree un formulario Panel de control y a los objetos mencionados en la pregunta 1 de esta actividad. Establezca las opciones de inicio para que al abrirse la base de datos no se pueda abrir directamente ninguna tabla o consulta y el Panel de control sea el primer objeto que se muestre al usuario.

178

Escuela de Tecnología de la Información

Capítulo

5 Programación con VBA Objetivos Especificos: Conocer variables que utiliza vba de access Programar con VBA. Agregar controles ActiveX Crear procesos con VBA

Introduccion: Sabemos que una macro no puede sacar una ventana que pida introducción de datos en Access, cosa que si lo podemos hacer con el editor de VBA, es por eso que programar con VBA vamos a poder automatizar tareas de Access haciendo que nuestras macros sean mas potentes.

Microsoft Office Access 2016

Uso de VBA en Access VBA quiere decir Visual Basic para Aplicaciones. Viene a ser un conjunto de librerías, (un tipo especial de programas), creado por Microsoft que incluye, un entorno de desarrollo y un lenguaje de programación. Se puede lograr manipular objetos, ingreso de datos por parte del usuario, modificaciones a nivel de sistema operativo, crear funciones propias, etc. VBA no es único en Access; lo vamos a encontrar en todas las aplicaciones de Office como Word, Excel, PowerPoint, Project o Visio, y en programas que no son de Microsoft y tan diversos como Corel Draw o AutoCad. Dominando los fundamentos de VBA, se podría desarrollar aplicaciones en cualquiera de esos aplicativos. VBA tiene un entorno de programación que es semejante para todos estos programas.

180

VBA para Access

VBA para MS Word

VBA para PowerPoint

VBA para AutoCAD

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Los módulos Los módulos al igual que las macros son los objetos que se utilizan para aumentar la funcionalidad de la base de datos. Un módulo es un conjunto de declaraciones, instrucciones y procedimientos que se almacenan de manera conjunta como una unidad en los que se guarda el código que va a utilizar VBA. Hay 2 tipos de módulos. 

Módulos generales. - Contienen procedimientos generales que no están asociados a ningún tipo de objeto, estos modulos se enumeran en el panel de exploración.



Módulos de Clase. – Los módulos de clases se adjuntan a los formularios o informes y generalmente contienen procedimientos específicos del formulario o informe. Los módulos de clases no se enumeran en el panel de exploración.

Actividad 1: Crear nuestro primer archivo vba Manos a la obra: vamos a crear una nueva base de datos con el nombre Ejercicio01.accdb

Se ingresa el nombre: Ejericio01.accdb y damos clic en el botón Crear.

Escuela de Tecnología de la Información

181

Microsoft Office Access 2016

Para acceder a los módulos generales debemos presionar en la Ficha Crear, y luego la Nacros y codigo, para luego elegir Modulo.

Una vez hecho esto se abre el editor de VBA y nos crea un módulo con el original nombre de Módulo1.

Este módulo está vacío, salvo la primera Linea: Option Compare Database Desde la ventana del editor que se ha abierto, presionamos la opción de menú: Herramientas > Opciones

182

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

En el formulario que aparece activaremos la opción [Requerir declaración de variables].

Le damos a Aceptar. ¿Qué significa lo que hemos hecho?Cuando empecemos a escribir código, veremos que existen unos elementos que se llaman variables, a los que podremos asignar valores. Si tenemos activada la opción [Requerir declaración de variables] nos obligará a declarar las variables antes de poder usarlas. Más adelante veremos que hay variables que pueden contener Texto, Números, Fechas, Objetos, etc. Esto significa darle nombre y expresar qué tipo de dato va a contener. Una vez hecho esto grabamos el módulo dándole al botón Guardar ó a la opción de menú Archivo, Guardar ó combinando las teclas [Ctrl] + [S]

Aceptamos el nombre por defecto Módulo1 y cerramos la ventana.

Escuela de Tecnología de la Información

183

Microsoft Office Access 2016

Para cerrar la ventana del editor podemos usar Varios caminos: 1. Hacemos clic en el menú Archivo y elegimos Cerrar y volver a Microsoft Office Access

2. O simplemente usar el botón Cerrar

Ingresando código vba a un formulario Vamos a crear un nuevo formulario que lo vamos a llamar Saludo. Para poder entender el funcionamiento de un código vba.

Actividad 2: Creando un formulario, para ingresar código vba 1. Creamos un formulario en blanco y vamos a desactivar el botón del [Asistente para controles] 2. Nos vamos a la Ficha Diseño, Vistas y hacer clic en Vista Diseño 3. Lo guardamos como Saludo

4. Añadimos una Etiqueta al formulario.

184

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

A esta etiqueta le vamos a aplicar las siguientes propiedades:

a. Utilizando las Propiedades, ponemos a la propiedad [Nombre] de la etiqueta el valor lblSaludo (Ficha Otras de la hoja de Propiedades) sustituyendo el que tenía por defecto: Etiqueta1. b. Desde la Ficha [Todos] le ponemos a la propiedad [Título] el valor Saludo, a la propiedad [Tamaño de la fuente] el valor 30, y al [Color de texto] seleccionamos la opción Rojo y a la [Alineación del texto] el valor Centro. 1. Añadimos un Botón y le ponemos en la propiedad [Nombre], cmdSaludo, en la propiedad [Título], le ponemos el nombre Saludar

Escuela de Tecnología de la Información

185

Microsoft Office Access 2016

2. Damos clic al Formulario, verificamos que se visualice el nombre Formulario en la Hoja de Propiedades y ponemos a No las propiedades [Selectores de registro], [Botones de desplazamiento] y Separadores de registro. 3. La propiedad [Centrado automático] la ponemos a Sí, y a la propiedad [Título] el valor Mi primer código. Si visualizamos el formulario se verá algo así como esto:

Si presionamos el botón vemos que no pasa nada. Vamos a hacer que cuando se presione el botón aparezca el mensaje ¡¡¡Hola Mundo!!! en la etiqueta lblSaludo, sustituyendo su contenido actual que es Saludo. 4. Guardar el Formulario con el nombre: Primer Formulario

Fundamentando los formularios Windows trabaja con las llamadas Ventanas (formularios). Esas ventanas contienen objetos, y tanto las ventanas como los objetos pueden mandar unos “mensajes” para indicar a la aplicación que usa Windows, o al propio Windows que han ocurrido determinadas cosas. Esos mensajes se llaman Eventos. Por cierto; en realidad muchos de los objetos, como los botones, también son ventanas. En nuestro caso tenemos los siguientes objetos: • Formulario Saludo • Etiqueta lblSaludo • Botón cmdSaludo

186

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Cada uno de esos Objetos posee una serie de Propiedades, generan determinados Eventos y pueden realizar determinadas acciones mediante unos procedimientos propios que se llaman Métodos. Por ejemplo, al presionar el botón cmdSaludo (se entiende presionar dar click con el botón inquierdo del mouse), se genera el evento [Al hacer Clic] (Click). Podríamos capturar ese evento y aprovecharlo para, por ejemplo, cambiar el texto de la etiqueta lblSaludo. El texto que aparece en la etiqueta está en la propiedad [Título]; en inglés [Caption]. Ahora la pregunta: ¿dónde y cómo se hace todo eso? Cada formulario, y veremos más adelante que también cada informe, lleva asociado un módulo especial. Se llama módulo de clase del formulario.

Actividad 3: Agregar código vba a un formulario Vamos a ejecutar el procedimiento explicado, cambiar el nombre de la etiqueta al presionar el botón saludo. En el modo Diseño del formulario Saludo, seleccionamos el botón cmdSaludo. Abrimos la Hoja de propiedades y seleccionamos la pestaña [Eventos], y dentro de éstos el evento [Al hacer clic]. Al poner el cursor sobre él, nos muestra un botoncito con tres puntos. Pulsamos en él, y seleccionamos [Generador de código] en la ventana que se nos abre. A continuación, pulsamos en el botón [Aceptar].

Tras esto nos abrirá el módulo de clase del formulario Saludo, con el esquema de código correspondiente al evento Clic del botón cmdSaludo:

Escuela de Tecnología de la Información

187

Microsoft Office Access 2016

Crea el siguiente código: Option Compare Database Option Explicit Private Sub cmdSaludo_Click() End Sub Lo que ahora nos importa es el conjunto Private Sub cmdSaludo_Click() End Sub Este código se corresponde al procedimiento que recoge el evento Clic del botón. Consta de varias partes: Private Sub: Indica que empieza un procedimiento del tipo Sub, más adelante veremos en detalle qué es esto. cmdSaludo_Click(): Indica que es el procedimiento al que llama el evento Click del botón cmdSaludo. End Sub: Indica el punto donde acaba el procedimiento Entre esas dos líneas podemos escribir el código que le dirá a Access qué es lo que tiene que hacer. Vamos a hacer 2 cosas: 1. Escribiremos en la propiedad [Título] (Caption) de la etiqueta el texto Hola Perú.

188

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

2. En la propiedad [Título] (Caption) del formulario mostraremos el texto. Presente. Debo modificar el texto del código para que ponga: Option Compare Database Option Explicit Private Sub cmdSaludo_Click() Me.lblSaludo.Caption = "¡¡¡Hola Perú!!!" Me.Caption = "¡Presente!" End Sub Al escribir el texto, se abre una ventana de Ayuda contextual, lo que simplifica en gran medida la escritura correcta del texto.

Esta ventana te va mostrando las propiedades y métodos. Para seleccionar uno en concreto podemos utilizar la tecla [Enter], o mejor aún, la tecla [tab] ó de tabulación (es la tecla que suele estar encima de la de Bloqueo de Mayúsculas). Me.lblSaludo.Caption = "¡¡¡Hola Perú!!!" Lo que hace es pones el texto ¡¡¡Hola Mundo!!! en la etiqueta lblSaludo. Las comillas son para indicar a VBA que lo que hay dentro es un texto. Me.Caption = "¡Presente!" Pone el texto ¡Aquí estoy!en el título del formulario. Me es el propio formulario. Si nos fijamos en la sentencia Me.lblSaludo.Captionestá indicando la propiedad Caption del objeto lblsaludo del formulario actual. Fijese que cada objeto ó propiedad está separada por un punto. Hablaremos más de esto. Cerramos la ventana de edición del código, y si hemos seguido correctamente los pasos, al presionar el botón formulario debería tener un aspecto semejante a éste:

Escuela de Tecnología de la Información

189

Microsoft Office Access 2016

Entorno de desarrollo El área de desarrollo VBA es parecida a todos los entornos como el de Excel, Word, PowerPoint, etc. Este entorno recibe el nombre de herramienta IDE, que significa algo así como Entorno de Desarrollo Integrado. En el idioma inglés, se escribe Integrated Development Environment. Este entorno consta de una serie de ventanas y comandos, algunos de los cuales se muestran en el siguiente gráfico Interrumpir Ejecutar Macro

A continuación, explicamos en detalle las características de la ventana vba de Access. • Ventana de Código Es la ventana en la que se escribe todo el código que va a gestionar nuestra aplicación. Podemos seleccionar el módulo que se mostrará en cada momento, por ejemplo, seleccionándolo con un doble clic en la ventana del Explorador del Proyecto. En la parte superior de la ventana de código se encuentra dos cuadros combinados uno de ellos es el Selector de objetos y el otro el selctor de procedimientos

190

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

• Ventana del Explorador del Proyecto La ventana del proyecto nos muestra una lista de todos los objetos que poseen módulos. Entre ellos tenemos los módulos de Formularios e Informes, los módulos estándar, y los módulos de clase. En esta primera etapa del curso vamos a trabajar con los módulos asociados a formularios y los módulos estándar. Si en la ventana del proyecto hacemos doble clic sobre cualquiera de los objetos que aparecen, abriríamos su módulo correspondiente. Por ejemplo, si en la base de datos correspondiente al gráfico presionáramos (doble clic) el formulario Form_PrimerFormulario nos abriría el módulo asociado al formulario frmPrimerFormulario. Si presionamos sobre Funciones Marcianas nos abriría el módulo estándar Funciones Marcianas y si presionáramos sobre CMarciano, nos abriría el módulo de clase CMarciano. Fijaros que el icono asociado a cada módulo cambia en función del tipo que sea. • Ventana Inmediato Esta es una ventana desde la que podemos ordenar que se ejecuten determinadas órdenes, o imprimir desde el código determinados valores para efectuar comprobaciones. Recibe también el nombre de Ventana de Depuración. Su mayor utilidad es para la depuración del código, es decir para efectuar comprobaciones de errores. De hecho, es un objeto que recibe el nombre de Debug.

Escuela de Tecnología de la Información

191

Microsoft Office Access 2016

• Ventana Locales Esta es una ventana que también sirve para la comprobación y hacer el seguimiento de los valores que van tomando determinados parámetros, variables, etc. durante la ejecución del código. Es por eso que, comparte la misma función de depuración con la ventana Inmediato. • Ventana Propiedades En esta ventana podemos ver las propiedades de los diferentes objetos que intervienen en el proyecto, al estilo de la ventana de propiedades del Formulario ó Informe en el modo diseño. Los módulos, como Objetos de Access, también tienen sus propiedades. Existen otras ventanas no comentadas aquí, pero que no dejan de ser importantes. Entre ellas podemos destacar la Ventana del Examinador de Objetos, o la Ventana de Inspección, de las que hablaremos más adelante.

Actividad 4: Conociendo la ventana Inmediato Creamos una nueva base de datos a la que llamamos Ejercicio02.accdb Vamos a Módulos y presionamos en el botón [Nuevo]. Nos creará un módulo con el original nombre de Módulo1. ¿Identificas lo que se ha explicado en los puntos anteriores? Si por casualidad no apareciera la ventana Inmediato, haz lo siguiente: Vete al menú Ver y presiona en la opción [Ventana Inmediato]; o más fácil aún, presiona la combinación de teclas [Ctrl] + [G]. Vamos a mantener las ventanas de Código, la de Inmediato y la del Explorador del proyecto. Las otras, si te molestan, puedes cerrarlas. Más tarde las podrás abrir con los botones o las opciones de menú correspondientes (Menú Ver > y seleccionar su opción). ¿Para qué sirve la ventana Inmediato? Vamos a hacer un ejemplo. Pincha con el cursor en ella, escribe lo siguiente:

192

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Print 4 + 5 y dale a la tecla [Enter] , como respuesta obtendremos: Escribe 9 en la siguiente línea. Escribe: ? 4 + 5 más [Enter] Y vuelve a escribir la cifra 9 Escribe: ? 4 * 5 más [Enter] Respuesta obtenemos: 20 Ahora vamos a hacerlo un poco más complicado a = 2: b = 4: Print a * b Escribe 8 en la siguiente línea. Escribamos ahora: ? a^b y aprieto [Enter]? La respuesta es: 16 que es 2 elevado a4 Si ahora presiono la tecla de la barra de menú que tiene la forma de un cuadradito azul y que en el gráfico la identifico con Interrumpir la ejecución y reiniciar, si vuelvo a escribir. ? a^b como resultado me da 1. Pensemos un poco sobre estos sorprendentes resultados. Tras la primera línea a = 2 : b = 4 : Print a * b Parece que Access recuerda que existe “algo” llamado a, que se le ha dado el valor 2 y otro algo que lo llmamos b que tiene el valor 4, como se demuestra tras el resultado de escribir la segunda vez ? a^b Pero resulta que tras presionar el botón de Reiniciar (el cuadradito azul) resulta que Access se equivoca y da como resultado 1. Pues no, Access no se ha equivocado. El exponente b tiene el valor 0, y cualquier número elevado al exponente 0 da como resultado 1. En realidad éste no es un gran ejemplo, ya que estaríamos en el caso singular de 0 elevado a cero, que no está definido en el campo de los números reales. Vamos a hacer ahora otro experimento. Escribimos en la ventana Inmediato: a = "2" : b = "4" : ? a + b Si se te ha ocurrido que sería 6 te puedo decir que estás equivocado. Si tu respuesta ha sido 24, has acertado.

Escuela de Tecnología de la Información

193

Microsoft Office Access 2016

Ingresar: a = "2" : b = "4" : ? a + b, Resultado: 24? Observemos los datos ingresados: a = "2" y b = "4" La cifra 2 está entre 2 comillas, lo mismo que la cifra 4. Esto hace que VBA considere el 2 y el 4, no como números, sino como texto, también llamado cadena. Tras esto el operador + no efectúa una suma numérica, sino que enlaza dos cadenas de texto. Si enlazamos la cadena "2"con la cadena "4", nos da la cadena "24". En resumen, que con números hace la operación de Suma numérica y con cadenas de texto la operación de enlazar cadenas. Escribamos lo siguiente: Print 2,4 * 2 Imprime: Que nos imprime: 2

8

¿Por qué no nos ha dado como resultado 4,8 De toda la vida la operación 2,4 * 2 ha dado como resultado 4,8 En una sentencia Print, cuando encuentra una coma entre dos valores, intercala una tabulación. Probemos ahora: Print 2.4 * 2 y nos da 4,8 Ahora lo hace bien pero ¿no hemos quedado que el separador decimal es el punto?.

¿Por qué ahora me muestra el resultado decimal con una coma como separador? Esto tiene que ver con sistema operativo Windows, en un apartado de configuración regional.

194

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Vamos a dejar de equivocarnos y sigamos experimentando. Escribimos en la ventana Inmediato lo siguiente: a = 2 : b = "Patrias" : Print a + b Este error que se muestra a continuación es debido a que no se puede sumar variables de diferentes tipos texto con número.

¿Algo de lógica, es que no podemos sumar un número con un texto? Le estamos diciendo a VBA que sume un número con un texto, y lógicamente se queja. Cambiemos la línea a = "2" : b = " Patrias" : ? a + b

Ahora sí imprime bien 2 Patrias

Al poner el 2 entre comillas, lo hemos cambiado al modo texto y entonces ha funcionado. Si hacemos a = "Dos" : b = " Patrias" : ? a + b

Nos imprimirá Dos Peras

Tenemos “algo” llamado que le da lo mismo ser Número que Texto.

Escuela de Tecnología de la Información

195

Microsoft Office Access 2016

Variables Una variable es un espacio de memoria usado para guardar un valor que corresponde a un tipo de dato soportado por el lenguaje de programación, en el caso de nosotros VBA. Una variable es representada y usada a través de una etiqueta (un nombre) que le asigna un programador o que ya viene predefinida. Haciendo referencia a la variable se puede devolver el dato al que apunta e incluso puede ser modificado. Las constantes son parecidas a las variables, sólo que su contenido se le asigna en el momento de que son declaradas, posteriormente no es posible cambiarlo. Hay tres argumentos que debemos considerar en una variable  El nombre de la variable  El tipo de dato al que apunta  El ámbito en el que es visible. Construcción del nombre de una variable (o constante). Nombre El nombre de una variable está compuesto por un conjunto de caracteres ASCII. Para su construcción hay que ceñirse a las siguientes reglas: • No se pueden usar caracteres que tienen un uso especial en Access, como son el Punto “.”, los paréntesis “(“ “)”, la barra vertical “|”, o los caracteres que se pueden utilizar como operadores; entre ellos + - / * < >. • Una variable debe empezar por una letra ó por el signo de subrayado (guión bajo) Estos nombres deberían ser correctos, lo que no quiere decir que sean aconsejables. A123456

_Jechu

R2P2

• El nombre de una variable no puede tener espacios en blanco. Por ejemplo, no sería válido el nombre Apellidos Nombre (contiene con un espacio en blanco entre el nombre y apellido). En cambio, sí sería válido Apellidos_Nombre ó ApellidosNombre. • Una variable puede terminar con un carácter de declaración de tipo %&!#@$ Estos caracteres sólo se pueden declarar al final del nombre de la variable. Nota: Estos caracteres también se pueden usar para declarar el tipo de dato que devuelve una función. Por ejemplo, esta cabecera de función sería válida: Public Function Nombre$() Que sería equivalente a: Public Function Nombre() As String 196

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

• No se puede usar como nombre de variable una palabra reservada de VBA. Por ejemplo, no se pueden usar String, integer, For, If como nombres de variable. • El nombre de una variable puede tener hasta 255 caracteres (aunque no es recomendable usar tantos caracteres) • No esta permitido declarar dos variables con el mismo nombre dentro del mismo procedimiento o en la cabecera de un mismo módulo.

Conociendo las variables Pulsamos con el cursor en la ventana de Código y escribimos lo siguiente: Option Compare Database Option Explicit Const Pi As Double = 3.14159265358979 ¿Qué significa esta última línea? Se declara una Constante llamada Pi del tipo Double (un valor numérico de coma flotante de 8 bytes) y le asignamos el valor de Pi. Cuando declaramos Pi como Constante nos impide que en otro punto del módulo podamos hacer algo así como Pi = 25.36 ¿Por qué? Porque el valor de una constante es en definitiva Constante, y no se puede cambiarCuando se declara un valor como una constante, no permite midificación. Ese algo, en contraposición a una constante, se llama Variable.

Escuela de Tecnología de la Información

197

Microsoft Office Access 2016

Para declarar variables se podría hacer algo así como Dim Precio As Currency Dim Nombre As String

Declaracion de Variables Tipos de datos Además de las Variables hay otra serie de elementos que manejan datos, como son las Constantes, Procedimientos Sub y procedimientos Function que son capaces de manejar datos de distintos tipos, e incluso las funciones que devuelven datos. Pero ¿qué tipos de datos podemos manejar? Y ¿qué características tienen? Hay varios tipos de datos. Entre ellos podemos definir    

Numéricos Booleanos Fecha / Hora De texto (cadenas) Variant De objeto Registros de datos definidos por el usuario

Datos numéricos Existen dos familias de datos numéricos:  

Datos numéricos de número entero Datos numéricos de coma flotante.

Boolean

Verdadero o Falso, variable lógica

Byte

Variable de 8 bits que puede almacenar valores de 0 a 255. Es muy útil para almacenar datos binarios.

Double

Variable numéica de 64-bit de coma flotante que se utiliza cuando se necesita gran precisión. Pueden variar desde1.79769313486232E308 a -4,94065645841247E-324 para valores negativos y de 4,94065645841247E-324 a 1.79769313486232E308 para valores positivos.

Integer

El Integer o entero es un número de 16 bits que puede oscilar entre 32768 y 32767. Es considerado en variables numéricas enteras.

Long

El Long es un número de 32 bits que puede variar entre 2.147.483.648 y 2.147.483.647. Estas variables sólo pueden contener valores enteros.

198

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Decimal

Es un subtipo de dato Variant, puede almacenar valores que va desde -79.228.162.514.264.337.593.543.950.335 hasta 79.228.162.514.264.337.593.543.950.335 si el valor no contiene cifras decimales. Tiene una precisión de hasta 28 decimales con valores desde -7,9228162514264337593543950335 hasta 7,9228162514264337593543950335.

Single

Dato numérico de 32 bits que va desde-3.402823E38 a -1,401298 E45 para valores negativos y desde 1,401298E-45 a 3.402823E38 para valores positivos. Usado para trabajar con números fraccionarios.

String

El String se utiliza generalmente como un tipo de longitud para una cadena de texto.

Currency

Variable de tipo Moneda entero. Se puede escalae por un factor de 10.000 para agregar cuatro dígitos a la derecha del punto decimal. Permite hasta 15 dígitos a la izquierda del punto decimal, resultando en un rango de aproximadamente -922.337.000.000.000 a +922.337.000.000.000.

Date

El Date almacena un valor numérico con formato especial que representa tanto la fecha como la hora. El Date acepta la fecha o la hora, o ambas cosas.

Object

Esta variable puede señalar a cualquier tipo de dato, incluso cualquier instancia de objeto que la aplicación reconozca. Es usado Object cuando en el tiempo de compilación no se conoce a qué tipo de datos puede señalar la variable.

Variant

Esta viable almacenan valores numéricos y no numéricos. Son los más flexible de todos los tipos disponibles, ya que almacena valores muy grandes de casi cualquier tipo (coincide con el tipo de datos numérico doble).

Prefijo Por prefijo entenderemos el conjunto de letras que “es aconsejable” poner delante del nombre de una variable, para indicarle a la persona que escribe, ó lee, el código, el tipo de dato que contiene una variable. La ventaja de utilizar estos métodos se valora inmediatamente. Así, sólo con leer que una tiene como nombre lngDiasLaborados podríamos deducir que es una variable de tipo Long que probablemente sirva para manejar los días trabajados. Si en una línea de código aparece el nombre cmdDatos, podríamos deducir que es un botón de comando que probablemente sirva para salir de un formulario u otro sitio. Igualmente, lblResulta es una etiqueta y txtNombre es un cuadro de texto. Es una forma de identificar que objeto se esta usando.

Escuela de Tecnología de la Información

199

Microsoft Office Access 2016

Repito que los prefijos, int, lng, txt, lbl, cmd, etc. no modelan el tipo de contenido de la variable, sino que sirven como información adicional para la persona que escribe ó lee el código, para un entendimiento mas accesible.

Ámbito ó Alcance de las Constantes y variables Algo tan simple, y a la vez tan complejo, como los lugares en los que VBA puede “Ver”, a una variable ó constante lo que equivale a que se entera que existen, las constantes y variables que declaramos. Más adelante veremos que todo esto aún se puede generalizar para otros elementos de la programación. En el punto anterior hemos escrito. Pi en la ventana Inmediato y no ha pasado nada. Al declarar en la cabecera de un módulo una variable con Dim, o una constante con Const hacemos que esa variable, y esa constante sólo sean visibles desde dentro del código del módulo. Para que puedan ejecutarse desde fuera es necesario ponerles la palabrita Public. Esto se hace de forma diferente para las Constantes y Variables. En el caso de las constantes se pone Public delante de la palabra Const. En el caso de las variables Public se usa en vez de Dim. El código del módulo quedaría así: Option Compare Database Option Explicit Public Const Pi As Double = 3.14159265358979 Public Precio As Currency Public Nombre As String

200

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Si ahora pulsamos con el ratón en la ventana Inmediato, escribimos ? Pi y pulsamos la tecla [Enter] Nos escribirá 3,14159265358979. Haciendo otro prueba Escribe en la ventana Inmediato Pi = 5.2114 y pulsa la tecla [Enter]. Simplemente que estamos intentando asignar un valor a una constante que ya lo tenía. Una constante sólo puede tomar el valor una vez, “Hola Peru”. Por definición una constante no puede ser modificado en el tiempo. En cambio, las variables pueden cambiar de valor en cualquier momento de la ejecución del programa.

Conociendo los tipos de variables Dim Si la instrucción Dim se utiliza para declarar una variable en la cabecera de un módulo, esa variable sólo será “visible” por los procedimientos que estén dentro de ese módulo. De forma semejante, si la instrucción Dim se utiliza dentro de un procedimiento, esa variable sólo podrá ser vista por el código del interior del procedimiento.

Private La instrucción Private se suele utilizar para definir de forma explícita que una constante, variable o procedimiento sólo van a ser visibles desde dentro de un módulo. Se suele utilizar para la declaración de variables y constantes en las cabeceras de módulos, así como para definir el alcance de los procedimientos de ese módulo. Dentro de un procedimiento se usa Dimen vez de Private.

Public La instrucción Publicse suele utilizar para definir que una constante, variable o procedimiento van a ser visibles desde cualquier parte de la aplicación. Se suele utilizar para la declaración de variables y constantes en las cabeceras de módulos, así como para definir el alcance de los procedimientos de ese módulo. Por ello no es factible declarar una variable como Publicdentro de un procedimiento. Sí se puede en cambio, declararla en la cabecera de cualquier módulo estándar o de clase. Nota: Una aclaración respecto a los elementos declarados en un módulo de clase. Si declaramos una variable, constante ó procedimiento como Publicen un módulo de clase, por ejemplo, en un formulario, para poder usarlo hay que hacerlo a través de una Instancia de ese módulo de clase.

Escuela de Tecnología de la Información

201

Microsoft Office Access 2016

Aquí han aparecido cosas nuevas; por ejemplo, la palabra Currencyy la palabra String. En el ejemplo, con Currency, hacemos que la variable Preciosea del tipo Moneda; un tipo de datos “aparentemente” de coma flotante creado para manejar datos monetarios sin errores de “Redondeo”. Puedes obtener ayuda sobre estos tipos de datos poniendo el cursor, por ejemplo en cualquiera de sus nombres, por ejemplo Currencyy pulsando [F1]. Con String hacemos que la variable Nombre sea tratada como una variable de tipo Cadena, que permite manejar cadenas de Caracteres.

En realidad, podríamos haber hecho las declaraciones sin especificar su tipo, pero, por el momento sin más explicaciones, esto genera código menos optimizado e incluso puede dar problemas a la hora de encontrar posibles errores. Por ejemplo, podríamos haber hecho: Public Const Pi = 3.14159265358979 Public Precio Public Nombre En realidad, el declarar así una variable ó constante, equivale a haber hecho esta otra declaración Public Const Pi As Variant = 3.14159265358979 Public Precio As Variant Public Nombre As Variant

Procedimientos y Funciones Procedimientos Sub Procedimientos Function o Funciones

Procedimientos Sub Un procedimiento Sub llamado también Procedimiento es un conjunto de acciones u operaciones que realizan determinadas tareas. Suele estar contenido entre las expresiones Sub Nombre y EndSub El término Sub puede ir precedido de otras expresiones, por ejemplo para delimitar el ámbito en el que puede ser llamado el procedimiento. Al procedimiento se le pueden pasar una serie de datos para que se use internamente. A estos datos se les llama Parámetros ó Argumentos. Si en la ventana de código escribimos la palabra Sub, le ponemos encima el cursor y presionamos la tecla [F1], Access nos mostrará la ayuda aplicable a Sub.

202

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

En la ayuda podemos entre otras cosas podemos ver: [Private | Public | Friend] [Static] Sub nombre [(lista_argumentos)] [instrucciones] [Exit Sub] [instrucciones] End Sub

El cuadro muestra la estructura de un procedimiento Sub. Los elementos que están entre Paréntesis Cuadrados [ ] son opcionales. Cuando hay varias palabras separadas por Barras Verticales |, nos está indicando que podemos seleccionar una de ellas. Según esto serían igual de válidas las sentencias: Sub Procedimiento_01() End Sub Public Sub Procedimiento_02() End Sub Private Sub Procedimiento_03() End Sub Public Sub Procedimiento_04(Argumento1 As Double) End Sub

Actividad 5: Creando un procedimiento sencillo En la base de dato abierta crear un modulo En el módulo que hemos creado vamos a escribir el siguiente código: Public Sub Circunferencia() Dim Radio As Single Radio = 2.5 Debug.Print "Circunferencia = " & 2 * Pi * Radio Debug.Print "Círculo = " & Pi * Radio ^ 2 & " m2" End Sub

Escuela de Tecnología de la Información

203

Microsoft Office Access 2016

Ahora, en la ventana Inmediato escribe Circunferencia y presiona [Enter] Efectivamente, en esa ventana se escribirá: Circunferencia = 15,7079632679489 Círculo = 19,6349540849362 m2

Fijese que mientras lo escribes se les muestra una “Ayuda en línea” que les permite seleccionar lo que quieres escribir.

El objeto Debug es propia ventana Inmediato. El método Print imprime lo que se ponga a continuación. Lo primero que imprime es una cadena, en nuestro caso "Circunferencia = " A continuación vemos el operador &seguido de la expresión 2 * Pi * Radio Este operador hace de “Union” entre dos expresiones. En este caso enlaza la cadena primera con el resultado de la operación 2 * Pi * Radio Dando como resultado Circunferencia = 15,7079632679489 Lo mismo es aplicable a la siguiente línea. Con End Sub se acaba el código del procedimiento.

204

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

-

Esto está bien, pero sólo puede imprimir los datos de la circunferencia de radio 2,5, lo que no es gran cosa.

Vamos a modificar el procedimiento de la siguiente manera: Public Sub Circunferencia (Radio As Single) Debug.Print "Circunferencia = " & 2 * Pi * Radio Debug.Print "Círculo = " & Pi * Radio ^ 2 & " m2" End Sub

Observe que la declaración de la variable Radio ya no se hace en el cuerpo del procedimiento, sino en su cabecera. Además, ha desaparecido la línea en la que asignábamos el valor del radio. ¿Y cómo se utiliza esto? Vamos a modificar la forma como llamamos desde la ventana Inmediato al procedimiento, y escribimos Circunferencia 5.5

Actividad 6: Conociendo los ámbitos de las variables Abrimos un archivo nuevo de Access, clic en Crear Múdulo Vamos a crear el procedimiento ámbito_variables()

Escuela de Tecnología de la Información

205

Microsoft Office Access 2016

Vamoa a crear otro Modulo: Sub Ambito_variables2(), solo copiamos el código de MsgBox.

Ejecutamos este modulo, y nos mostrará el siguiente error:

Esto es debido a que no reconoce la variable creada en el modulo anterior, procedemos a copiar la definción de variables dentro de:

206

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Ejecutamos el procedimiento y veremos que si ejecuta:

Ahora veremos el alcance de variables para un proyecto Para ello el cambiamos el tipo de variable definido como Dim a Public. Creamos el procedimiento Sub Ambito_variables3(). Copiamos el texto de MsgBox, cambiamos algunos detalles internos del MsgBox

Escuela de Tecnología de la Información

207

Microsoft Office Access 2016

Ejecutamos desde el procedimiento Sub Ambito_variables3()

El ejercicio debe de correr sin problemas, cuando damos clic al botón ejecutar.

Guardamos y cerramos

Funciones Otro de tipos de procedimientos son los llamados Function, que al igual que los procedimientos Sub están delimitados por Functiony End Function. La principal diferencia entre un procedimiento Sub y un procedimiento Function es que este último devuelve un valor. Entre los dos delimitadores se escribe el código que va a realizar las tareas que deseemos, y al final devolverá algún valor. Si vamos a la ventana Inmediato, escribimos Function, ponemos el cursor en lo escrito y presionamos [F1], entre otras cosas nos aparece la sintaxis de su declaración:

208

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

[Public | Private | Friend] [Static] Function nombre [(lista_argumentos)] [As tipo] [instrucciones] [nombre = expresión] [Exit Function] [instrucciones] [nombre = expresión] End Function

Vemos que para declarar una función empezaríamos, por ejemplo poniendo la palabra Public (si quisiéramos que la función sea accesible desde cualquier parte de Access) a continuación la palabra Function, después abriríamos un paréntesis y pondríamos los parámetros que necesitáramos, cerraríamos el paréntesis y finalmente pondríamos el tipo de datos que devolvería la función. Supongamos que quisiéramos escribir una función que calcule mediante pitagoras el tercer lado. Si ya la tuviera declarada en otro módulo este paso no sería necesario. El código sería el siguiente:

Option Compare Database Option Explicit Public Function TercerLado (LadoA As Single, LadoB As Single) As Single TercerLado = (LadoA * LadoA + LadoB * LadoB) ^ (1 / 2) End Function Vamos a probar la función. Para ello escribiremos en la ventana Inmediato. ? TercerLado(3,4)

Escuela de Tecnología de la Información

209

Microsoft Office Access 2016

Tras completar la expresión, y darle a [Enter] nos escribirá: 5 que es la longitud del TercerLado o la Hipotenuza

Actividad 7: Funciones en Formularios Vamos a hacer una pequeña y elemental calculadora que nos permita sumar dos cifras. Cerramos los módulos y creamos, ó abrimos un formulario en modo diseño. Este formulario no lo enlazamos con ninguna tabla ni consulta. Ahora vamos a deshabilitar el Asistente para controles. En la barra de controles, pulsamos en la “Varita mágica” para deshabilitarla. como se indica en el gráfico, para que quede deshabilitada. Ponemos dos cuadros de texto en el formulario. Por defecto, Access les pondrá un nombre semejante a Texto1 y Texto2. Vamos a cambiar esos nombres.

Abrimos la hoja de propiedades, les recuerdo Ficha Diseño > Cinta Herramientas, ó pulsando las teclas [Alt] + [Enter].

210

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

En la ficha [Todas] modificamos las propiedades de la etiqueta Resultado, como se muestra en el grafico adjunto.

OBJETO

PROPIEDAD

NOMBRE

Cuadro de texto

Nombre

txt1

Cuadro de texto

Nombre

txt2

Boton de Comando

Nombre

cmdCalcular

Label

Nombre

lblResultado

La grafica queda de la siguiente manera

Damos clic al botón de Comando, seleccionamos en la [Hoja de Propiedades] pulsamos en la pestaña Eventos. Seleccionamos el cuadro correspondiente a “Al hacer clic” y pulsamos en el pequeño botón con tres puntos que nos aparece. (Debe estar desactivado el botón Asistente para Controles ) A continuación, veremos una pequeña ventana que nos permite seleccionar entre:

Escuela de Tecnología de la Información

211

Microsoft Office Access 2016

  

Generador de expresiones Generador de macros Generador de código

Lógicamente seleccionamos Generador de código, y pulsamos [Aceptar] ó doble clic en [Generador de código]. Es el procedimiento que captura el evento Clic del botón cmdSumar. Escribimos lo siguiente, dentro del procedimiento Private Sub cmdSumar_Click() Me.lblResultado.Caption = txt1.Value + txt2.Value End Sub Cuando se presione sobre el botón cmdSumar (evento clic) pon como título de la etiqueta lblResultado(propiedad caption) el resultado de sumar el contenido (propiedad Value) del cuadro de texto txt1y del cuadro de texto txt2. El control Cuadro de texto es un TextBox y la Etiqueta un control Label. Bueno, grabamos el código y el formulario y lo abrimos. Nos quedará algo así como

212

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Si ahora introducimos, por ejemplo el valor 2 en el primer cuadro de texto, el valor 3 en el segundo y presionamos el botón Sumar, nos llevamos una pequeña sorpresa:

¿Qué ha ocurrió? ¿Por qué en vez de un 27 nos da 1512? Esto quiere decir que si ponemos texto nos va a dar un resultado de concatenación de dos textos, probando:

Private Sub cmdSumar_Click() Me.lblResultado.Caption = Val(txt1.Value) + Val(txt2.Value) End Sub Y ejecutamos

Escuela de Tecnología de la Información

213

Microsoft Office Access 2016

Entonces concluimos en lo siguiente después de desarrollar el ejercicio: Primero deberíamos convertir los valores contenidos en los cuadros de texto a valores numéricos. Para efectuar esa conversión existe una función de VBA llamada Val(Valor) Si escribimos en la ventana inmediato la palabra Val, ponemos en ella el cursor y presionamos [F1] nos aparece la ayuda de la función Val. Con la siguiente información: Devuelve los números contenidos en una cadena como un valor numérico del tipo adecuado. Sintaxis Val(cadena) El argumento obligatorio cadena es cualquier expresión de cadena válida.

Probando los tipos de variables Procedemos a probar datos tipo fecha que maneja Access, creamos un Módulo con el nombre de Public Sub TiposDatoFecha().

214

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Ahora probamos el tipo de datos Boolean conocido como boleano El tipo Boolean es un dato adecuado para manejar datos de tipo Sí / No, True / False. Sorprendentemente el tipo Boolean su tamaño es de 2 Bytes. El prefijo para un boleano es bln. A una variable Boleana se le puede asignar un valor de varias formas

Nota: La instrucción CInt (blnDatoBoleano) convierte a un valor Entero el contenido de la variable blnDatoBoleano. Para asignar a una variable booleana a falso le podemos hacer de cualquiera de las dos formas False ó 0. Para asignarle a verdadero lo podemos hacer pasándole directamente a True ó cualquier valor numérico diferente de Cero, incluso aunque sea de coma flotante. Si convertimos el contenido de una variable Boleana que contenga True a un valor numérico, nos devolverá -1.

Escuela de Tecnología de la Información

215

Microsoft Office Access 2016

Estructuras de Control. Las estructuras de control son fragmentos de código en cualquier lenguaje de programación que nos permiten tomar decisiones en base a unos datos entregados, o repetir procesos (bucles) mientras sucedan determinadas condiciones en los parámetros controlados por el código. Estas estructuras vienen determinadas por una serie de instrucciones, entre las que mencionaremos: Estructuras de Decisión    

If . . . . Then If . . . . Then . . . . Else IIF Select . . . . Case

Estructuras de Repetitivas o de Bucle      

While Do Loop While Do Loop Until Until For . . . Next For - Each

Indeterminados

Determinados

Estructuras de Decisión. La Instrucción If Permite ejecutar un conjunto instrucciones de código, en función de que el valor de una condición sea esta Verdadera o Falsa True/ False. PRIMERA FORMA BASICA DE LA CONDICIONAL If condición Then [instrucciones si la condición es True] SEGUNDA FORMA BASICA DE LA CONDICIONAL If condición Then [instrucciones si la condición es True] End If TERCERA FORMA BASICA DE LA CONDICIONAL If condición Then [instrucciones para el caso de que condición sea True] Else [instrucciones para el caso de que condición sea False] End If

216

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Para poder utilizar la condición nos valemos de los operadores de comparación: =
=

Igual a Menor que Menor ó igual que Mayor que Mayor ó igual que Diferente que

Ejemplo:

Con el InputBox solicitamos el ingreso de datos tanto para el Dividendo como el divisor Ejecutamos y vemos las pantallas que nos muestra:

Ahora visualizamos el resultado

Escuela de Tecnología de la Información

217

Microsoft Office Access 2016

Supongamos que queremos hacer una comparación de dos números, saber cual es el mayor, procedemos a crear otro procedimiento. Ejemplo:

Si ejecutamos el código visualizaremos

El resultado obtenido:

La Función IIf Es una función similar o parecida a la condicional If . . Then . . Else Devuelve uno de entre dos valores, en función del resultado de una expresión: Su sintaxis es IIf(condición, ValorTrue, ValorFalse) Se evalúa la expresión y si es True, devuelve ValorTrue; caso contrario devuelve ValorFalse

218

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Aca un ejemplo de como trabaja Public Function EsPar(ByVal Numero As Long) As Boolean EsPar = IIf(Numero Mod 2 = 0, True, False) End Function Si escribimos lo mismo con la función IF, el código seria el siguiente: Public Function EsPar2(ByVal Numero As Long) As Boolean If Numero Mod 2 = 0 Then EsPar2 = True Else EsPar2 = False End If End Function

Actividad 8: Ejemplo de condicional mas compleja Vamos a ingresar tres números y que mediante un mensaje me salga en orden descendente de mayor a menor Escribimos el siguiente código

Si observa el código al final utilizo el carácter “&” que me permite poder concatenar textos, como se observa en el MsgBox.

Escuela de Tecnología de la Información

219

Microsoft Office Access 2016

Ejecutamos el programa

Como se puede observar el pregroma se ejecuta de manera correct, podemos probar para otros valores.

La Instrucción Select Case Con la instrucción If . . Then, es posible crear estructuras de decisión complejas como hemos sabemos, pero existe otra herramienta también poderosa que simplifica este proceso es la instrucción SelectCase que permite crear un código más ordenado y claro. Si vemos la ayuda de Acces podemos leer que la sintaxis de Select Case es: Select Case expresión_prueba [Case lista_expresion-1 [instrucciones-1]] ... [Case lista_expresion-2 [instrucciones-2]] ... -------[Case lista_expresion-n [instrucciones-n]] ... [Case Else [instrucciones_else]] End Select expresión_prueba debe ser una variable, o expresión que devuelva una cadena de texto ó un número. lista_expresion son una serie de valores, del tipo que da expresión_prueba. Si expresión o la condición coincide con alguno de los valores de lista_expresion, se ejecutarán las instrucciones que existen a continuación, hasta llegar al siguiente Case, ó End Select.

220

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

A partir de este punto se saldría de la estructura o terminaría el proceso y se seguiría con el siguiente código, después del End Select. Si en caso no se cumpliera la condición de ninguno de los Case lista_expresion, existe un famoso Case Else, donde se ejecutarán las donde no se cumple con las condiciones.

Actividad 9: Ejemplo de instrucción Select Case Supongamos que queremos crear una función que nos cualifique el tipo de los pagarés de los clientes en función del número de días de pago:. Se ingresará el número de días que el cliente debe a la empresa. Si la dependiendo del número de días, deberá devolver la cadena “Pago vencido”. Si es del día de hoy “Vence hoy”, si quedan entre 1 y 3 días “Cobro inmediato”, si menos de 31 días “Corto Plazo” si son menos de 181 días “Medio Plazo” y si es mayor “Largo Plazo”

Ejecutamos el programa:

El resultado será: Guardamos y finalizamos

La instrucción case también se puede aplicar a una cadena de texto, he aquí un pequeño ejemploo. Escuela de Tecnología de la Información

221

Microsoft Office Access 2016

Vamos a suponer que queremos hacer una clasificación de los alumnos de una institución educativa en 4 grupos, en función de su apellido. Aquéllos cuyo apellido empiece por una letra comprendida entre la A y la D pertenecerán al grupo 1, entre la E y la L al grupo 2, entre la M y la P al 3 y entre la Q y la Z al 4. Public Sub GrupoAlumno() Dim Apellido = Trim(UCase(Apellido)) Select Case Apellido Case Is < "E" : Grupo = 1 Case "E" To "LZZZZ" : Grupo = 2 Case "M" To "PZZZZ" : Grupo = 3 Case "Q" To "TZZZZ" : Grupo = 3 Case Is >= "U" : Grupo = 4 End Select End Sub

Estructuras Repetitivas Las Instrucciones WHILE …WEND Este bucle funciona de la siguiente manera. Cuando se va a ejecutar, evalúa una expresión o condición y compreba que esta da resultados positivos. Si es así, ejecuta el cuerpo del bucle (las sentencias que siguen hasta el WEND), en caso contrario se sale. Podemos ver la sintaxis a continuación. While (condición) Sentencias Sentencias Wend Vamos a crear un ejemplo sencillo entender mejor como funciona este bucle, vamos a crear un pequeño ejemplo que el programa se ejecute mientras el numero sea menor a 13

Public Sub Uso_While2() Dim a As Integer a=0 While (a < 13) a = InputBox("Ingresa un número entero, please", "Solicita un dato numérico") Wend End Sub

222

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Las instrucciones Do…Loop El bucle DO...LOOP es muy versátil. Con el se pueden crear gran variedad de bucles distintos, bucles que comprueben una condición antes de ejecutar el bucle una vez, después de la primera ejecución y con conbinaciones con mientras (WHILE) que se cumple una condición o hasta (UNTIL) que esa condicion se cumpla. la sintaxis de esta estructura es la siguiente: Do [instrucciones] [Exit Do] [instrucciones] Loop [{While | Until} condición]

El bucle al menos se ejecutará una vez antes de evaluar la condición

O con esta otra sintaxis: Do [{While | Until} condición] [instrucciones] [Exit Do] [instrucciones] Loop

El bucle se ejecutará después de evaluar la condición

Veamos un ejemplo, usamos el mismo del caso anterior: Public Sub Usando_DoLoop() Dim a As Integer a=0 Do a = InputBox("Ingresa un número entero, please", "Solicita un dato numérico") Loop While (a < 13) End Sub

Probando ahora con Do---Loop Until Public Sub Usando_DoLoop() Dim a As Integer a=0 Do a = InputBox("Ingresa un número entero, please", "Solicita un dato numérico") Loop Until (a >= 13) End Sub

Escuela de Tecnología de la Información

223

Microsoft Office Access 2016

La Instrucción For - - - Next La instrucción For--- Next, es una instrucción que repite el código, una cantidad finita de veces entre la línea que contiene la palabra Fory la línea que contiene a su correspondiente Next. Su sintaxis es For contador = principio To fin [Step incremento] [instrucciones] [Exit For] [instrucciones] Next [contador] Contador es una variable numérica que irá tomando sucesivos valores, con incrementos ó decrementos iguales al valor de incremento. Si no se pusiera el valor incremento, el contador iría creciendo en una unidad cada vuelta. Las instrucciones se irán repitiendo hasta que contador tome el valor de fin, ó se encuentre con la instrucción Exit For. Por ejemplo, supongamos que tenemos que generar un programa que nos imprima las tablas de multiplicar que van del 1 al 10. Public Sub TablasDeMultiplicar() Dim n As Integer, m As Integer For n = 1 To 10 Debug.Print "-----------" For m = 1 To 10 Debug.Print n & " x " & m & " = " & n * m Next m Next n End Sub Cuando ejecutamos

224

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Actividad 10: Ejemplos de instrucciones Repetitivas 1) Vamos a crear un programa que me permita poder calcular calcular el factoria de un número, para ello trabajamos con el archivo que venimos trabajando con VBA. Digitamos el siguiente código:

Ejecutamos y observamos que, si ingresamos un número bajo se ejecuta el procedimiento, sin problemas.

Ahora observaremos en otra ejecución de un número mas grande. 15 por ejemplo, observe el error que aparece. Error de desbordamiento “error 6”.

Ahora observaremos, que sucede si en lugar de un número ingreso un texto.

Escuela de Tecnología de la Información

225

Microsoft Office Access 2016

Observamos que cuando se ingresa un texto aparece un error de tipos de datos no coinciden, el numero de “Error es 13”.

Modificamos el código de acuerdo al gráfico:

La instrucción On Error Goto, va a provocar que cuando se produzca el error el código salte hacia la línea donde dice el nombre, en el ejemplo Datito. Ejecutamos el ejemplo provocando nuevamente los errores antes ocurridos. Otro detalle que no se mencionó es se cambió el tipo de variable a Long.

226

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

El otro error sería:

Si ingresamos un dato, no demasiado grande se debe de ejecutar sin ningún problema.

Guardamos y cerramos.

2) Vamos a crear un programa tipo un juegito que me permita poder adivinar cual es el numero la PC ingresó. Creamos un nuevo módulo y procedemos a ingresar el siguiente código

Si obervamos, estamos empleando Math.Rnd, esta línea de código genera un numero aleatorio decimal, es por eso que se multiplica por 100, para generar un numero de dos cifras. Procedemos a ejecutar el código y observamos lo que pasa.

Escuela de Tecnología de la Información

227

Microsoft Office Access 2016

La finalización de la ejecución del código termina de la siguiente forma:

3) Vamos a crear un programa tipo un juegito que me permita poder adivinar cual es el numero que se ingreso Creamos un nuevo módulo y procedemos a ingresar el siguiente código

228

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Ejecutamos el código, e ingresamos una dirección correcta

Ahora vamos a ingresar una dirección de correo sin el arroba, y observamos que pasa

Ahora ingresamos una dirección de correo sin el punto después del arroba

Progamación orientada a objetos Programación orientada a objetos (POO), es un paradigma en la programación actual, ya que usa objetos en sus interacciones para diseñar aplicaciones y programas informáticos y Acess a través de VBA, esta preparado para eso. POO esta basada en varias técnicas, donde se incluye herencia, polimorfismo, abstracción y encapsulamiento. Como Access son objetos, estos objetos tienen una jerarquía, vamos a graficar la jerarquía:

Escuela de Tecnología de la Información

229

Microsoft Office Access 2016

Application Formulario1 Formulario2 Formulario3

Forms

Boton1 ComboBox1 CuadroCombinado

Controls Botón

Etiqueta

Menú

etc

Cuando hacemos referencia a un objeto, la sintaxis de esta es de la siguiente forma, por ejemplo vamos a referenciar un Botón en un formulario. Forms(“frmAlumnos”).Controls(“btnAceptar”).Visible = False Para entenderlo mejor vamos a ejecutar un pequeño ejercicio, Creamos un formulario con una etiqueta, dos botones.

En la vista Diseño del formulario seleccionamos el botón “Probando”, activamos las Propiedades y en la ficha Eventos, Seleccionamos el evento hacer clic en el botón tres puntos damos clic, seleccionamos código de eventos e ingresamos el siguiente código.

230

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Guardamos y cerramos la ventana de VBA y procedemos a cambiar la vista del formulario y procedemos a dar clic al botón “Probando” y observamos los cambios que ocurre con los objetos. Los cambios son los siguientes:  La caja de texto ha modificado su tamaño. Es debido a la propiedad Width = 5000.  La caja de texto se ha movido a la parte superior derecha, eso es debido a que se ejecutado la propiedad Move 10, 10  Y el botón de comando a cambiado su altura, también es debido a que la propiedad usada es Height = 5000 Que son eventos? Son desencadenantes de una acción. Modo mediante el cual los objetos se relacionan e interactúan con el medio. Esta acción se desencadena cuando el usuario realiza una acción. Existen estos diferentes tipos de eventos

Eventos De

De

Formulario

Informe

Escuela de Tecnología de la Información

A.D.O

Dinámicos

231

Microsoft Office Access 2016

Eventos de Formularios.- Son cosas que suceden en un formulario como por ejemplo: Cuando hacemos clic en un botón de comando, cuando se introduce texto en una caja de texto, etc. Dentro de estos eventos tenemos los de alto nivel que gestionan acciones con un formulario y los de bajo nivel que gestionan respuestas a acciones mas especificas de usuarios. Eventos de Informes.- Son cosas que suceden durante la presentación de un informe, por ejemplo antes de que Access de formato a una sección, antes de que se imprima el informe, etc. Eventos ADO.- Son cosas que suceden al conectar con una base de datos. Eventos dinámicos. - Son cosas que suceden al momento de aplicar tablas dinámicas.

Actividad 11: Aplicando eventos al formularios Creamos un nuevo formulario y lo ponemos en Vista Diseño. Añadimos al formulario una etiqueta, un cuadro de texto y un botón. Nombres aplicados a los controles: Etiqueta lblMensaje Cuadro de texto txtNumero Etiqueta del cuadro de texto lblNumero Botón cmdPrimo Ajustamos algunas de las propiedades del formulario, por ejemplo para quitar los separadores de registro, botones, etc.… Para que el formulario tenga este aspecto, he modificado algunas de sus propiedades: Propiedad Selectores de registro Botones de navegación Separadores de registro Estilo de los bordes

Valor No No No Diálogo

Abrimos la ventana de propiedades y teniendo seleccionado el formulario, vamos a la página de Eventos. Hacemos que al abrir el formulario ponga como título del mismo "Test de números primos", y como texto de la etiqueta lblMensaje, "Introduzca un número entero".

232

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Al abrir el formulario quedará así: Vamos a hacer ahora que tras introducir un número en el cuadro de texto, y presionar el botón, nos diga en la etiqueta si el número es primo. Volvemos a la hoja de propiedades y seleccionamos Eventos. Teniendo seleccionado el botón, activamos el evento Al hacer clic, pulsamos en el botoncito que aparece con los tres puntos y seleccionamos Generador de código, y a continuación Aceptar. Vamos a escribir el código:

Tambien debemos ingresar el código la una function llamada EsPrimo.

Escuela de Tecnología de la Información

233

Microsoft Office Access 2016

Tras presionar el botón cmdPrimo se produce el evento clic, por lo que se ejecuta el procedimiento cmdPrimo_Click()que maneja ese evento

234

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Este procedimiento lo primero que hace es declarar dos variables de tipos diferentes, strNumero de tipo string y lngNumero de tipo Long. Luego se procede a asignar el contenido del cuadro de texto txtNumero, procesado primero con la función Nz, que devuelve una cadena vacía si tiene el valor Null, y a continuación le quita los posibles espacios en blanco de los extremos mediante la función Trim. Seguidamente pasa por la primera estructura de decisión If, controlando si la cadena strNumero es de tipo numérico. Si la condición es falsa muestra el mensaje "No ha introducido un número". Si fuera verdadera, lo primero que hace es comprobar si la expresión numérica de strNumero está entre 1 y 214748364, rango de valores válidos en el rango de los Long, para la función EsPrimo.

Si no fuera así, muestra el mensaje "El número está fuera de rango", lleva el cursor al control txtNumeroy sale del procedimiento. Supongamos que el contenido de strNumero ha logrado pasar todos estos controles. Mediante la función Val(strNumero)asigna el valor a la variable lngNumero. Como ya no vamos a utilizar la cadena strNumeropara más cálculos, para mostrar el número, le asignamos el resultado de la función Format(lngNumero, "#,##0"). Con esta utilización, la función Formatdevuelve una cadena formada por el número con los separadores de miles. La función Formatt tiene un amplio abanico de posibilidades en la conversión de números y fechas a cadenas de texto. El siguiente paso es comprobar si el número lngNumero es primo, utilizando la función EsPrimo que escribimos anteriormente. Si lo fuera, escribiríamos en la etiqueta "El número "seguido del contenido de la cadena strNumero, y el texto " es primo". Si no lo fuera, escribiríamos lo mismo, pero indicando " no es primo". Terminado todo esto llevamos el cursor al cuadro de texto txtNumeromediante su método SetFocus.

Escuela de Tecnología de la Información

235

Microsoft Office Access 2016

Aunque el programa esta terminado, nos piden que se añada dos pequeños botones tipo flecha, como se muestra en la imagen.

Actividad 12: Continuando con eventos al formulario Al primer botón, con una flecha hacia arriba lo llamamos cmdPrimoSiguiente, y al segundo, con una flecha hacia abajo lo llamamos, cmdPrimoAnterior. Este es el diseño que queda en el formulario:

En el código anterior podemos ver algunas cosas interesantes. Uno de ellos ya lo hemos visto en un ejemplo anterior, pero de todas maneras es importante señalarlo On Error Resume Next Esta es la forma más básica de efectuar un control de los errores que se puedan originar durante la ejecución de un programa en VBA.

236

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Simplemente se le está indicando a VBA que si se produjera un error en algún punto del procedimiento lo ignore y vaya a la siguiente sentencia del código. Vamos visualizando el código:

A continuación nos encontramos con otro Operador, es el operador negación Not. Do While Not blnPrimo Not hace que la expresión lógica que le sigue cambie su valor. Así si blnPrimocontiene el valor True Not blnPrimo devolverá el valor False. La expresió equivale a: Mientras blnPrimo no sea cierto Que es equivalente a Mientras blnPrimo sea falso. Con ello se ejecutará el código contenido entre la línea de Doy la línea del Loop.

Escuela de Tecnología de la Información

237

Microsoft Office Access 2016

Cuando lngNumero sea primo, la función EsPrimo asignará True a blnPrimo, automáticamente se saldrá del bucle, colocará la cadena de texto del número txtNumero en el cuadro de texto y luego ejecutará el procedimiento cmdPrimo_Click, como si se hubiera presionado en el botón [cmdPrimo]. Si el valor de lngNumerono hubiera cumplido con el rango de valores, pone un 1 en el cuadro de texto txtNumero, y ejecuta el procedimiento cmdPrimo_Click.

En otro procedimiento que maneja la pulsación de la tecla [cmdPrimoAnterior] aunque tiene una estructura semejante, se introducen unos cambios que es importante remarcar. En primer lugar se observamos que se utiliza una estructura del tipo Do Until, en vez de Do While. Además, como condición no utiliza una variable como en el ejemplo anterior, sino que lo compara directamente con el valor devuelto por la función EsPrimo, que devuelve True ó False dependiendo el caso:

238

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Do Until EsPrimo(lngNumero) Con esto nos evitamos utilizar una variable y una sentencia adicional. Además el código resulta algo más claro.Observamos el codigo

En este caso, si la variable no supera los filtros, pone el valor "2147483647"en el cuadro de texto.

Procedemos a guardar la aplicación, observamos que se ha utlizado otros procesos repetitivos y vemos la diferencia que existe entre ellos.

Escuela de Tecnología de la Información

239

Microsoft Office Access 2016

Tratamiento de los errores en procedimientos A la hora de utilizar el código de un módulo, hay dos tiempos • Tiempo de Diseño. • Tiempo de Ejecución. El tiempo de diseño transcurre mientras estamos modificando el contenido del código de un módulo, sea del tipo que sea, o cuando estamos cambiando las propiedades de controles, formularios o informes, en la llamada Vista Diseño, ya sea directamente ó mediante ejecución de código. Access permite crear mediante código, formularios básicamente utilizando el método CreateForm, que devuelve una referencia a un nuevo formulario, también permite añadirle controles mediante el método CreateControl, e incluso lo puede asociarlea un módulo, escribiendo todo su contenido. Para esto último tendríamos que crear una referencia al objeto Module del formulario, y para insertarle el código utilizar su método InsertText. De forma semejante existe el método CreateReport para la creación dinámica de informes. Si queremos usarlos posteriormente deberemos guardarlos, por ejemplo con el método Save del objeto DoCmd. El tiempo de ejecución transcurre cuando hemos creado una instancia de un objeto, formulario, informe, clase o hemos llamado a un procedimiento de un módulo estándar. En otras palabras cuando se esta ejecutando los objetos o el código de Access.

Errores en Tiempo de Diseño En Tiempo de Diseño podemos cometer una serie de errores, a la hora de escribir el código. Muchos de estos errores serán detectados inmediatamente por el editor de Access. Cuando escribimos una línea de código, Access realiza un análisis del texto que estamos escribiendo. En este proceso se realiza fundamentalmente su análisis sintáctico. También comprueba si hay sentencias incompletas, por ejemplo If sin Then. Si encuentra una expresión errónea lanza un mensaje de Error de compilación e incluso aporta una cierta información que nos puede orientar sobre el origen del error.

240

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

La línea de código incorrecta queda marcada en color rojo. Cuando ejecutamos el código, la primera vez que lo hace, no sólo realiza un análisis sintáctico, además va comprobando que todas las constantes y variables, ya sean de tipos estándar, referencias de objetos ó tipos definidos por el usuario, estén perfectamente declaradas, y los tipos de objeto existan y sean correctos.

Si se detecta algún error se interrumpe la ejecución del código y se lanza un aviso, marcando la zona del código donde el error se ha producido. Esta depuración del código se va realizando conforme se efectúan llamadas a los diferentes procedimientos. Podría ocurrir que tuviéramos un procedimiento que sólo se usara en determinadas condiciones y que contuviera por ejemplo una variable mal declarada. Si al ejecutar el código no se llega a utilizar ese procedimiento, no se detectaría el error que contiene. Para evitar “sorpresas” posteriores, es aconsejable realizar una pre-compilación del código. Para realizarla podemos utilizar la opción de menú [Compilar NombreDelFicheroAccess] de la opción de menú [Depuración]. Esta pre-compilación revisa todo el código, e incluso posibles procedimientos que no serían utilizados durante la ejecución del programa. Esto nos da más garantía sobre la calidad del código y nos protege frente a ciertos tipos de error que de otra forma no podríamos detectar.

Errores en Tiempo de Ejecución Hay una serie de errores que se pueden producir durante la ejecución del código, que no son de sintaxis ni originados por código incompleto o declaraciones inadecuadas. Son, por ejemplo los errores provenientes de valores no previstos por el código pasados ya sea por el propio usuario extraídos de tablas, ficheros u otras fuentes de origen.

Escuela de Tecnología de la Información

241

Microsoft Office Access 2016

Son los típicos errores de Tiempo de Ejecución. Supongamos que tenemos que dividir entre sí dos cantidades; si el denominador vale cero, nos dará un error de división entre cero. Podría ocurrir que no hayamos previsto que un cuadro de texto contuviera el valor Null. Esto nos podría generar error al intentar asignar este valor a una cadena de texto. También podría ocurrir que en una expresión por la que queremos asignar el resultado de una operación a una variable, ese resultado superara el rango admisible por el tipo de la variable, con lo que tendríamos un error de Desbordamiento. Un programa profesional debe adelantarse a todas estas posibilidades. Por ejemplo, si tenemos que dividir dos números, se debería comprobar que el denominador no contuviese el valor Cero. Si tuviéramos que obtener, un elemento de una matriz, ó colección, podríamos evitar un error de subíndice fuera de intervalo. Hay muchas circunstancias en las que se pueden producir errores en tiempo de ejecución. VBA nos provee de una herramienta para poder controlarlos una vez que se han producido. Supongamos que tenemos el siguiente procedimiento.

- Sí, ya se que es un código sin mucho sentido; lo pongo sólo como ejemplo didáctico. Si se ejecutara este procedimiento, ya sea llamado desde la ventana Inmediato o desde cualquier punto de la aplicación se producirá el preceptivo error:

Inmediatamente se interrumpirá la aplicación.

242

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Editando el código de las macros de Access Código frente a macros Access posee un potente conjunto de macros que permiten un alto grado de automatización en una serie de tareas. Si vamos a la ayuda de Access veremos que una macro se define como un conjunto de acciones creadas para automatizar algunas de las tareas comunes. Veamos en la práctica cómo se manejan. Vamos a crear un formulario y en él pondremos una etiqueta grande con un texto en rojo, por ejemplo Formulario abierto. Guardamos el formulario con el nombre VbayMacros. Abrimos la ventana macros, haciendo clic en la ficha Crear, Cinta de opciones Otros y en el botón [Macro]. Una vez dentro podremos ver la columna Acción. Seleccionamos la acción [AbrirFormulario]. Inmediatamente después de hacerlo, nos aparece en la parte inferior unos cuadros en los que podemos introducir los argumentos de la macro.

Si nos ponemos en el cuadro Nombre del formulario, vemos que nos aparece una flecha hacia abajo que nos permite seleccionar un formulario. Si la base de datos era nueva nos aparecerá únicamente el formulario VbayMacros que acabamos de guardar. Damos clic en la flecha de Agregar Nueva Acción, y seleccionamos la acción [Cuadro de Mensaje], y en los cuadros de abajo ponemos: En Mensaje: Formulario abierto, y en Tipo: Información.

Escuela de Tecnología de la Información

243

Microsoft Office Access 2016

A continuación, presionamos en el botón guardar, determinando el nombre Autoexec. Cerramos la ventana de macros, e incluso Access. Volvemos a abrir el archivo y veremos que ahora se abre el formulario PruebaMacro inmediatamente después de cargar el archivo. y nos muestra un cuadro de mensaje tipo a los que ya hemos visto con la función MsgBox.

Hemos verificado como se explicó en los temas de macros, si a una macro, le ponemos como nombre Autoexec, se ejecutarán sus acciones en el momento de abrir el archivo de Access.

244

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Las macros han sido una herramienta muy utilizada por “usuarios expertos en Access” que no tenían conocimientos de programación y que querían conceder a sus aplicativos de cierto grado de automatismo. Lo que quizás algunos de esos usuarios no sabían es que Access permite realizar una conversión directa de las macros a código VBA. Las funciones y procedimientos de VBA tienen más flexibilidad y sucesos que las macros. Además, las macros no pueden realizar tareas como por ejemplo un control de errores, o el acceso a un único registro con la misma simplicidad que con VBA. Vamos al panel de Exploracion y seleccionamos la macro Autoexec, clic derecho y abrir en modo diseño.

Luego hacemos clic en el Boton Archivo, para luego indicarle la opción Guardar como, luego Guardar objeto como

Escuela de Tecnología de la Información

245

Microsoft Office Access 2016

Tras esto nos aparece una nueva ventana en la que se nos propone cambiar el nombre de la Macro.

En el segundo cuadro seleccionamos [Módulo] y presionamos el botón [Aceptar]. Aparecera otra ventana, no cambiamos esos valores y presionamos el botón [Convertir].

Si ahora nos vamos a la ventana de Módulos veremos que aparece un nuevo módulo llamado Macro convertida - Autoexec.

Despues de hacer doble clic sobre el módulo Macro covertida -Autoexec, nos mostrará el código correspondiente

246

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

El proceso de conversión de macros se puede también realizar siguiendo estos pasos 1. Seleccione la macro a convertir en el panel de exploracion. 2. Seleccionamos la ficha [Herramientas de base de datos], en el Grupo de opciones Macro y dentro de ella el botón [ Visual Basic]

3. Damos clic en Visual basic y el archivo lo abre en el editor VBA. Otro procedimiento sería, teniendo abierto el editor de Macros. 1) En el grupo de opciones de Herramientas, damos clic en convertir Macros a Visual Basic.

Escuela de Tecnología de la Información

247

Microsoft Office Access 2016

Se pueden convertir tanto las macros generales como las macros asociadas a formularios o informes. Esta función tiene dos partes que se corresponden con las dos acciones de la macro. La acción AbrirFormulario se sustituye por el método OpenFormdel objeto DoCmd. La acción Cuadro de Mensaje se sustituye por la función MsgBox. Las mismas acciones que hemos puesto en la macro Autoexec, podríamos haberlas puesto en un mismo archivo de Macro, como dos macros independientes. ¿Cuándo usar Macros y cuándo código VBA? Las macros permiten mecanizar, de una forma simple y sencilla, tareas como Abrir un formulario, abrir o cerrar un informe o permitir desplazarnos entre los registros de una tabla. Para el resto de las acciones recomienda la utilización de VBA. La mayor parte de las acciones probables mediante macros, pueden ser realizadas favorablemente usando VBA mediante los métodos del objeto DoCmd, que las implementa. El objeto DoCmd El objeto DoCmd es uno de los objetos específico de Access, creado para sustituir a las acciones de las Macros. De hecho, sustituye con mucha ventaja a casi todas ellas. Los argumentos de la acción serán ahora los argumentos del método de DoCmd. En la acción AbrirFormulario, poníamos como Nombre del formulario VbayMacros, como vista Formulario y como modo de la ventana Normal.

248

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Al método OpenForm, que abre un formulario, le pasamos como nombre del formulario (FormName) "VbayMacros", como vista (View) acNormal, y como tipo de ventana (WindowMode)acNormal. Las constante acNormal está definida como una variable constante enumerada miembro de Access. AcFormView. El valor numérico es 0. Como se podrá observar hay un paralelismo total entre la acción de macro y el método correspondiente de DoCmd. Hay que tener en cuenta que no todas las Acciones de las macros están implementadas en los métodos de DoCmd. Por ejemplo, en la conversión de macros a código VBA hemos visto que Cuadro de Mensaje se reemplaza por la función MsgBox. Otras acciones no implementadas en DoCmd son las siguientes: Acción RunApp RunCode SendKeys SetValue StopAllMacros StopMacro

Equivalencia en VBA Función Shell Llamada a la subrutina correspondiente Instrucción SendKeys Operador =de asignación Instrucciones Stopo End Instrucciones Exit Subo Exit Function

Podemos ver directamente los métodos implementados en la clase DoCmd, mediante la ventana del Examinador de objetos. Para activar esa ventana pulsaremos la tecla [F2] desde el editor de código. Para localizar la clase DoCmd seleccionamos la biblioteca de Access y escribimos el nombre de la clase que queremos buscar. Tras pulsar la tecla de búsqueda se nos posicionará en la clase DoCmd. En la columna de la derecha podremos ver sus métodos. Se puede comprobar que, al contrario de otras clases, no posee ni propiedades ni eventos.

Escuela de Tecnología de la Información

249

Microsoft Office Access 2016

A continuación, se describen algunos métodos implementados con DoCmd, en algunos casos se aplica ejemplos de código. METODO

FUNCIONALIDAD

AddMenu

Permite crear barras de menú y menús contextuales. Se le asigna el Nombre del menú, el Nombre de la macro de menú y el Texto de la barra de estado.

ApplyFilter

Permite aplicar filtro a una consulta o una cláusula “con la condición WHERE” de una instrucción SQL a una tabla, a un formulario o a un informe. Se le pasan como parámetros el Nombre del filtro y la Condición que aparecería después del Where. Un ejemplo de como se aplica el filtro  DoCmd.ApplyFilter , "Marca Like '[ABC]*'"

Beep

Usado para emitir sonidos en la Pc.

CancelEvent

Usado para cancelar un evento. Sólo tiene efecto cuando se ejecuta como resultado de un evento. No utiliza parámetros.

Close

Usado para cerrar la ventana de un objeto, se tiene que pasar como parámetros el tipo y el nombre del objeto. Este código cierra el formulario actual, en la primera no pregunta si desea guardar en el segundo caso si hace la pregunta.  DoCmd.Close  DoCmd.Close acForm, " PruebaMacro", acSaveYes

CopyDatabaseFile

Copia la bd que se encuentra conectada al proyecto actual en un archivo de base de datos de Microsoft SQL Server para exportación. Los parámetros son Nombre del Archivo Base De Datos, Sobrescribir un Archivo Existente y Desconectar Todos Los Usuarios.

CopyObject

Permite copiar objetos de la bd, tales como Tablas, Consultas, Formularios, Informes, Módulos, etc… en la base de datos actual o en otra que se especifique. Te da la facilidad que cuando copies el objeto lo puedas cambiar de nombre. Como parámetros se coloca el Nombre de la base de datos destino, el Nuevo nombre que vaya a tener el objeto copiado, el Tipo de objeto a copiar y el Nombre del mismo. Por ejemplo este código copia la tabla Docente en la tabla Instructores DoCmd.CopyObject, "Instructores", acTable, "Docente" Tener en cuenta que cuando se copia sobre tablas vinculadas crea un

250

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

nuevo vínculo. DeleteObject

Elimina un objeto de una base de datos. Se coloca como parámetros el Tipo y el Nombre del objeto. Este ejemplo borra la tabla Docente. DoCmd.DeleteObject acTable, "Docente" Tener en cuenta que si se aplica sobre tablas vinculadas elimina el vínculo solamente.

DoMenuItem

Método antiguo obsoleto sustituido por RunCommand.

Echo

Se utiliza para mostrar u ocultar los resultados de la ejecución de una macro mientras se está ejecutando. DoCmd.Echo True Para desactivar Eco mostrando un mensaje DoCmd.Echo False, "Ejecutándose código de VBA"

FindNext FindRecord

Busca el siguiente registro que cumpla las condiciones definidas previamente mediante el método FindRecord. Opción muy importante ya que permite buscar un registro que cumpla determinados criterios. Usa los mismos criterios que la opción de menú [Edición] [Buscar]. Los criterios son Cadena a buscar, Coincidencia de la cadena de búsqueda, Distinguir mayúsculas, Sentido a buscar, buscar en Campo activo o en Todos, Buscar el primer registro o en Siguientes, buscar en Campos con formato, en el Campo activo y buscar Primero El parámetro Coincidencia toma una de las siguientes constantes del tipo AcFindMatch acAnywhere acEntire (valor predeterminado) acStart Como Sentido toma una de las constantes AcSearchDirection acDown acSearchAll (valor predeterminado) acUp Como Campo activo toma una de las constantes AcFindField acAll acCurrent

(valor predeterminado)

La siguiente instrucción busca el primer registro que contenga el texto "Jpm"en cualquiera de sus campos, distinguiendo entre mayúsculas y minúsculas, considerando también los campos con formato. DoCmd.FindRecord "Jpm", acAnywhere, True, acSearchAll, True

Escuela de Tecnología de la Información

251

Microsoft Office Access 2016

GoToControl

Desplaza el foco al campo o control desarrollado. El código que se muestra desplaza el foco al control txtNombre del formulario. DoCmd.GoToControl "txtNombre"

GoToPage

Traslada el foco al primer control de la página detallada en un formulario en el que se han colocado saltos de página, o a una ficha determinada de un control ficha. El parámetro Número de página es obligatorio. Los valores opcionales posición Horizontal y posición Vertical son útiles si el formulario es mayor que el tamaño de la ventana de Windows. Este código traslada el foco al primer control de la página 3 del formulario. DoCmd.GoToPage

GoToRecord

La acción GoToRecord (IrARegistro) convierte el registro especificado en el registro actual de un conjunto de resultados de una tabla, formulario o consulta. Admite los siguientes parámetros: Tipo de objeto, Nombre, Registro (Anterior, Siguiente, Primero, Último, Ir a o Nuevo), Número de registros a desplazar. Como tipo de objeto se utiliza una constante AcDataObjectType Esta constante puede tomar los valores acActiveDataObject (Valor predeterminado) acDataForm acDataFunction acDataQuery acDataServerView acDataStoredProcedure acDataTable El parámetro Registro puede tomar el valor de una constante del tipo AcRecord. Sus posibles valores son acFirst acGoTo acLast acNewRec acNext (Valor predeterminado) acPrevious Este código activa el tercer registro del formulario "Empleados". DoCmd.GoToRecord acDataForm, "Empleados", acGoTo, 3

Hourglass

Hace aparecer un reloj de arena en vez del cursor normal del ratón. Si el parámetro es False, vuelve a colocar el cursor por defecto. DoCmd.Hourglass True

252

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Maximize

Maximiza la ventana actual para ocupar totalmente la ventana de Windows. No hay parámetros. DoCmd.Maximize

Minimize

Lo contrario a maximiza DoCmd.Minimize

OpenForm

Abre el formulario especificado Se pueden pasar hasta 7 parámetros que controlarán el Nombre del formulario a abrir, el Tipo de vista como se Mostrará el formulario, el Filtro que se aplicará a los datos, una Cláusula Where que define las características que deben cumplir los datos, el Modo como se editarán (sólo lectura, etc.) y el Modo como se mostrará la ventana. Adicionalmente se le puede incluir los Argumentos de apertura. Como Tipo de vista se puede usar una de las siguientes constantes AcFormView acDesign acFormDS acFormPivotChart acFormPivotTable acNormal (predeterminado) acPreview El Modo de edición toma una constante AcFormOpenDataMode acFormAdd Se puede agregar registros nuevos pero no se pueden modificar los existentes. acFormEdit Se pueden modificar los registros existentes y agregar registros nuevos. acFormPropertySettings (predeterminado) acFormReadOnly Los registros sólo se pueden ver. El Modo como se mostrará la ventana toma uno de los valores AcWindowMode acDialog El formulario será Modal y Emergente. acHidden El formulario estará oculto. acIcon Se abre minimizado. acWindowNormal valor predeterminado La siguiente línea abre el formulario Alumnos, en modo de sólo lectura, con los datos de los alumnos residentes en Pamplona. DoCmd.OpenForm "Alumnos", , , _ "Poblacion = 'Lima'", acFormReadOnly

Escuela de Tecnología de la Información

253

Microsoft Office Access 2016

OpenFunction

Abre una función definida por el usuario en una base de datos de Microsoft SQL Server para verla desde Microsoft Access. Los parámetros son el nombre de la función, la Vista como se va a mostrar la función, y el Modo de visualización o edición de los datos. La Vista puede es una constante del tipo AcView. acViewDesign Abre la función en la vista Diseño. acViewNormal (predeterminado). acViewPivotChart Vista Gráfico dinámico. acViewPivotTable Vista Tabla dinámica. acViewPreview Abre la función en la Vista preliminar. El modo de visualización es del tipo AcOpenDataMode. acAdd Abre la función para la inserción de datos. acEdit (predeterminado). Abre la función para actualizar los datos existentes. acReadOnly Abre la función en Sólo lectura. La siguiente línea abre la función Ajuste en vista normal y en el modo edición de datos. DoCmd.OpenFunction "Ajuste", , acEdit

OpenModule

Permite poder abrir un procedimiento.

Uso de DoCmd en los Asistentes para controles Los Asistentes para controles de Access, por ejemplo, en los formularios, hacen un amplio uso del objeto DoCmd. Por ejemplo, al formulario siguiente le vamos a agregar un botón siguiente que me permita poder ir alsiguiente registro. Si Vamos a añadir un botón de comando a un formulario, teniendo activado el asistente para controles, vamos a observar que Access nos muestra una ventana (asistente) en el que nos pide información acerca de la acción que queremos que ocurra cuando presionemos en el botón.

254

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Ejecutamos dicho asistente

En nuestro caso vamos a crear un botón que haga que vayamos al registro siguiente respecto al registro actual. En la ventana de la derecha (acciones) seleccionaremos [Ir al registro siguiente], clic en siguiente

Escuela de Tecnología de la Información

255

Microsoft Office Access 2016

Presionamos la tecla [Siguiente] nuevamente y ponemos como nombre del botón cmdRegistroSiguiente, y presionamos la tecla [Finalizar].

Si hemos seguido estos pasos, nos mostrará en el formulario un botón con una flecha a la derecha. Si damos clic en propiedades del archivo nos mostrara la siguiente macro.

Todo esto, genera este código:

256

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Private Sub cmdRegistroSiguiente_Click() On Error GoTo Err_cmdRegistroSiguiente_Click DoCmd.GoToRecord , , acNext Exit_cmdRegistroSiguiente_Click: Exit Sub Err_cmdRegistroSiguiente_Click: MsgBox Err.Description Resume Exit_cmdRegistroSiguiente_Click End Sub

Vemos que nos ha generado un procedimiento de evento que define qué debe pasar cuando se presione el botón [cmdRegistroSiguiente]. En concreto vemos que usa el objeto DoCmd con el método GotoRecord, y el parámetro acNext. Esto hace que intente posicionarse en el registro siguiente. Incluso define un sistema para controlar posibles errores que se puedan generar.

Actividad 13: Editando botones para operar registro y Formulario Vamos a crear un formulario a partir de la tabla Instructores de la base de datos bdSenati, modificamos algunas propiedades del formulario, para que se muestre sin los botones de navegación y selectores de registro.

Procedemos a ingresar botones de comando, damos clic a cancelar cuando me sale el asistente. Vamos a la ventana de propiedades le ponemos nombre de acuerdo a los botones que se muestra de acuerdo a la lista:

Escuela de Tecnología de la Información

257

Microsoft Office Access 2016

a) b) c) d) e) f) g)

Ir al primer registro Ir al registro anterior Ir al registro siguiente Ir al último registro Agregar nuevo registro Guardar registro Cerrar Formulario

cmdPrimerRegistro cmdRegistroAnterior cmdRegistroSiguiente cmdRegistroUltimo cmdAgregarRegistro cmdGuardarRegistro cmdSalir

El paso siguiente es seleccionar una imagen para cada botón, el proceso es darle clic a las propiedades de el botón seleccionado la opción imagen. Botón …

Nos muestra la siguiente ventana

Seleccionamos la imagen deseasa y clic en aceptar. De tal manera que nuestro formulario quedará de la siguiente manera:

258

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

El paso siguiente es poner codigoVBA en cada botón, para ello damos clic en la pestaña eventos en la ventana de propiedades del primer botón. En esta pestaña seleccionamos el evento Al hacer clic, en el botón … Luego clic en el generador de código.

Procedemos a ingresar código a cada botón.

Escuela de Tecnología de la Información

259

Microsoft Office Access 2016

Digitanos el código del botón salir:

260

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Ejecutamos el vista formulario y probamos

Los modelos de objetos de Access Estructura de los Objetos de Access Una aplicación Access está compuesta de una gran cantidad de objetos que se interrelacionan. Algunos de ellos son objetos individuales, pero otros están agrupados en Colecciones. En la cumbre de todos ellos está el objeto Application El objeto Application hace referencia a la aplicación de Access que está activa en ese momento. El orden de tres grandes grupos que siguen son los siguientes: Objetos Access, Objeto Datos Access y Objetos VBA,

Escuela de Tecnología de la Información

261

Microsoft Office Access 2016

APPLICATION

OBJETOS ACCESS

Tabla

OBJETO DATOS ACCESS

Formulario

Botón

TablaDef

QueryDef

RecordSet

Container

OBJETOS VBA

DoCmd

Cuadro de Texto

Menú Despegable

Informe

Módulo

La estructura de objetos representada en el gráfico anterior es sólo un resumen del total de objetos propios de Access. Los objetos representados en color azul, representan colecciones. Por ejemplo, la colección Forms contiene objetos del tipo Form (Formularios), que a su vez contiene una colección Controls (botón, caja de texto, label, etc) de objetos Control.

Los Controles ActiveX Agregando controles en el Formulario Formularios Conocemos que un formulario es el elemento primordial para la introducción de datos y su mantenimiento, por parte del usuario final de nuestra aplicación. También puede servir para mostrar avisos, al estilo de un Cuadro de mensaje, como formulario de inicio de una aplicación, como formulario del tipo “Acerca de…” o incluso como contenedor de otro subformulario u objetos ActiveX. Ya se ha mencionado que el objeto Form, que representa a un formulario y que además es un elemento de la colección Forms. Vemos también que un objeto Form contiene como atributo el objeto Module. Este objeto Module representa al módulo de clase del formulario, en el que podemos, al igual que en una “clase normal” definir propiedades y métodos personalizados. 262

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Para efectuar las pruebas de código, vamos a crear un formulario “simple” y a trabajar con su código de clase. Para shacerla mas sencilla no lo enlazaremos con ningún origen de datos.

Durante la vida de un formulario ocurren una serie de eventos. Es interesante saber en qué orden se producen éstos, tanto al abrirse el formulario, como al cerrarse. Tenemos aca en un cuadro una serie de eventos que posteriormente lo emplearemos en un ejemplo para entender mejor como funciona. En este cuadro se menciona cada uno de los eventos y lo que ocurre cuando estos eventos se ejecutan Evento Activate

Al activar

Lo que ocurre Cuando el formulario pasa a ser ventana activa

Close Current Deactivat eGotFocus Load LostFocu s Open Resize Unload

Al cerrar Al activar registro Al desactivar Al recibir el foco Al cargar Al perder el foco Al abrir Al cambiar el tamaño Al descargar

Al cerrarse y retirarse de la pantalla Cuando se enfoca un registro como actual Cuando la ventana del formulario pierde el foco Cuando el formulario recibe el foco Al abrir un formulario y mostrar sus registros Cuando el formulario pierde el foco Al abrir pero antes de mostrar el primer registro Al abrir un formulario o cambiar de tamaño Al cerrar un formulario, antes de desaparecer

Escuela de Tecnología de la Información

263

Microsoft Office Access 2016

Actividad 14: Conociendo el orden de los eventos de un Formulario Primero creamos, a nivel del módulo, una variable que se irá incrementando cuando se produzcan determinados eventos. Vamos asociando cada uno de los eventos y escribimos su código El código sería tan simple como éste: Option Compare Database Option Explicit Dim intNumero As Integer Private Sub Form_Activate() MuestraOrden "Activate" End Sub Private Sub Form_Close() MuestraOrden "Close" End Sub Private Sub Form_Current() MuestraOrden "Current" End Sub Private Sub Form_Deactivate() MuestraOrden "Deactivate" End Sub Private Sub Form_GotFocus() MuestraOrden "GotFocus" End Sub Private Sub Form_Load() MuestraOrden "Load" End Sub Private Sub Form_LostFocus() MuestraOrden "LostFocus " End Sub Private Sub Form_Open(Cancel As Integer) MuestraOrden "Open" End Sub Private Sub Form_Resize() MuestraOrden "Resize" End Sub

264

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Private Sub Form_Unload(Cancel As Integer) MuestraOrden "Unload" End Sub Private Sub MuestraOrden(ByVal Evento As String) intNumero = intNumero + 1 MsgBox CStr(intNumero) & " " & Evento End Sub Private Sub cmdCerrar_Click() On Error GoTo HayError DoCmd.Close Salir: Exit Sub HayError: MsgBox Err.Description Resume Salir End Sub Ejecutamos el formulario .

Estos eventos son los que se ejecutan en ese orden antes de que se muestre el formulario

Escuela de Tecnología de la Información

265

Microsoft Office Access 2016

Tras presionar el botón de cierre, se genera el evento Unload, y justo antes de que se cierre y se descargue de memoria, el evento Close.

Crear propiedades y métodos públicos en el módulo de clase del formulario. Se ha mencionado que el código asociado a un formulario es su código de clase, por lo tanto, es posible poder escribir nosotros propiedades y métodos en él. Para entenderlo mejor lo haremos con un ejemplo donde se va a crear la propiedad Numero que contendrá un dato numérico que asociaremos al formulario. Repasando el tema de propiedades y métodos, crearemos un nuevo formulario al que llamaremos FormularioNumerado. Le pondremos un botón de cierre, con el nombre cmdCerrar y ingresamos código en el evento Al hacer Clic. Y asignamos el nombre al formulario de Form_FormularioNumerado En el código del módulo de la clase le pondremos una variable privada de tipo numérico y crearemos la propiedad Número. El código de este nuevo formulario será: Option Compare Database Option Explicit Dim intNumero As Integer Public Property Get Numero() As Integer Numero = intNumero End Property Public Property Let Numero(ByVal NuevoNumero As Integer) intNumero = NuevoNumero Caption = "Formulario Nº " & Format(.Numero, "000") End Property Private Sub cmdCerrar_Click() On Error GoTo HayError DoCmd.Close Salir: Exit Sub 266

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

HayError: MsgBox Err.Description Resume Salir End Sub Si abrimos el Examinador de objetos, vemos que en la clase del formulario ha aparecido la propiedad Numero.

Igualmente podríamos comprobar que existe el procedimiento privado cmdCerrar_Click

Instanciar un formulario Existen múltiples formas de instanciar a un formulario, o lo que es lo mismo, asignar un formulario concreto a una variable. Hay que tener en cuenta que una variable, que vaya a hacer referencia a un formulario debe ser del tipo Variant, Object o Form.

Escuela de Tecnología de la Información

267

Microsoft Office Access 2016

Se ha mencionado anteriormente que el tipo Variant es el más usado de todos, admitiendo casi cualquier cosa. El tipo object admite usualmente cualquier tipo de objeto, pero al contrario que el Variant, no puede admitir valores que no sean objetos. La vinculación en tiempo de ejecución, empleando variables del tipo Variant u Object crea una serie de inconvenientes, como un control más vago de los posibles errores, un código menos eficiente y la falta de ayuda “en línea” al escribir el código. Por ello, cuando a una variable hay que establecer un objeto concreto, es mejor declararla que sea declarada del tipo de ese objeto; en nuestro caso del tipo Form; y mejor aún como Ya hemos dicho que nuestro formulario es un objeto del tipo Form_FormularioNumerado, podríamos declarar una variable de su tipo, con lo que para activarlo bastaría con asignarlo a la variable con Set y New. Para comprobarlo, vamos a crear un módulo estándar y en él procederemos a crear una variable del tipo Form_FormularioNumerado, Precisamos que el asistente en línea, nos lo muestra como una de las posibilidades, acompañándolo con el icono que define a las clases.

Vamos ahora a crear un procedimiento que presente una instancia de ese formulario y le asigne algunas propiedades Option Compare Database Option Explicit Public MiFormulario As Form_FormularioNumerado Public Sub CargaFormulario() ' Creamos la instancia del formulario Set MiFormulario = New Form_FormularioNumerado With MiFormulario .Numero = 1 .Caption = "Formulario Nº " & Format(.Numero, "000") End With MiFormulario.visible=True End Sub Ejecutamos el procedimiento y superficialmente no ha pasado nada. De hecho, sí ha pasado. Lo que ocurre es que el formulario está cargado, vamos a Access y lo vamos a ver en vista Formulario.

268

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Múltiples instancias de un formulario También, como con el resto de las clases, podríamos crear Instancias múltiples de un formulario. Por ejemplo, si tuviéramos el formulario Clientes, podríamos crear 5 instancias, cada una de ellas mostrándonos los datos de un cliente diferente. Vamos a ver cómo podríamos hacerlo con nuestro formulario. En un módulo ponemos Public aFormularios(1 To 10) As Form Public Sub FormulariosMultiples() Dim i As Integer For i = 1 To 10 Set aFormularios(i) = New Form_FormularioNumerado With aFormularios(i) .Caption = " Formulario Nº " & Format(i, "000") .Visible = True End With Next i End Sub En el caso anterior hemos creado diez formularias, cada uno de ellos con una barra de título diferente. En realidad, los formularios se muestran todos en la misma posición, pero han sido desplazados individualmente para que aparezcan tal como aparecen en la imagen. Verificamos con esto que tenemos libertad para cambiar las propiedades individuales de cada formulario.

Escuela de Tecnología de la Información

269

Microsoft Office Access 2016

En concreto casi cualquier propiedad del formulario que sea de escritura, por ejemplo verificamos en la barra de titulo el cambio de la propiedad Caption en cuanto al nombre del Formuario. Hagamos otro ejemplo, donde aparte de la propieda Caption vamos a modificar la propiedad Color del Formulario. Las variaciones de color en la sección Detalle se ha realizado de la siguiente forma: Public aFormularios(1 To 10) As Form Public Sub FormulariosMultiples() Dim i As Integer Dim lngColor As Long For i = 1 To 10 Set aFormularios(i) = New Form_FormularioNumerado With aFormularios(i) ' Pongo el título del formulario .Caption = " Formulario Nº " & Format(i, "000") ' Color de la sección Detalle lngColor = RGB(25.5 * i, 128 + 12 * i, 170 + 6 * i) .Detalle.BackColor = lngColor ' Elimino el selector de registros .RecordSelectors = False ' Elimino los botones de navegación .NavigationButtons = False ' Hago visible el formulario

270

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

.Visible = True End With Next i End Sub

Conexión con datos en un formulario Sabemos que un formulario puede existir sin estar conectado a ninguna tabla de la base de datos o consulta. Pero a la vez, se puede establecer la conexión de un formulario con un origen de datos por código VBA en tiempo de ejecución. E incluso, como veremos con la biblioteca de ADO, podríamos enlazarlo a un conjunto de datos (Recordset) que exista únicamente en la memoria de la PC. Para comprobarlo, vamos a crear la tabla Datos con los siguientes campos

A continuación, creamos un formulario, de nombre frmDatos, con dos cuadros de texto. Sus nombres serán txtDatCodigoy txtDatNombre.

Escuela de Tecnología de la Información

271

Microsoft Office Access 2016

Al cuadro de texto que contendrá el campo DatCodigo (autonumérico) le cambiaremos sus propiedades Habilitado (Enabled) y Bloqueado (Locked), para que no se pueda acceder, desde el formulario al campo Datcodigo, que es autonumérico

Pero esto lo haremos por código en el evento Al cargar (OnLoad) del formulario.

Para asignar una tabla, o consulta, a un formulario, utilizaremos la propiedad Origen del registro (RecordSource). Esto lo podemos hacer también en el evento Al cargar. A la propiedad le asignaremos una cadena que puede contener:  El nombre de una tabla  El nombre de una consulta guardada  Una cadena SQL. En nuestro caso serían igualmente válidas las siguientes opciones:     

272

Me.RecordSource = "Datos" Me.RecordSource = "Select * From Datos;" Me.RecordSource = "Select DatCodigo, DatNombre From Datos;" Me.RecordSource = "Select Datos.Datcodigo, Datos.DatNombre From Datos;" Me.RecordSource = "Select [DatCodigo], [DatNombre] From Datos;"

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Respecto a la palabra Me, que estamos utilizando podemos recordar que la vimos cuando analizábamos las clases. De esto deducimos que Me representa el objeto creado mediante la clase, es decir, representa al propio formulario. Por eso, si escribimos Me y a continuación el punto, nos aparece la ayuda en línea que nos suministra el propio editor de Visual Basic. Las siguientes instrucciones serían tan válidas, como los utilizadas en las líneas anteriores. txtidDato.Enabled = False txtidDato.Locked = True RecordSource = "Select DatCodigo, DatNombre From Datos;" Si abrimos el formulario, sin asignarle un origen de datos, tendrá un aspecto semejante a éste:

Vamos a observar cómo cambia al asignarle un origen de datos. En el evento, Al cargar del formulario, escribimos lo siguiente: Private Sub Form_Load() Dim strSQLDatos As String txtidDato.Enabled = False txtidDato.Locked = True strSQLDatos = "Select DatCodigo, DatNombre From Datos;" RecordSource = strSQLDatos End Sub

Escuela de Tecnología de la Información

273

Microsoft Office Access 2016

Observamos que nos indica que tenemos un determinado número de registros Exactamente 10, por lo que podemos creer que efectivamente está conectado a la tabla Datos. La única observación seria que no se visualiza nada en los cuadros de texto. Esta conexión entre los cuadros de texto y los correspondientes campos de la tabla, se debe realizar después de que hayamos conectado la tabla al formulario. En un control, el campo al que se conecta, lo determina la propiedad Origen del control (ControlSource). Su sintaxis es así NombreDelControl.ControlSource = NombreDelCampo Para ello cambiaremos el código del evento Al cargar de la siguiente manera:

Con lo que el formulario se verá de una forma semejante a esta:

274

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Comprobamos que ahora sí tenemos acceso a los datos. Cambio, en tiempo de ejecución del origen de datos. Vamos a crear ahora una segunda tabla a la que vamos a llamar Datos2. Para facilitar haremos que esta nueva tabla contenga los mismos campos que la tabla Datos. Modificaremos el contenido de la columna DatNombre para que podamos evaluar la diferencia. Se ha modificado los datos como se muestra en la ventana de la Tabla Datos2.

Para demostrar el proceso, copiamos el formulario anterior y le ponemos como nombre frmDatosAlterados. Al copiar el formulario, se copiará con sus propiedades y código asociado. A continuación, a este nuevo formulario le añadiremos dos botones que serán los que efectúen el “reemplazo” al hacer Clic sobre ellos. A estos botones le pondremos por nombre cmdTabla1y cmdTabla2. En cada uno de los eventos Al hacer clic , escribimos respectivamente lo siguiente. Sólo con esto podemos comprobar que cambiamos el origen de datos para el formulario simplemente modificando la cadena de SQL que define el conjunto de datos con el que queremos trabajar, utilizando simplemente la propiedad.

Escuela de Tecnología de la Información

275

Microsoft Office Access 2016

Ejecutamos el formulario y damos clic a los botones respectivamente y observamos el cambio.

Modificar en tiempo de ejecución del origen de datos, con nombre de campos diferentes. En los puntos anteriores, hemos conectado un formulario a dos tablas diferentes, con sólo pulsar un botón. El problema era muy sencillo de resolver, ya que los campos tienen el mismo nombre en ambas tablas.

Actividad 15: Usando la propiedad ControlSource en tablas diferentes Del ejercicio anterior desarrollado de conexión a datos con ControlSource, vamos a tomar el mismo formulario y vamos a copiar le ponemos de nombre a la copia frmTresTablas y le añadimos un nuevo botón cmdDepartamento. Copiaremos dicha tabla de la base de datos Senati, con los campos depCodigo y depNombre.

276

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Vamos a hacer que cuando se pulse el botón cmdDepartamento se muestren las provincias, y cuando se pulsen los otros botones, se muestren sus respectivas tablas. Adicinalmente le vamos a agregar en la barra del título del formulario nos muestre el nombre de la tabla conectada usando la propiedad Caption del formulario. También vamos a modificar el nombre de las etiquetas asociadas a los cuadros de texto, poniéndoles como nombres respectivos, lblCodigo y lblNombre. El prefijo lbl nos ayuda a entender que ese nombre le corresponde a una etiqueta (Label). Nuestro formulario en modo diseño quedara así:

Para lograr nuestro objetivo, añadimos código para gestionar el evento Clic del nuevo botón, y modificamos el código anterior. El código completo quedará así: Option Compare Database Option Explicit Private Sub Form_Load() Dim strSQLDatos As String txtidDato.Enabled = False txtidDato.Locked = True cmdTabla1_Click End Sub

Private Sub cmdTabla1_Click() AjustaCamposTablas Caption = "Tabla Datos1" RecordSource = "Select Datcodigo, DatNombre From Datos;" End Sub Private Sub cmdTabla2_Click() AjustaCamposTablas Caption = "Tabla Datos2" RecordSource = "Select Datcodigo, DatNombre From Datos2;" End Sub Private Sub cmdDepartamento_Click() RecordSource = "Departamentos" Caption = "Tabla Departamento" txtDatCodigo.ControlSource = "depCodigo"

Escuela de Tecnología de la Información

277

Microsoft Office Access 2016

txtDatNombre.ControlSource = "depNombre" txtDatCodigo.Format = "00" If lblCodigo.Caption "Clave:" Then lblCodigo.Caption = "Clave:" lblNombre.Caption = "Departamento:" End If End Sub Private Sub AjustaCamposTablas() txtDatCodigo.ControlSource = "DatCodigo" txtDatNombre.ControlSource = "DatNombre" txtDatCodigo.Format = "#,##0" If lblCodigo.Caption "Codigo:" Then lblCodigo.Caption = "Codigo:" lblNombre.Caption = "nombre:" End If End Sub Podemos ver que desde el evento Load, se llama directamente al gestor del evento Clic del botón cmdTabla1mediante la instrucción: cmdTabla1_Click Esto es así porque un gestor de evento no deja de ser un procedimiento Sub y además por tanto se puede le llamar de forma directa. El formulario mostrará la información que seleccionemos mediante los botones:

Propiedades de los formularios Es de conomiento ya a esta altura que una clase esta definida por:   

Propiedades Métodos Eventos.

Una propiedad es una característica que tiene un objeto de una clase determinada que podemos leer, escribir o ambas cosas. Los métodos son procedimientos determinados en una clase que pueden devolver valores, como es el caso de funciones, o sólo ejecutar una serie de instrucciones de código.

278

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Los métodos pueden recibir parámetros, tanto por valor como por referencia. Pueden entregar datos simples, como cadenas, valores numéricos, boleanos, etc… ú objetos. Lo dicho en el punto anterior es perfectamente aplicable a las propiedades. Las propiedades de los formularios a las que podemos acceder, o construir, afectan:   

Al diseño y aspecto del formulario, tal como su tamaño, posición, color… A los orígenes de datos a los que puede estar conectado. Otras características, como la forma en que se imprimirá en una impresora en particular.

Por lo extenso del tema no podremos dar un repaso a todas las propiedades de los formularios, pero sí hablaremos de las más interesantes. Propiedades de Formato Para hablar de las propiedades tenemos que ver la versión en la cual se esta trabajando, en nuestro caso, Access 2016. Propiedad Título (Caption) Controla en un formulario el texto que aparecerá en la barra de título de un formulario. Es una propiedad de tipo cadena (String) y es de lectura – escritura. Esta propiedad ya fue usada en el ejemplo anterior Caption = "Tabla Departamento" Recordemos que la línea anterior es equivalente a: Me.Caption = "Tabla Departamento" Esta propiedad caption no es exclusividad de los formularios, hay otros objetos que también poseen esta propiedad, como las etiquetas, informes, botones de comando, etc… Vamos a poner en un formulario nuevo una etiqueta de nombre lblTitulo y un botón de comando de nombre cmdTitulo.

En el evento Al cargar del formulario escribimos: Private Sub Form_Load() Caption = "Este es el valor de la propiedad Caption" lblTitulo.Caption = "Título de la etiqueta" cmdTitulo.Caption = "Título del botón" End Sub Al abrir el formulario veremos algo como esto:

Escuela de Tecnología de la Información

279

Microsoft Office Access 2016

Propiedad Presentación Predeterminada (DefaultView) Especifica qué modo de presentación tendrá el formulario en el momento en que se abra. Sus posibles valores son Modo de Presentación

Valor Descripción

Formulario simple

0

Es el valor predeterminado. Muestra un solo registro cada vez.

Formularios continuos

1

Esta opción permite visualizar múltiples registros.

Hoja de datos

2

Muestra los datos del formulario organizados en filas y columnas como si fuera una hoja de cálculo donde las filas representan a los registros y las columnas a los campos.

PivotTable

3

* Muestra el formulario como una tabla dinámica.

PivotChart

4

** Muestra el formulario como un gráfico dinámico.

Estas propiedades sólo pueden establecerse por código cuando el formulario está en modo diseño. Si tratamos de hacerlo en tiempo de ejecución nos dará un error. Puede causarnos sorpresa, pero en un formulario por código no sólo podemos modificar sus características, sino incluso añadirle controles. Algunos de estos procesos sólo pueden realizarse si ponemos el formulario en modo diseño. Propiedad AllowFormView Nos permite inspeccionar si podemos mostrar el formulario en el modo de presentación de Formulario simple. Propiedad AllowDatasheetView Nos permite controlar si se permite el modo de presentación Hoja de datos Estas dos últimas propiedades mencionadas, son de tipo Boleano.

280

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Propiedad Barras de Desplazamiento (ScrollBars) Mediante esta propiedad podemos especificar la aparición o no, tanto de la barra de desplazamiento vertical como de la horizontal. Es aplicable a formularios y cuadros de texto, teniendo en cuenta que los cuadros de texto sólo pueden tener barras verticales Sus posibles valores son Barras

Valor Descripción

Ninguna

0

No aparecen barras de desplazamiento. En los cuadros de texto esta es la opción predeterminada

Sólo horizontal

1

Muestra barra de desplazamiento horizontal en el formulario

Sólo vertical

2

Muestra una barra de desplazamiento vertical.

Ambas

3

Es el valor predeterminado para los formularios. En el formulario aparecen barras de desplazamiento tanto horizontal y vertical. No se aplica a cuadros de texto.

Propiedad Selectores de registro (RecordSelectors) Permite Mostrar u ocultar la barra vertical selectora de registros. Vamos a poner en un formulario un botón de comando con el nombre cmdSelectores y comprobemos el resultado cada vez que lo presionamos. Private Sub cmdSelectores_Click() RecordSelectors = Not RecordSelectors If RecordSelectors Then cmdSelectores.Caption = "Ocultar selector de registro" Else cmdSelectores.Caption = "Mostrar selector de registro" End If End Sub

Escuela de Tecnología de la Información

281

Microsoft Office Access 2016

Propiedad Botones de desplazamiento (NavigationButtons) Permite Mostrar u ocultar los botones de desplazamiento entre registros y las etiquetas que indican su número. Ponemos un botón con el nombre cmdBotonesDeDesplazamiento y comprobemos el resultado cada vez que lo presionamos. Private Sub cmdBotonesDesplazamiento_Click() NavigationButtons = Not NavigationButtons If NavigationButtons Then cmdBotonesDeDesplazamiento.Caption = "Ocultar Botones de Desplazamiento"

Else cmdBotonesDeDesplazamiento.Caption = "Mostrar Botones de Desplazamiento"

End If End Sub

Otras Propiedades de formato de tipo Bolean que pueden establecerse en tiempo de ejecución.

282



Separadores de registros (DividingLines) especifica si habrá separadores de registros separando las secciones de un formulario o los registros mostrados en un formulario continuo.



Formulario movible (Moveable) establece si el formulario se podrá o no desplazar por la pantalla.



Propiedad Activado (Enabled) esta propiedad define si un objeto está activado y por tanto podrá responder a eventos.



Propiedad Bloqueado (Locked) esta propiedad especifica si se pueden editar los datos de un control en la vista Formulario. Es muy útil para mostrar datos en un cuadro de texto, que no queremos que el usuario pueda cambiar.

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Visualizar en un Formulario un campo Si deseamos que se visualice en un formulario un campo, en este caso de tipo auto numérico, que el usuario no pueda editarlo, es habitual poner, para ese control, la propiedad Enabled a False, y la propiedad Locked a True. Este es un ejemplo de formato para un TextBox, en el evento Al cargar del formulario. Private Sub Form_Load() With codigoProducto .Enabled = False .Locked = True .BackStyle = 0 .BorderStyle = 1 .ForeColor = 128 .FontName = "Arial" .FontSize = 12 .FontBold = True

' Sin activar ' Bloqueado ' Fondo transparente ' Borde fino ' Color Burdeos del texto ' Fuente de tipo Arial ' Tamaño de fuentuntos ' Fuente en negrita

End With End Sub Así se vería el control:

Como se ha visto se puede modificar la apariencia del control Propiedad Imagen (Picture) Mediante esta propiedad podemos establecer la imagen que queremos mostrar como fondo del formulario, de un botón, informe, etc… Admite distintos tipos de ficheros gráficos Su sintaxis es Objeto.Picture = "RutaYNombreDelFicheroGráfico" Nota: cmdPaletas.Picture ="c:\Icono\icono.gif"

Escuela de Tecnología de la Información

283

Microsoft Office Access 2016

Los Botones de Access no admiten mostrar simultáneamente un texto y una imagen. Esto no es un problema solucionable, ya que podemos crearnos un fichero gráfico que incluya el texto, con cualquier herramienta de diseño. En el ejemplo, tenemos un botón con el gráfico típico de salida y el texto. Si agregamos el siguiente código: Me.Picture ="c:\iconos\MiFoto.jpg"

Si Modificamos el código anterior por este otro, observaremos: Picture ="c:\Iconos\logo.bmp"

Podríamos incluso hacer cambiar el gráfico cuando se pulse el botón, y cuando se vuelve a soltar. Para ello podemos aprovechar los eventos

284



Al bajar el Mouse (MouseDown) que se produce al presionar un botón del ratón sobre el botón



Al subir el Mouse (MouseUp) se produce al levantar el botón del ratón sobre el botón después de haberlo presionado

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Diseñamos el siguiente formulario

Private Sub cmdMouse_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) cmdMouse.Picture = "C:\iconos\mouse1.gif" End Sub Private Sub cmdMOuse _MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) cmdMouse.Picture = "C:\iconos\mouse2.gif" End Sub

Ejecutamos el formulario y observaremos

Eventos del ratón MouseDown y MouseUp En el controlador de estos eventos, podemos averiguar 

Mediante el parámetro Button, qué botón hemos presionado pudiendo tomar estos valores:

acLeftButton acRightButton acMiddleButton

1 2 4

Escuela de Tecnología de la Información

Botón izquierdo del ratón Botón derecho Botón central

285

Microsoft Office Access 2016

Podemos controlar también si hemos presionado, de forma simultánea alguna de estas teclas   

Mayúscula Control. Alt

1 2 4

Y cualquier combinación de ellas (es la suma de los valores anteriores) Este código nos mostrará en un cuadro de mensaje si se ha presionado alguna de las teclas anteriores mientras se pulsaba un botón del ratón. Private Sub cmdMiBoton_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Shift Case 0 MsgBox "Sólo el ratón" Case 1 MsgBox "Tecla Mayúscula" Case 2 MsgBox "Tecla Control" Case 3 MsgBox "Teclas Mayúscula y Control" Case 4 MsgBox "Tecla Alt" Case 5 MsgBox "Teclas Mayúscula y Alt" Case 6 MsgBox "Teclas Control y Alt" Case 7 MsgBox "Teclas Mayúscula Control y Alt" End Select End Sub Estas combinaciones nos permiten definir diferentes comportamientos de un control al pulsarlo con el ratón dependiendo de si se ha pulsado simultáneamente una tecla Mayúscula Control o Alt, o incluso combinaciones de ellas.

286

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Trabajando con colores en un control Propiedad Estilo del fondo (BackStyle) Controla si el fondo de un control es opaco ó transparente. 0

Transparente

El control completo o parte de él serán transparentes

1

Opaco

El fondo del control tendrá el color definido por la propiedad Color de fondo (BackColor)

Propiedad Color de fondo (BackColor) La propiedad que gobierna el color de fondo de la mayoría de los objetos es la propiedad BackColor. Esta propiedad admite valores de tipo Long, en el rango: del RGB(0,0,0) 0 (Negro) al valor RGB(255,255,255) 16.777.215 (Blanco) Otra forma de acceder a los colores es mediante la función QBColor(Índice), que admite para el parámetro Índice, valores del 0 al 15 Indice

Color

Indice

Color

0

Negro

8

Gris

1

Azul

9

Azul claro

2

Verde

10

Verde Claro

3

Aguamarina

11

Aguamarina claro

4

Rojo

12

Rojo claro

5

Fucsia

13

Fucsia claro

6

Amarillo

14

Amarillo claro

7

Blanco

15

Blanco brillante

Utilización de las constantes definidas en el módulo ColorConstants: Estas son: vbBlack

Negro

0

vbBlue

Azul

16.711.680

vbCyan

Cyan

16.776.960

Escuela de Tecnología de la Información

287

Microsoft Office Access 2016

vbGreen

Verde

65.280

vbMagenta

Magenta (rojo primario)

16.711.935

vbRed

Rojo

255

vbWhite

Blanco

16.777.215

vbYellow

Amarillo

65.535

Propiedad Color del texto (ForeColor) Esta propiedad define el color que va a mostrar el texto de un control. Hay otras propiedades que definen aspectos del color en un objeto BorderColor Como su propio nombre indica, define el color de los bordes de un objeto. Fijémonos en el siguiente código: Private Sub Form_Load() With txtDato .Enabled = False .Locked = True .BackStyle = 0 .BackColor = vbYellow .BorderStyle = 1 .ForeColor = vbBlue .FontName = "Arial" .FontSize = 12 .FontBold = True .BorderWidth = 2 .BorderColor = vbRed End With End Sub

288

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Define un cuadro de texto (TextBox) en el que lo que escribamos se verá en color azul, tendrá un borde rojo y el fondo del mismo será de color amarillo.

Propiedad Color de los bordes (BorderColor) Define el color que van a mostrar los bordes de un control. El grosor de los bordes lo define la propiedad Ancho de los bordes (BorderWidth) Otras propiedades para el formato de objetos Propiedad Estilo de los Bordes (BorderStyle) Es una propiedad que funciona de forma diferente, si se aplica a un formulario o se aplica a un control. En un formulario puede tomar los siguientes valores 0

Ningún borde

No aparece ningún borde ni ningún elemento relacionado con los mismos. No se puede cambiar el tamaño del formulario.

1

Bordes delgados

El formulario tiene un borde fino y puede mostrar los elementos relacionados. No se puede cambiar su tamaño.

2

Bordes ajustables

Es el valor predeterminado de Access. Puede mostrar los elementos relacionados con el borde, y ajustar su tamaño con el cursor.

3

Cuadro de Diálogo

El borde del formulario se pone de tamaño doble. Nos muestra una barra de título, un botón cerrar y un menú control. El formulario no puede ni maximizarse, ni minimizarse ni cambiar de tamaño. Además, puede mostrarse como Modal (por encima de todas las demás ventanas) poniendo sus propiedades Emergente (PopUp) y Modal al valor True.

Escuela de Tecnología de la Información

289

Microsoft Office Access 2016

En un control sus valores pueden ser 0

Transparente

1

Sólido

Predeterminado sólo para etiquetas, gráficos y subinformes Línea sólida (Predeterminado)

2

Guiones

Línea de guiones

3

Guiones cortos

Línea de guiones cortos

4

Puntos

Línea de puntos

5

Puntos separados

Línea de puntos separados

6

Guión punto

Línea con una combinación de punto y raya

7

Guión-punto-punto Línea con una combinación de raya punto y punto

8

Sólido doble

Líneas dobles

Propiedad: ancho de los bordes (BorderWidth) Especifica el ancho del borde de un control. Es de tipo Byte. Valores admitidos: 0

Trazo fino

1 a 6 De 1 a 6 ptos.

Predeterminado sólo para etiquetas, gráficos y subinformes Ancho en puntos

En la ayuda de Access puede encontrar información completa de cómo hacer efectiva esta propiedad.

Editando el código de los controles ActiveX Los controles ActiveX son pequeños objetos que se crean para generar aplicaciones para manejo de datos. Los usos más frecuentes de los controles ActiveX son los botones de comando, cuadros de lista, etiquetas, botones de opción y cuadros de diálogo.

Actividad 16: Creando una barra de progreso Vamos a crear un formulario en el que vamos a colocar tres barras que funcionarán al estilo de las Barras de Progreso (ProgressBar). Haremos que, al desplazar las barras, varíe la proporción de Rojo, Verde y Azul del fondo del formulario, con lo que irá variando su color. Hay que notar que que no se va a utilizar ningún control ActiveX, como los que vienen en la librería MsComCtlLyb, para realizar las barras de desplazamiento. Éstas las vamos a crear nosotros. Fijémonos en el siguiente gráfico:

290

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Para imitar la barra utilizaremos 3 etiquetas colocadas una encima de la otra. La inferior lblColor3 tendrá el fondo de color blanco. La intermedia lblColor2 será de color Rojo, Verde ó Azul, e irá cambiando su anchura cuando pulsemos con el cursor en la etiqueta superior y lo desplacemos. La superior lblColor1, a diferencia de las otras dos, será transparente, además de poseer un borde negro y mostrar un valor numérico, del 0 al 255, también en negro. El procedimiento será el siguiente, en un formulario colocamos una etiqueta con el texto Rojo, ocupando casi todo el ancho del mismo. Le ponemos como nombre lblRojo1 Seleccionamos la etiqueta, la copiamos y la pegamos dos veces. A estas dos nuevas etiquetas les ponemos como nombres lblRojo2 y lblRojo3. Estas dos últimas las hacemos más pequeñas y las ponemos cerca de la primera, pero por debajo de ella. Quedarán con un aspecto similar a éste.

Escuela de Tecnología de la Información

291

Microsoft Office Access 2016

Ahora seleccionamos la etiqueta lblRojo1 y pulsamos en la opción Traer al frente del grupo de comandos Tamaño y orden que se encuentra en la ficha Organizar. Repetimos la misma acción para la etiqueta lblRojo2 y lblRojo3. Propiedad Izquierda (Left) Nos permite especificar la distancia de la parte izquierda de un objeto a la parte izquierda del objeto que lo contiene. Se puede especificar, por ejemplo, la distancia de una etiqueta respecto del borde izquierdo de un formulario o de un informe. Es de Lectura y Escritura. Existe otra propiedad semejante: Propiedad Superior (Top) Nos permite especificar la distancia de la parte superior de un objeto al borde superior del objeto que lo contiene. Estas dos propiedades mencionadas son de tipo Long en los informes y de tipo integer en los formularios Propiedades Alto y Ancho (Height) y (Width) Height especifica la altura de un objeto Width especifica su anchura Vamos a utilizar estas propiedades para colocar y dimensionar correctamente las etiquetas. En el evento Al cargar del formulario escribimos:

292

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Abrimos el formulario y observamos que sólo nos muestra la palabra Rojo.

Pero esa es precisamente la demostración de que hemos conseguido una parte de lo que queríamos y es que las tres etiquetas están colocadas exactamente una encima de la otra. Ahora vamos a mostrar las etiquetas, para lo que modificaremos el código. En vez de ponerlo todo en el evento Al Cargar haremos que desde este evento llame al procedimiento FormateaEtiquetasque es el que hará todo el trabajo:

Ingresamos a generar código y escribimos

Grabamos con el nombre frmEtiquetas01.

Escuela de Tecnología de la Información

293

Microsoft Office Access 2016

El resultado de este código es éste:

294

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

En el código aparece la propiedad TextAlign Propiedad Alineación del texto (TextAlign) Con esta propiedad podemos definir la colocación del texto que aparece en un control 0

General

Texto a la izquierda, números y fechas a la derecha

1

Izquierda

Todos los datos a la izquierda

2

Centro

Centrado

3

Derecha

Alineación a la derecha

4

Distribuir

El contenido se reparte por la anchura del control. Ojo: No es lo mismo que la Justificación del texto de Word.

El valor pasado a la propiedad TextAlign ha sido 2, con lo que vemos el valor 50 centrado en la etiqueta. Antes de continuar vamos a dar formato al formulario. Primero ponemos la propiedad Estilo de los bordes al modo Cuadro de diálogo, desde su ventana Propiedades. A continuación, por código haremos las siguientes operaciones: 

Quitar la barra de desplazamiento que aparece en horizontal



Quitar el selector de registros



Quitar los botones de desplazamiento



Quitar el separador de registros

Para ello crearemos el procedimiento FormateaFormulario, que será llamado desde el evento Al Cargar. Para conseguirlo el código quedará así: Private Sub Form_Load() FormateaEtiquetas FormateaFormulario End Sub Private Sub FormateaFormulario() ScrollBars = 0 RecordSelectors = False NavigationButtons = False DividingLines = False End Sub

Escuela de Tecnología de la Información

' Sin barras de desplazamiento ' Sin selector de registros ' Sin Botones desplazamiento ' Sin Separador de registros

295

Microsoft Office Access 2016

Con estas modificaciones el formulario quedará así:

Vemos que el aspecto del formulario ha quedado mucho más limpio. Sabemos que se pudo haber editado a través de la ventana de propiedades, pero el objetivo básicamente dos cosas. 

Mostrar cómo se puede hacer por código



Demostrar el alto grado de control que podemos tener sobre el diseño del mismo

PROGRAMACION A.D.O ADO significa ActiveX Data Object (Objetos de datos Activex) define un conjunto de acciones dentro de su modelo para poder accede a los origenes de datos. Este modelo proporciona los medios necesarios para realizar dichas acciones mediante los métodos y propiedades de los objetos, y los eventos informan de si se van produciendo satisfactoriamente o no. Los pasos de esta secuencia son:

296



Conectarse a un Origen de Datos, empleando un objeto Connection. Si se desea realizar una transacción con otra base de datos externa a Access, se debe hacer en este punto.



Especificar un comando (objeto Command) para tener acceso al origen de datos, opcionalmente con parámetros variables (objeto Parameter ). Se puede usar una instrucción SQL se deberán indicar columnas, tablas y valores de la instrucción SQL como parámetros.



Ejecutar Comando



Si el comando hace que los datos se devuelvan en form de filas, almacenar las filas en un objeto Recordset que se pueda examinar, manipular o cambiar con facilidad.



Agregar, eliminar o cambiar filas y columnas que uno desee, y actualizar el origen de datos con los cambios de las filas de la memoria.



Como resultado de la conexión o de ejecutar un comando, se proporciona un medio general de detección de errores ( objeto Error )

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA



Por ultimo, se ha de finalizar la conexión. En caso de utilizar una transacción, se deberá confirmar o cancelar.

Este tipo de conexión sustituye a la antigua modelo de conexión llamado DAO, que solo permitia poder conectar solo base de datos relacionales, mas no a datos orientados a objetos.

Esquema básico de como funciona una conexión ADO

1.-Crear conexión, es necesario el objeto Connection

2.-Extraer información, es necesario el objeto Command

3.-Almacenar la información extraída, es necesario el objeto Recordset

La relación de base de datos que se puede conectar están     

Access Oracle MySQL Excel (no es base de datos relacionales) Páginas Web, etc

Instalacion de una Referencia a ADO Para poder trabajar con ADO y que esta reconozca es necesario agregarle unas librerías ya que están no vienen instaladas por defecto. El procedimiento será el siguiente

Escuela de Tecnología de la Información

297

Microsoft Office Access 2016

Abrir el editor de código de la base de datos Una vez que estamos en modo edición de código VBA, debe activarse la opción Herramientas – Referencias de la barra de menú superior. Cuando se pulsa esta opción, aparece una ventana que muestra todas las bibliotecas de software disponibles, ordenadas por orden alfabetico. La biblioteca deseada es “Microsoft ActiveX Data Objects 6.1 Library” y también debemos seleccionar “Microsoft ADO Ext. 6.0 for DLL and Security”. Para seleccionarla, basta con pulsar sobre el recuadro blanco situado a su izquierda.

Actividad 17: Conectando a datos con ADO Vamos a ejecutar un ejemplo con la propia base de datos actual. Para elloabrimos bdSenati, nuestra tabla de datos que vamos a utilizar como medio de conexión es Cursos:

298

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Procedemos a crear un módulo nuevo e independiente le ponemos de nombre DatosADO

Cuando ingreamos la primera línea de código, nos debe mostra la siguiente imagen

Esto significa que se ha actividad las librerías Ado. El código ingresado es el siguiente.

Escuela de Tecnología de la Información

299

Microsoft Office Access 2016

Procederemos a explicar, que significa cada línea de código, para poder entenderla Dim nuevaconexion As New ADODB.Connection  Crea una variable de utilizando el objeto Connection Set nuevaconexion = CurrentProject.Connection  CurrentProject.Connection, permite establer la conexión con la base de datos actual. Dim cadena As String  Declaramos una variable de tipo cadena de texto cadena = "SELECT * FROM Cursos"  Guardamos la variable declarada como texto, una instrucción SQL. Dim mirecordset As New ADODB.Recordset  Aca se crea el objeto recordset que es como si fuera una tabla virtual mirecordset.Open cadena, nuevaconexion  Aca se abre el recordset, donde utilizamos la conexión activa y además insertamos la instrucción SQL que fue declarada anteriormente. Do Until mirecordset.EOF  Con este código recorre el recordset hasta que llegue al final (EOF, significa End Of File- Final del archivo)

300

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Debug.Print mirecordset!curnombre  Imprime en la ventana inmediato el campo curnombre, de la tabla cursos. mirecordset.MoveNext  Avanza al siguiente registro, dentro del mismo recordset a cada vuelta del bucle. Loop  Termina el proceso repetitivo: Do Until --- Loop mirecordset.Close  Cierra el recordset Set mirecordset = Nothing  Libera la memoria de los recursor utilizados en el recordset nuevaconexion.Close  Cierra la conexión Set nuevaconexion = Nothing  Libera la memoria de los recursos utilizados

Cuando se trabaja con tablas existen variables de tipo booleano que son: BOF y EOF La diferencia entre estas es que BOF significa inicio del fichero o tabla y EOF el final del fichero o tabla. Por Ejemplo, si ingresamos el siguiente código: If tablita.BOF=True And tablita.EOF=True Then MsgBox ¨Tabla Vacia", End If Tambien observamos que se puede utilizar las siguientes líneas de comando como son: Movenext, moveprev, movelast y movefirst, estas opciones me van permitir poder navegar entre registros.

Escuela de Tecnología de la Información

301

Microsoft Office Access 2016

datos no duplicados en una tabla Una de las características que no se puede hacer con Ado es que por código VBA, puedes configurara que no se dupliquen datos al momento de ingresar a una tabla.

Actividad 18: Verificar que al guardar datos no se duplique en la bd Vamos crear una tabla con las siguientes características:

Creamos un formulario independiente, con las siguientes caracteristicas

Ingresamos datos a la BD, solamente dos registros

Vamos a proceder a crear el siguiente procedimiento y lo ejecutamos , vamos a observar como se repite en la ventana inmediato, el campo usuario

302

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Procedemos a cambiar el Procedimiento sub por una función, el cambio de código es de la siguiente manera Sub CompruebaUsuario

Function CompruebaUsuario(elusuario As String) As Boolean

If

End if

End Sub

End Function

He aquí el código yla modificación realizada, una vez creada la función, para poder probarla procedemos a crear, un pequeño procedimiento que lo llamamos prueba y ejecutamos comoel usuario ingresado es lbello, el mensaje sale verdadero.

Escuela de Tecnología de la Información

303

Microsoft Office Access 2016

Aca vemos la modificación del código en el procedimiento Prueba.

Como es el usuario, el que se desea no se modifique, ingresamos el siguiente código en el Formulario en el evento LostFocus de la caja de texto correspondiente al txtUsuario.

304

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

El código ingresado es el siguiente:

Abrimos el formulario en vista diseño: si el nombre que ingresamos a la caja de texto: txtUsuario es similar a de algunos de los usuarios qe ya están ingresados en la tabla, en el caso del ejemplo ( lbello y xponce) nos saldrá un mensaje y la caja de texto no poldrá salir de esta caja de texto hasta que ingresemos un campo Procedemos a ingresar información en las cajas de texto y observemos que pasa.:

Escuela de Tecnología de la Información

305

Microsoft Office Access 2016

Cuando le de clic al botón aceptar el foco quedara en la caja de etxto usuario, observemos

Esto quiere decir, mientras yo no modifique correctamente el campo respectivo no podre almacenar la información en la base de datos, específicamente en la tabal usuario.

Verificamos lo almacenado en la tabla.

306

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Preguntas de Repaso 1. Para que se muestre un mensaje de cuadro de dialogo sin solicitud de entrada de datos hay que solicitar a. InputBox b. MsgBox c. Debug.Print d. Print.Debug 2. Si deseo imprimir en la ventana inmediato cual es el comando a utilizar a. Debug.Print b. Print.Debug c. Print.InputBox d. Ninguna 3. De las siguientes constantes VBA, cual de ellas esta asociada al cuadro de dialogo a. vbUsesSystem b. vbDefaultButton c. vbOkOnly d. Debug.Print 4. Si desea que el código de un bucle se ejecute al menos una vez ¿Qué bucle elegiría? a. For-Next b. Do – Loop While c. Do While - Loop d. Ninguna 5. La instrucción If, en que casos se debe emplear a. En cualquier momento b. Cuando hay que tomar decisiones c. Solo cuando se repite las instrucciones d. Ninguna 6. ¿Para que se utiliza la instrucción Exit For? a. Salir de la aplicación b. Salir del proceso repetitivo c. Salir de la condicional d. Ninguna

Escuela de Tecnología de la Información

307

Microsoft Office Access 2016

7. ¿Los comandos como DoCMD también pueden usarse en otras aplicaciones de Office? a. Verdadero b. Falso 8. ¿La instrucción SQL, para mostrar registros es? a. Open b. Select c. Load d. Where 9. La propiedad RecordSource, permite especificar el origen de datos de: a. Formulario b. Informe c. Lista d. Ninguna 10. ¿Cuál es el mejor tipo de datos para representar datos con puntos decimales? a. Integer b. Single c. Boolean d. String 11. ¿Cómo se realiza la declaración de una constante pública Pi? a. Const Public Pi = 3.1415926 b. Public Const Pi = 3.1415926 c. Const Pi = 3.1415926 d. Ninguna 12. ¿Una variable puede ser de tipo:? a. Tabla b. Objeto c. Formulario d. Ninguna 13. El tipo de datos mas preciso es: a. Single b. Currency c. Double d. Integer

308

Escuela de Tecnología de la Información

Capítulo 5: Programación con VBA

Ejercicios Casos Practicos 01. Haz un procedimiento de nombre Programa1, que funcione de la siguiente forma: -

El programa nos pide que escribamos dos números positivos menores de 50.

-

El programa nos da como resultado el producto de los dos números.

-

Si los números no son positivos o son mayores de 50, el programa nos lo dice y salimos del programa.

-

El programa nos pregunta al final si queremos volver a empezar.

02. Escribe un procedimiento de nombre Programa2, que nos vaya pidiendo números. Si escribimos el número 4 o múltiplo de 4 se acaba; por último, el programa nos da como resultado el número de números introducidos, exceptuando el 4 o múltiplo de 4. 03. Escribe un procedimiento de nombre Programa3, que haga lo mismo que el anterior, pero además nos dé la suma de todos los números introducidos, exceptuando el 4 o múltiplo de 4 04. Escribe un procedimiento de nombre Programa4, que haga lo mismo que el anterior, pero además nos dé el producto de los números introducidos, exceptuando el 4 o múltiplo de 4. 05. Escribe un procedimiento de nombre Programa5, que escriba todos los múltiplos de 17 inferiores a 500 y por último nos suma de todos ellos. 06. Escribe un procedimiento de nombre Programa6, que sirva para calcular un cateto de un triángulo rectángulo a partir del otro cateto y la hipotenusa de la siguiente forma: -

El programa nos pide el valor de la hipotenusa

-

El programa nos pide el valor de un cateto.

-

Si el cateto es mayor que la hipotenusa, el programa nos da un mensaje de error y se acaba.

-

El programa nos da como resultado el valor del otro cateto y nos pregunta si queremos volver a empezar.

07. Escribe un procedimiento de nombre Programa7, que escriba los 25 primeros múltiplos de 3, su suma y su promedio. El programa ha de tener la posibilidad de volver a empezar. 08. Escribe un procedimiento de nombre Programa8, que sirva para calcular el perímetro de un triángulo o el perímetro de un rectángulo o el perimetro de un círculo. El programa ha de tener la posibilidad de volver a empezar. Utiliza la estructura “Case”. 09. Escribe un procedimiento de nombre Programa9, que “dibuje” un cuadrado con el carácter que introducimos por teclado, a partir del lado. 10. Escribe un procedimiento de nombre Programa10, que nos pida un número y dé como resultado la tabla de multiplicar del número introducido. 11. Escribe un procedimiento de nombre Programa11, que trabaje con funciones, de la siguiente manera: -

Calcular una suma (crea una “function” de nombre suma)

Escuela de Tecnología de la Información

309

Microsoft Office Access 2016

-

Calcular una división (crea una “function” de nombre divide)

-

Calcular una Multiplicación (crea una “function” de nombre multiplica).

12. Escribe un procedimiento de nombre Programa12, que nos pida dos sumandos y nos dé la suma de sus cuadrados y su diferencia (utiliza las funciones: SumaCuadrado y RestaCuadrado) 13. Escribe un procedimiento de nombre Programa13 que funcione de la siguiente forma: -

El programa nos pide 10 valores.

-

El programa calcula la media aritmética (function).

-

El programa calcula las desviaciones respecto a la media.

-

El programa calcula la desviación media (llamada a la función anterior).

-

El programa calcula la varianza (llamada a la función anterior).

-

Por último el programa calcula la desviación típica.

14. Escribe un procedimiento de nombre Programa14, que calcule los 25 primeros términos de la sucesión de término general: 2n+1 15. Un formulario con una etiqueta y dos botones. Cuando se pulsa uno de los botones aumenta el tamaño del texto. Cuando se pulse el otro botón disminuiría su tamaño. 16. Crear un formulario que llame a una base de datos que se llame usuario y que una vez ingresado los datos correctamente ingrese al formulario tipo panel de control.

310

Escuela de Tecnología de la Información