Manual 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 241

Tabla de Contenido

MEJORANDO LA PRESENTACIN Y VISUALIZACIN DE LOS DATOS CON FORMULARIOS ..................................................................................................................... 1 Conceptos previos2 ASISTENTE PARA FORMULARIOS Y AUTOFORMULARIOS ............................................................. 16 Actividad 1: Crear Formulario usando asistente............................................................... 19 PROPIEDADES DEL FORMULARIO ............................................................................................. 21 Propiedades de Formato................................................................................................. 21 Propiedades de Datos..................................................................................................... 22 Actividad 2: Formulario sin acceso a datos.................................................................... 25 AUTOFORMATO ................................................................................................................... 27 VISTAS: FORMULARIO, PRESENTACIN Y DISEO.................................................................... 28 EDITAR CONTROLES ............................................................................................................ 31 Seleccionar controles.................................................................................................... 32 Cambiar las dimensiones .............................................................................................. 34 Ajustar .......................................................................................................................... 34 Mover ........................................................................................................................... 34 Alinear .......................................................................................................................... 35 Eliminar controles ......................................................................................................... 35 Agregar controles.......................................................................................................... 35 Propiedades de los controles ........................................................................................ 42 Cuadros combinados .................................................................................................... 44 Actividad 3: Insertar una etiqueta .................................................................................. 53 Actividad 4: Editar los controles de un formulario .......................................................... 53 Actividad 5: Agregar etiquetas, cajas de texto y fichas................................................... 54 FORMULARIOS CONTINUOS ................................................................................................... 56 Actividad 6: Crear un formulario continuo ...................................................................... 56 Pie de formulario........................................................................................................... 56 Encabezado de formulario ............................................................................................ 58 Actividad 7: Cuadro combinado en el encabezado ........................................................ 58 SUBFORMULARIOS ............................................................................................................... 59 Actividad 8: Subformulario creado manualmente ........................................................... 60 Utilizar el asistente para Subformularios/Subinformes Campos vinculados entre formulario padre y formulario hijo .................................................................................. 61 Actividad 9: Subformulario empleando el asistente para formularios.............................. 64 Modificar el diseo del subformulario ............................................................................ 64 PREGUNTAS DE REPASO ...................................................................................................... 64 Actividad propuesta 1 ...................................................................................................... 65 EJERCICIOS CASOS PROPUESTOS......................................................................................... 65 Actividad propuesta 2 ...................................................................................................... 66 Actividades de investigacin............................................................................................. 67 UTILIDADES ........................................................................................................................ 69 FORMAS DE ABRIR UNA BASE DE DATOS ................................................................................. 70 SEGURIDAD ........................................................................................................................ 74 Cifrar una Base de Datos mediante contrasea............................................................. 77 Descifrar una base de datos.......................................................................................... 78 Quitar contrasea de una Base de Datos ...................................................................... 78 Uso del centro de confianza .......................................................................................... 79 COMPACTAR Y REPARAR UNA BD.......................................................................................... 80 CONVERTIR A OTRAS VERSIONES .......................................................................................... 82 Los formatos ACCDB y MDB ........................................................................................ 84 Convertir una base de datos al formato de archivos de Access 2007............................. 85 PREGUNTAS DE REPASO ...................................................................................................... 86

TRABAJANDO CON DATOS EXTERNOS ........................................................................... 87 IMPORTAR .......................................................................................................................... 89 Access.......................................................................................................................... 89 Excel ............................................................................................................................ 90 Lista de SharePoint....................................................................................................... 93 Archivo de texto ............................................................................................................ 96 Actividad 1 : Importar de un Archivo de Texto............................................................... 97 Archivo XML ................................................................................................................. 100 EXPORTAR ......................................................................................................................... 102 Excel ............................................................................................................................ 103 Un archivo RTF de Word............................................................................................... 107 Lista de SharePoint....................................................................................................... 107 Archivo de texto ............................................................................................................ 109 Archivo XML ................................................................................................................. 111 PREGUNTAS DE REPASO ...................................................................................................... 112 EJERCICIOS CASOS PROPUESTOS......................................................................................... 112 MACROS Y OPCIONES DE INICIO ...................................................................................... 113 BOTONES DE COMANDO EN FORMULARIOS ........................................................................... 114 El asistente para controles .......................................................................................... 114 MACROS .......................................................................................................................... 115 Asignar macros a controles en formularios .................................................................. 126 Macro Autoexec.......................................................................................................... 128 OPCIONES DE EXPLORACIN............................................................................................... 115 Crear Categoras ........................................................................................................ 130 Cambiar entre categoras............................................................................................ 136 Ordenar categoras ..................................................................................................... 137 Vistas ......................................................................................................................... 137 OPCIONES DE LA BASE DE DATOS ........................................................................................ 137 Formulario o pgina inicial .......................................................................................... 137 Agregar barra de mens personalizada. ...................................................................... 139 Actividad propuesta 1 .................................................................................................... 144 PREGUNTAS DE REPASO .................................................................................................... 144 EJERCICIOS CASOS PROPUESTOS....................................................................................... 144 PROGRAM ACIN CON VBA ............................................................................................. 145 USO DE VBA EN ACCESS ................................................................................................... 147 Actividad 1: Crear un Formulario ................................................................................. 148 Actividad 2: Uso de la ventana Inmediato .................................................................... 157 Actividad 3: Uso de Variables...................................................................................... 160 Actividad 4: Uso de Procedimientos y Funciones ........................................................ 163 Actividad 5: Funciones en Formularios ........................................................................ 168 Declaracion de Variables ............................................................................................ 173 Estructuras de Control. ............................................................................................... 183 Estructuras de Decisin. ............................................................................................. 183 Estructuras de Bucle. .................................................................................................. 188 Errores en Tiempo de Diseo...................................................................................... 201 Errores en Tiempo de Ejecucin ................................................................................. 202 Tipos de Operadores .................................................................................................. 203 EDITANDO EL CDIGO DE LAS MACROS DE ACCESS ............................................................... 214 Cdigo frente a macros............................................................................................... 214 Los modelos de objetos de Access ............................................................................. 216 USO DE CONTROLES ACTIVE X ............................................................................................ 223 Agregando controles en el Formulario ......................................................................... 223

Editando el cdigo de los controles ActiveX ................................................................ 226 Microsoft Data Access Objects (DAO) ......................................................................... 230 Microsoft Jet Replication Projects (JRO) ..................................................................... 232 Microsoft ActiveX Data Objects (ADO) ........................................................................ 233 PREGUNTAS DE REPASO .................................................................................................... 234 EJERCICIOS CASOS PRACTICOS .......................................................................................... 235

Captulo

Mejorando la presentacin y visualizacin de los datos con Formularios en ACCESS


En este captulo trataremos:
Crear formularios. Utilizar el asistente de formularios. Modificar las propiedades de los formularios Agregar campos a un formulario y modificar sus propiedades

SENATI-Computacin e Informtica

Conceptos Previos:
Una base de datos es un gran almacn de datos que nos permite guardar grandes volmenes de informacin de forma organizada para que luego podamos ubicar y utilizar estos datos de forma fcil y eficiente. Una base de datos o banco de datos (Database en Ingles) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayora por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y desde el punto de vista informtico la base de datos es un sistema formado por un conjunto de datos almacenados en discos (formato digital) que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.

Descripcin y visualizacin general de elementos de las Bases de Datos de Access


Archivos de base de datos de Access

los

mltiples

Puede utilizar Access para administrar todos sus datos en un solo archivo. Dentro de un archivo de base de datos de Access, puede utilizar: Tablas para almacenar los datos. Consultas para buscar y recuperar exactamente los datos que desee. Formularios para ver, agregar y actualizar datos en las tablas. Informes para analizar o imprimir los datos con un diseo especfico.

SENATI-Computacin e Informtica

Todos estos elementos: tablas, consultas, formularios e informes son objetos de bases de datos (objetos de base de datos: una base de datos de Access contiene objetos como tablas, consultas, formularios, informes, macros y mdulos. Un proyecto de Access contiene objetos como formularios, informes, macros y mdulos.). Nota: Algunas bases de datos de Access contienen vnculos a tablas que estn almacenadas en otras bases de datos. Por ejemplo, puede tener una base de datos de Access que no contenga nada ms que tablas y otra base de datos de Access que contenga vnculos a esas tablas, as como consultas, formularios e informes basados en las tablas vinculadas. En la mayora de los casos, no tiene importancia si se trata de una tabla vinculada o si est realmente almacenada en la base de datos.

Tablas
Una tabla es una coleccin de datos sobre un tema especfico, como alumnos, profesores, vehculos, distritos, productos o proveedores. La utilizacin de una tabla diferente para cada tema, significa que se almacenan los datos una sola vez, lo cual aumenta la eficacia de la base de datos, y reduce errores de entrada de datos. No debe almacenar informacin de dos temas diferentes en la misma tabla. Imagine que usted administra una cadena de tiendas que posee cinco locales de venta y desea modificar el precio de un producto. Si los datos estn centralizados usted slo tendr que cambiar el precio una vez y ese cambio se ver reflejado en todos los establecimientos. De lo contrario tendr que ir de tienda en tienda haciendo las modificaciones. Las tablas organizan datos en columnas (denominadas campos) y filas (denominadas registros). Tal como se muestra a continuacin. Campo Componente de una tabla que contiene un elemento especfico de informacin, como por ejemplo un apellido. Un campo se representa como una columna.

SENATI-Computacin e Informtica

Registro Es una coleccin de informacin acerca de cualquier entidad, ya sea persona, producto, proveedor, o cualquier otra cosa. Cada registro en una tabla contiene el mismo conjunto de campos. Se puede afirmar que un registro se confirma de campos. Un error muy frecuente es guardar el nombre del vendedor, el nombre del cliente, la direccin del cliente y los productos que llev en la misma tabla. Debe utilizarse diferentes tablas para guardar la informacin de los vendedores, clientes, y productos. Luego se guardarn los cdigos que identifican de forma nica a cada vendedor y cliente en la tabla facturas, nunca sus nombres. Luego se relacionarn las tablas para obtener la informacin necesitada. Respecto a los productos, estos deben guardarse en otra tabla de detalles de facturacin, junto con las cantidades pedidas y los precios a la fecha de la compra.

SENATI-Computacin e Informtica

Consultas
Una consulta puede ayudarle a recuperar los datos que cumplen las condiciones que especifique, incluidos los datos de varias tablas. Tambin puede utilizar una consulta para actualizar o eliminar varios registros a la vez y realizar clculos predefinidos o personalizados con los datos.

SENATI-Computacin e Informtica

Formularios
Se puede utilizar un formulario para ver, introducir o cambiar los datos de filas de una en una fcilmente. Tambin se puede utilizar un formulario para realizar otras acciones, como enviar datos a otra aplicacin. Los formularios contienen normalmente controles que estn vinculados a campos subyacentes de las tablas. Al abrir un formulario, Access recupera los datos de una o ms tablas y los muestra en el diseo que haya elegido al crear el formulario. Puede crear un formulario mediante uno de los comandos Formulario de la cinta de opciones, el Asistente para formularios, o crear su propio formulario en la vista Diseo.

SENATI-Computacin e Informtica

I Informes
Los informes se pueden utilizar para analizar rpidamente los datos o presentarlos de una forma concreta, impresos o en otros formatos. Por ejemplo, puede enviar a un colega un informe que clasifique los datos y calcule los totales. O puede crear un informe con los datos de la direccin en un formato para imprimir etiquetas postales.

Macro
Puede crear una macro (macro: accin o conjunto de acciones utilizados para automatizar tareas.) para realizar un conjunto especfico de acciones (accin: componente bsico de una macro; instruccin independiente que se puede combinar con otras acciones para automatizar tareas. A veces se denomina comando en otros lenguajes de macros.), y puede crear un grupo de macros (grupo de macros: coleccin de macros relacionadas que se almacenan juntas bajo un nico nombre de macro. A menudo, se hace referencia a la coleccin simplemente como una macro.) Para realizar conjuntos de acciones relacionadas.

SENATI-Computacin e Informtica

En Microsoft Office Access 2007, las macros pueden estar incluidas en objetos de macro (que a veces reciben el nombre de macros independientes) o incrustadas en las propiedades de evento de formularios, informes o controles. Las macros incrustadas forman parte del objeto o control en el que estn incrustadas. Los objetos de macro se pueden ver en el panel de exploracin, bajo Macros, pero no ocurre lo mismo con las macros incrustadas.

Ejemplo del diseo de una macro.

Mdulos
Un mdulo es una coleccin de declaraciones y procedimientos de Visual Basic para aplicaciones que se almacenan juntos en un objeto denominado mdulo. Se requiere conocimientos de programacin en Visual Basic.

SENATI-Computacin e Informtica

C r Crear una base de datos en blanco 1. En la pgina Introduccin a Microsoft Office Access, en Nueva base de datos en blanco, haga clic en Base de datos en blanco. 2. En el panel Base de datos en blanco, escriba un nombre de archivo en el cuadro Nombre de archivo. Si no especifica una extensin de nombre de archivo, Access la agrega automticamente. Para cambiar la ubicacin predeterminada del archivo, haga clic en Buscar una ubicacin donde colocar la base de datos (situado junto al cuadro Nombre de archivo), busque la nueva ubicacin y, a continuacin, haga clic en Aceptar.

3. Haga clic en Crear. Access crea la base de datos con una tabla vaca denominada Tabla1 y, a continuacin, abre Tabla1 en la vista Hoja de datos. El cursor se sita en la primera celda vaca de la columna Agregar nuevo campo. 4. Comience a escribir para agregar datos o puede pegar datos de otro origen.

Escribir informacin en la vista Hoja de datos es muy similar a trabajar en una hoja de clculo de Microsoft Office Excel 2007. La estructura de la tabla se crea conforme se

SENATI-Computacin e Informtica

escriben los datos: cuando se agrega una nueva columna a la tabla, se define un nuevo campo. Access define automticamente el tipo de datos de cada campo en funcin de los datos que escribe. Si, de momento, no desea incluir informacin en Tabla1, haga clic en Cerrar . Si realiz cambios en la tabla, Access le pedir que guarde los cambios efectuados en la tabla. Haga clic en S para guardar los cambios, haga clic en No para descartarlos o haga clic en Cancelar para dejar la tabla abierta. Importante Si cierra Tabla1 sin guardar los cambios al menos una vez, Access elimina toda la tabla, aunque haya escrito datos en ella.

Crear tablas en la Vista Diseo de la tabla


Desde esta opcin podremos definir todos los campos de la tabla detalladamente con todas sus caractersticas. Esta opcin le da ms control al usuario sobre la tabla que define y, por tanto, la opcin que vamos a utilizar en este captulo para crear las tablas de nuestras bases de datos.

De nuestro anterior ejemplo hacer Clic Derecho sobre la ficha Tabla1 y pulse sobre Cerrar Todo y luego no guarde los cambios. Luego ir a la ficha Crear, grupo Tablas y hacer Clic sobre el comando Diseo de tabla. Luego MS Access despliega la siguiente interface:

10

SENATI-Computacin e Informtica

C Creacin de Campos
Los elementos de informacin de los que se desea realizar un seguimiento se almacenan en campos (denominados tambin columnas). Por ejemplo, en una tabla Contactos podra crear campos para el apellido, el nombre, el nmero de telfono y la direccin, entre otros. Para una tabla Productos, podra crear campos para el nombre del producto, el identificador de producto y el precio. Es importante elegir los campos con cuidado. Por ejemplo, no es recomendable crear un campo para almacenar un campo calculado; es mejor dejar que Office Access 2007 calcule el valor cuando sea necesario. Cuando elija los campos, intente almacenar la informacin en sus partes ms pequeas posibles. Por ejemplo, en lugar de almace nar un nombre completo, es preferible almacenar el apellido y el nombre por separado. Por regla general, si necesita realizar informes, ordenar o realizar bsquedas o clculos con un elemento de informacin, ponga ese elemento en una columna independiente. Un campo tiene determinadas caractersticas que lo definen. Por ejemplo, cada campo tiene un nombre que lo identifica inequvocamente dentro de la tabla. Tambin tiene un tipo de datos en consonancia con la informacin que almacena. El tipo de datos determina los valores que se pueden almacenar y las operaciones que se pueden realizar, as como la cantidad de espacio de almacenamiento provista para cada valor. Cada campo tiene tambin un grupo de opciones denominadas propiedades que definen las caractersticas formales o funcionales del campo. Por ejemplo, la propiedad Formato define el formato de presentacin del campo, es decir, qu apariencia tendr cuando se muestre.

Condicin para las relaciones


Uno de los objetivos de un buen diseo de base de datos es eliminar la redundancia de los datos (datos duplicados). Para lograr dicho objetivo, conviene desglosar los datos en muchas tablas basadas en temas para que cada hecho est representado slo una vez. A continuacin, se debe proporcionar a MS Access los medios para recopilar de nuevo la informacin desglosada (esto se realiza colocando campos comunes en tablas que estn relacionadas). Sin embargo, para realizar este paso correctamente, primero deber comprender las relaciones existentes entre las tablas y, a continuacin, especificar dichas relaciones en la base de datos de MS Access. Tras crear una tabla para cada tema en la base de datos, es preciso proporcionar a MS Access los medios para recopilar de nuevo esa informacin cuando sea necesario. Para ello, se colocan campos comunes en las tablas que estn relacionadas y se definen las relaciones entre las tablas. De ese modo, se pueden crear consultas, formularios e informes que muestren a la vez la informacin de varias tablas. Por ejemplo, el formulario que se muestra a continuacin incluye informacin recopilada de varias tablas:

SENATI-Computacin e Informtica

11

1. Tabla Clientes 2. Tabla Vendedor 3. Tabla Pedidos 4. Tabla Productos 5. Tabla Detalles del Pedido El nombre de cliente del cuadro Facturar a se obtiene de la tabla Clientes, los datos del vendedor de la tabla Empleados, los valores de Id. de pedido y Fecha de pedido proceden de la tabla Pedidos, el nombre de producto viene de la tabla Productos, y los valores Precio por unidad y Cantidad proceden de la tabla Detalles del pedido. Estas tablas se vinculan entre s de varias formas para recopilar informacin de cada una e incorporarla al formulario. Imagine que tiene una tabla de productos y otra de pedidos. En una base de datos correctamente estructurada, la primera tabla contendr toda la informacin concerniente a los productos (descripciones, medidas y todas las especificaciones que desee) mientras que en la segunda se representar a los productos solamente por medio de un identificador. No es necesario que incluya ms informacin pues si usted puede distinguir cul es el producto entonces podr consultar todos sus detalles en la primera tabla. En el ejemplo anterior las tablas Producto y Pedido estarn relacionadas a travs del identificador del producto. En la primera tabla esta columna ser la clave principal y en la segunda ser considerada una clave fornea. Es una buena costumbre emplear un mismo prefijo para todos los campos de una tabla sin embargo las claves forneas no deberan seguir esta regla. Por ejemplo, dos de los campos de la tabla Producto pueden ser IdProducto y DetalleProducto mientras que los campos de la tabla Pedido podran ser IdPedido, FechaDeEntrega, IdProducto y CantidadPedida.
12 SENATI-Computacin e Informtica

O t Otra alternativa correcta sera colocar IdPedido, FechaDeEntrega, IdPedidoProducto, CantidadPedida. Esto para evitar duplicar el nombre los nombres de campo en la base de datos, de tal manera que si se hace referencia al cdigo de producto en la tabla Producto se utilice IdProducto y para hacer referencia al cdigo del producto en la tabla Pedido se utilice IdPedidoProducto. En realidad debe tratar de buscar un mismo criterio y aplicarlo a travs de todas las tablas. En los ejemplos subsiguientes se utilizar la primera sugerencia (IdPedido, FechaDeEntrega, IdProducto y CantidadPedida)

A la tabla que contiene a la clave principal se le llama tabla principal y a la que contiene la clave fornea se le denomina tabla secundaria. Otras consideraciones para crear relaciones: 1. Debe haber un campo comn en ambas tablas 2. Uno de las campos comunes debe ser clave principal, no olvide que un campo clave principal no puede ser: Un campo de bsqueda de Objeto OLE, Memo, Datos Adjuntos o Varios valores. 3. Los campos comunes podran tener o no el mismo nombre de campo, pero no pueden diferir en el tipo de dato.

Crear relaciones
Se puede crear una relacin de tabla mediante la ventana Relaciones o arrastrando un campo en una hoja de datos desde el panel Lista de campos. Cuando se crea una relacin entre tablas, los campos comunes no tienen que tener los mismos nombres, si bien sus nombres suelen coincidir. Sin embargo, dichos campos tienen que tener el mismo tipo de datos.

SENATI-Computacin e Informtica

13

No obstante, si el campo de clave principal es un campo Autonumrico, el campo de clave externa puede ser un campo de tipo Nmero si la propiedad Tamao del campo de ambos campos tiene el mismo valor. Por ejemplo, puede hacer coincidir un campo Autonumrico y un campo de tipo Nmero si la propiedad Tamao del campo de ambos campos es Entero largo. Cuando ambos campos comunes son campos de tipo Nmero, tienen que tener el mismo valor para la propiedad Tamao del campo.

Crear una relacin de tabla mediante la ventana Relaciones


Para nuestro ejemplo trabajaremos con la base de datos Control de Pedidos de la carpeta capitulo 3, si es que no estaba activa, abrir la base de datos, luego: 1. En el grupo Mostrar u ocultar de la ficha Herramientas de base de datos, haga Clic en Relaciones. Si an no ha definido ninguna relacin, aparecer automticamente el cuadro de dilogo Mostrar tabla. Si no aparece, en la ficha Diseo, en el grupo Relaciones, haga clic en Mostrar tabla. En el cuadro de dilogo Mostrar tabla se muestran todas las tablas y consultas de la base de datos. Para ver nicamente las tablas, haga clic en Tablas. Para ver nicamente las consultas, haga clic en Consultas. Para ver las tablas y las consultas, haga clic en Ambas.

2.

3. Luego de seleccionar las tablas y aceptar se muestra la ventana relaciones con las listas de campos de las tablas seleccionadas 4. Al mostrarse las tablas en la ventana Relaciones, usted ver que en cada una de ellas la clave principal se muestra en negrita y el icono de una llave al costado. 5. Cree la relacin arrastrando la clave principal de la tabla Principal hasta la clave fornea de la tabla secundaria o viceversa. Por ejemplo, en la ilustracin anterior, se puede arrastrar el campo IdCliente de la tabla Cliente hasta el campo IdCLiente de la tabla Pedido.

14

SENATI-Computacin e Informtica

6. Despus de haber efectuado el arrastre se mostrar el cuadro de dilogo:

7. Active la exigencia de integridad referencial y hacer Clic en el botn Crear.

8. El grfico anterior muestra la relacin de uno a varios entre las tablas Cliente y Pedido. 9. Contine con las dems relaciones de tal modo que obtengamos un resultado como se muestra en la siguiente grafica:

SENATI-Computacin e Informtica

15

Asistente para Formularios y Autoformularios


Los formularios constituyen la interfaz ms comn entre el usuario y los datos contenidos en las tablas. A travs de ellos se puede presentar los datos en forma jerrquica atendiendo a las relaciones que existen entre las tablas. Tambin pueden incluirse controles que muestren imgenes propias de cada registro e incluso es posible crear formularios que no muestren registros pero que permitan navegar ent re los distintos objetos que posea la base de datos Uno de los caminos ms cortos para crear formularios es emplear el asistente para formularios. Para hacer uso de l ejecute el siguiente procedimiento:
1. Haga clic en la ficha Crear , en la Cinta Formularios, Opcin Mas Formularios y elegir Asistente para Formularios.

2. Al iniciar el asistente, seleccione la tabla o consulta desde la que sern tomados los datos. Si los datos que necesita ver en el formulario se encuentran en dos o ms tablas, puede crear primero una consulta que las relacione y despus crear el formulario.

16

SENATI-Computacin e Informtica

Formularios 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. Tambin puede seleccionar un campo y luego emplear el botn >. Si desea seleccionar todos los campos, haga uso del botn >>. Para deseleccionar campos haga doble clic en los elementos de la lista derecha o emplee los botones < o <<.

4. Haga clic en el botn Siguiente cuando termine. 5. Escoja la distribucin que tendrn los campos en el formulario y haga clic en el botn Siguiente.

SENATI-Computacin e Informtica

17

6. Indique cul ser el estilo que desea emplear. El estilo afectar el aspecto de los objetos as como la combinacin de colores. Haga clic en el botn Siguiente.

7. D el nombre al formulario y finalice la accin con el asistente.

En el Asistente para formularios es posible seleccionar ms de una tabla o consulta. Procediendo de esta forma se puede crear de modo automtico una consulta (invisible para el usuario) entre las tablas o consultas que haya seleccionado. A fin de hacer esta accin, Access vincula dichos objetos empleando las definiciones establecidas en la ventana de relaciones; si usted no haba relacionado las tablas o consultas que seleccion como origen de datos, Access no podr ejecutar la accin.

18

SENATI-Computacin e Informtica

Formularios

Actividad 1: Crear Formulario usando asistente


En la base de datos PersForm , usted crear un formulario que muestre los datos de la tabla Empleados de modo que se muestre como se aprecia en la siguiente ilustracin:

Formulario Empleados Procedimiento 1. Haga clic en la ficha Crear , en la Cinta Formularios, Opcin Mas Formularios y elegir Asistente para Formularios. 2. En el primer paso del asistente seleccione la tabla Empleados y luego haga clic en el botn > a fin de indicar que todos los campos de la tabla sean mostrados en el formulario tal como se muestra en la siguiente imagen:

SENATI-Computacin e Informtica

19

Microsoft Office

3. Haga clic en el botn Siguiente. 4. Al mostrarse la lista de distribuciones haga clic en el botn de opcin En columnas y luego active el botn Siguiente .

Distribucin del formulario

5. Haga clic en el estilo Access 2007 y luego active el botn Siguiente .

Seleccin del estilo

6. Se le sugiere Empleados como ttulo del formulario; djelo as y haga clic en el botn Finalizar. 7. Cierre el formulario.

20

SENATI-Computacin e Informtica

Formularios

Propiedades del formulario


Propiedades de Formato

f g

SENATI-Computacin e Informtica

21

Microsoft Office

a. Ttulo: El ttulo que ser mostrado en la barra de ttulo del formulario. Aunque el nombre del formulario suele ser igual a esta propiedad, es posible que estos dos valores sean distintos (el nombre del formulario se puede modificar en la ventana de objetos de la base de datos) b. Vista predeterminada: Los formularios, as como las vistas, tienen mltiples vistas; entre ellas estn: Un nico formulario, Formularios continuos y la vista Hoja de datos. Usted puede definir cul de ellas ser la que se emplee cuando se abra el formulario c. Barras de desplazamiento: Es posible establecer si mostrada la barra de deslazamiento horizontal o vertical cuando el tamao de la ventana del formulario sea ms pequeo que el definido para l. d. Selector de registro: El selector de registros es un control propio del formulario que permite seleccionar uno de los registros de los formularios. Es principalmente til cuando se muestran mltiples registros al mismo tiempo. e. Botones de desplazamiento: Estos controles permiten desplazarse a travs de los registros tal como se hace en la vista Hoja de datos. f. Imagen: A travs de esta propiedad se puede especificar una imagen par a que se presente en el fondo del formulario. g. Tipo de imagen: Usted puede indicar que la imagen est incrustada o vinculada al formulario. En el primer caso la imagen se aade al archivo de la base de datos. En el segundo, se mantendr como un archivo independiente.

Propiedades de Datos
Para definir propiedades de un formulario realice las siguientes acciones:
Botn Hoja de Propiedades

1. Abra el formulario en vista diseo. Puede hacer clic derecho sobre l y activar el comando Vista diseo.

22

SENATI-Computacin e Informtica

Formularios

2. Haga clic en la ficha Diseo, Cinta de opciones Herramientas y luego Hoja de Propiedades.

Al presentrsele la Hoja de propiedades, despliegue el primer cuadro combinado y seleccione Formulario. Las propiedades estn organizadas en fichas a fin de facilitar su ubicacin

SENATI-Computacin e Informtica

23

Microsoft Office

b c c

a. Origen de registros Es la tabla o consulta desde la cual se extraen los datos para ser mostrados en el formulario. Esta propiedad puede ser modificada empleando el Generador de Expresiones Personalizar con el generador de expresiones

b. Permitir Agregar Indica si el formulario permitir al usuario aadir registros. c. Permitir Editar Indica si el formulario permitir al usuario actualizar registros. d. Permitir Eliminar Indica si el formulario permitir al usuario eliminar registros.

24

SENATI-Computacin e Informtica

Formularios

Actividad 2: Formulario sin acceso a datos


En la base de datos PersForm crear un formulario como el que se muestra a continuacin:

Procedimiento 1. Hacer clic en la ficha Crear, luego la cinta Formularios, luego Formulario en Blanco.

2. Luego haga click en la Vista Diseo

3. Active la Hoja de propiedades y defina las siguientes propiedades en ella:


SENATI-Computacin e Informtica 25

Microsoft Office

Propiedad Ttulo Vista predeterminada Permitir vista Formulario Barras de desplazamiento Selectores de registros Botones de desplazamiento Selectores de registro Botones de desplazamiento Separadores de registro Botones Maximizar y Minimizar Botn Cerrar Imagen

Valor Bienvenido Un nico formulario S Ninguna No No No No No Ninguno S Logo_Senati

Para establecer la imagen haga clic en la propiedad que tiene este nombre, ver un botn que muestra tres puntos y luego haga doble clic sobre el archivo que se le ha indicado. 4. Cierre la ventana de propiedades y guarde el formulario con el nombre Bienvenido
26 SENATI-Computacin e Informtica

Formularios

Como tarea adicional busque la propiedad que permite cambiar la ubicacin de la imagen y la que establece que ella pueda ocupar toda el rea del formulario.

Autoformato
Usted puede modificar el aspecto general del formulario de una manera muy rpida empleando el siguiente mtodo: 1. Muestre el formulario en vista diseo. 2. Haga clic en la ficha Organizar Cinta Autoformato y luego en el comando Autoformato .

3. Haga clic en el estilo que desee y luego pulse el botn Aceptar.

Algunos autoformatos

SENATI-Computacin e Informtica

27

Microsoft Office

4. Tambin puede usar el Asistente para Autoformato

Vistas: Formulario, Presentacin y Diseo


Para ver las Vistas de un Formulario, tenemos dos opciones: 1. Hacemos clic con el Botn Derecho del Mouse sobre el Formulario y elegimos la Vista

2. Hacemos doble clic sobre el Formulario, y luego la Ficha Inicio, Cinta Vistas y elegimos la que deseamos

28

SENATI-Computacin e Informtica

Formularios

Vista Presentacin. La vista Presentacin es una vista ms orientada a lo visual que la vista Diseo. Mientras visualiza un formulario en una vista Presentacin, cada control muestra datos reales. En consecuencia, es una vista muy til para ajustar el tamao de los controles o realizar muchas otras tareas que afectan al aspecto visual y al uso del formulario. Hay algunas tareas que no se pueden realizar en la vista Presentacin y que requieren pasar a la vista Diseo. En algunos casos, Access muestra un mensaje que indica que hay que cambiar a la vista Diseo para llevar a cabo un cambio determinado .

Modificar un formulario en la vista Presentacin Una vez creado el formulario, puede ajustar fcilmente su diseo en la vista Presentacin. Usando los datos reales del formulario como punto de referencia, puede reorganizar los controles y ajustar su tamao. Pueden colocar controles nuevos en el formulario y configurar las propiedades del formulario y de sus controles. Para cambiar a la vista Presentacin, haga clic con el botn secundario en el nombre del formulario en el panel de navegacin y, a continuacin, haga clic en Vista Presentacin. Access muestra el formulario en la vista Presentacin. Puede usar la hoja de propiedades para modificar las propiedades del formulario, sus controles y secciones. Para mostrar la hoja de propiedades, presione F4. Puede usar el panel Lista de campos para agregar campos de la tabla o consulta subyacente al formulario. Para mostrar el panel Lista de campos, use uno de los siguientes mtodos: En el grupo Controles de la ficha Formato, haga clic en Agregar campos existentes. Presione ALT+F8. A continuacin, podr arrastrar directamente los campos desde el panel Lista de campos hasta el formulario. Para agregar un solo campo, haga doble clic en l o arrstrelo desde el panel Lista de campos hasta la seccin del formulario donde desee que se muestre. Para agregar varios campos a la vez, mantenga presionada la tecla CTRL y haga clic en los campos que desee agregar. A continuacin, arrastre los campos seleccionados hasta el formulario.

SENATI-Computacin e Informtica

29

Microsoft Office

Vista Diseo. La vista Diseo ofrece una vista ms detallada de la estructura del informe. Se pueden ver las secciones Encabezado, Detalle y Pie de pgina de un formulario. No se pueden ver los datos subyacentes mientras se estn haciendo cambios en el diseo. No obstante, hay ciertas tareas que puede realizar ms fcilmente en la vista Diseo que en la vista Presentacin. Puede realizar las acciones siguientes: Agregar una mayor variedad de controles al formulario, como etiquetas, imgenes, lneas y rectngulos. Editar orgenes de control de cuadro de texto en los mismos cuadros de texto sin usar la hoja de propiedades. Cambiar el tamao de las secciones de los formularios, como por ejemplo la seccin Encabezado del formulario o la seccin Detalle. Cambiar algunas propiedades del formulario que no se pueden cambiar en la vista Presentacin (como Vista predeterminada o Permitir vista Formulario).

Modificar un formulario en la vista Diseo El diseo de un formulario tambin se puede ajustar en la vista Diseo. Se pueden agregar nuevos controles y campos al formulario agregndolos a la cuadrcula de diseo. La hoja de propiedades incluye un gran nmero de propiedades que se pueden configurar para personalizar el formulario. Para cambiar a la vista Diseo, haga clic con el botn secundario en el nombre del formulario en el panel de navegacin y, a continuacin, haga clic en Vista Diseo.

30

SENATI-Computacin e Informtica

Formularios

Access muestra el formulario en la vista Diseo. Puede usar la hoja de propiedades para modificar las propiedades del formulario, sus controles y secciones. Para mostrar la hoja de propiedades, presione F4. Puede usar el panel Lista de campos para agregar campos de la tabla o consulta subyacente al diseo del formulario. Para mostrar el panel Lista de campos, use uno de los mtodos siguientes: En el grupo Herramientas de la ficha Diseo, haga clic en Agregar campos existentes. Presione ALT+F8. A continuacin, podr arrastrar directamente los campos desde el panel Lista de campos al formulario. Para agregar un solo campo, haga doble clic en l o arrstrelo desde el panel Lista de campos hasta la seccin del formulario donde desee que se muestre. Para agregar varios campos a la vez, mantenga presionada la tecla CTRL y haga clic en los campos que desee agregar. A continuacin, arrastre los campos seleccionados hasta el formulario.

Editar controles
Usted puede cambiar la presentacin de los controles de los formularios. Tambin puede aadir nuevos objetos y eliminar los existentes

SENATI-Computacin e Informtica

31

Microsoft Office

Tipos de controles Usted puede encontrar los siguientes controles en un formulario: Etiquetas Cuadros de texto Cuadros combinados Botones de comando Grupos de botones de opcin Grupos de botones alternar Casillas de verificacin Imgenes Controles de ficha Subformularios Los controles ms utilizados son los primeros. En la siguiente imagen usted puede apreciar la vista diseo de un formulario y en ella se le indicar cules son las cajas de texto (T), etiquetas (E) y cuadros combinados (C).

Vista diseo de un formulario

Seleccionar controles
Para seleccionar un control, haga clic sobre l. Para seleccionar mltiples controles puede realizar cualquiera de las siguientes acciones: Coloque el puntero fuera de uno de ellos y arrastre hasta formar un rectngulo que abarque, aunque sea parcialmente, a todos los controles que desea seleccionar.

32

SENATI-Computacin e Informtica

Formularios

Haga clic en la regla horizontal de modo que el puntero se tome el aspecto de una flecha apuntando hacia abajo. Despus de hacer clic todos los controles bajo la flecha quedarn seleccionados; si adems desea seleccionar controles que no se encuentran bajo la primera posicin del puntero puede arrastrar la fecha horizontalmente.

De forma anloga, puede seleccionarse mltiples controles colocando el puntero sobre la regla vertical del lado izquierdo del formulario.

SENATI-Computacin e Informtica

33

Microsoft Office

Cambiar las dimensiones


Para modificar el tamao de un control: 1. Active la vista diseo del formulario. 2. Haga clic sobre el control deseado y coloque el puntero del mouse sobre cualquiera de los controladores ubicados en sus esquinas y en la mitad de cada uno de sus lados. El puntero del mouse adquirir la forma de una doble flecha indicando que es posible cambiar el tamao del objeto. 3. Arrastre para cambiar el tamao.

Ilustracin: Cambiar el tamao desde la esquina inferior derecha

Ajustar
Para cambiar el tamao de mltiples controles simultneamente: 1. Active la vista diseo. 2. Seleccione los controles cuyos tamaos de sea cambiar. 3. Ejecute alguna de las siguientes acciones: Arrastre cualquiera de los controladores de tamao de uno de los controles; el resto de los objetos cambiar su tamao en la misma forma el que usted eligi. Haga clic en la Ficha Organizar, cinta Tamao y haga clic en alguno de los siguientes botones: - Ajustar al ms ancho - Ajustar al ms estrecho - Ajustar al ms corto - Ajustar al ms alto

Mover
Para mover un control: 1. Active la vista diseo del formulario. 2. Haga clic sobre el control deseado y coloque el puntero del mouse sobre cualquiera de sus bordes (ver el puntero en forma de cruz con un puntero).
34 SENATI-Computacin e Informtica

Formularios

3. Arrastre para cambiar la posicin.

Alinear
Usted puede alinear mltiples controles. Para ello: 1. Active la vista diseo del formulario. 2. Seleccione los controles que desee alinear. 3. Haga clic en la Ficha Organizar, cinta Alineacin de Controles y haga clic en alguno de los siguientes comandos: Izquierda Derecha Arriba Abajo

Eliminar controles
Usted puede alinear mltiples controles. Para ello: 1. Active la vista diseo del formulario. 2. Seleccione los controles que desee eliminar. 3. Presione la tecla suprimir del teclado

Agregar controles
Usted puede aadir controles a un formulario a travs de tres caminos: a. Desde la lista de campos - Muestre el formulario en vista diseo. - Haga visible la lista de campos. Para esto lleve a cabo alguna de los siguientes acciones: - Haga clic en el men Ver y luego active el comando Lista de campos. - Haga clic en el botn Lista de campos de la barra de herramientas Diseo de formulario . - Arrastre el campo desde la ventana con la lista de campos hasta el formulario.
SENATI-Computacin e Informtica 35

Microsoft Office

b. Si desea emplear el cuadro de herramientas: - Muestre el formulario en vista diseo. - Ubquese en la Ficha Diseo, Cinta Controles. Para esto lleve a cabo alguna de los siguientes acciones: - Haga clic en el botn que representa al tipo de control deseado y haga clic en la posicin del formulario donde desea colocar el objeto. - Establezca las propiedades necesarias para el control.

c. Si desea emplear un asistente para controles: - Muestre el formulario en vista diseo. - Asegrese de que el botn Asistente para controles de la Cinta Controles se encuentre activado.

36

SENATI-Computacin e Informtica

Formularios

- Haga clic en el botn que representa al tipo de control deseado y arrastre el puntero en el formulario sobre la posicin en la que desea colocar el objeto. - Siga los pasos del asistente.

Controles a usar
Botn de opcin Los botones de opcin son empleados cuando en un campo hay un nmero pequeo de valores permitidos y hay suficiente espacio en el formulario para dejar visible al usuario todas las posibilidades. Algunos campos en los que se puede emplear este tipo de controles son: 1. El campo Sexo en una tabla de datos personales. 2. El campo Categora cuando hay suficiente espacio disponible en un formulario. Para insertar botones de opcin realice lo siguiente: 1. Verifique que el formulario est asociado a un origen de datos 2. Active el botn Asistente para controles .
Asistente para controles

3. En la ficha Diseo, Cinta Controles, haga clic en el botn Grupo de opciones y luego haga clic en el formulario. Aparecer el asistente. 4. Escriba el texto que debe ir en cada opcin y pulse Siguiente.

Grupo de opciones

5. Si lo desea, escoja una opcin predeterminada y haga clic en Siguiente. 6. Asocie un valor numrico a cada opcin; cuando se seleccione una opcin el grupo tomar el valor de la opcin elegida. 7. En la siguiente ventana, el cuadro de dilogo le permitir vincular el valor del grupo con uno de los campos numricos del origen de datos. Por ejemplo, el campo zona puede tener cuatro valores posibles: 1, 2, 3, y 4; el grupo de opciones podra tener las descripciones de estos valores del siguiente modo: 1 Norte, 2-Sur, 3-Este y 4-Oeste. 8. Indique el tipo de controles que desea emplear y avance a la siguiente ventana. 9. Escriba un ttulo para el grupo y haga clic en Finalizar.

Cuadro de texto Los cuadros de texto se usan para mostrar informacin provenientes de la base de datos y para ingresar los datos en ella.

SENATI-Computacin e Informtica

37

Microsoft Office

Despus de insertar un cuadro de texto a partir del cuadro de herramientas, usted ver el control con la palabra Independiente en su interior. A fin de enlazar el control con el origen de datos del formulario: 1. Verifique que el formulario est asociado a un origen de datos; para esto: a. Haga visible la ventana de propiedades y despliegue el cuadro combinado para que sean mostradas las propiedades del formulario. b. Active la ficha Datos y verifique que la propiedad Origen del registro contiene algn valor (puede ser una tabla, una consulta o una expresin SQL). Si no hay ningn valor definido en esta propiedad puede crearlo haciendo uso del generador de consultas que se encuentra a la derecha. c. La imagen Origen del registro de la pgina 24 muestra que el formulario tomado de ejemplo tiene como fuente la tabla Pedido. En esta ilustracin el generador de consultas es el botn que posee tres puntos y que se ve seleccionado con el puntero del mouse.

Origen del registro d. Cierre la ventana de propiedades. 2. Haga clic derecho en el interior del cuadro de texto del formulario y luego active el comando Propiedades. 3. Active la ficha Datos. 4. Para el enlace: a. Haga clic en la propiedad Origen de datos

38

SENATI-Computacin e Informtica

Formularios

b. Si el cuadro contendr el valor de un campo tal como se encuentra en la base de datos, despliegue la lista y seleccione el campo que desea utilizar. c. Si el cuadro calcular un valor a partir de uno o ms campos, haga clic en el botn del generador de expresiones que se encuentra a la derecha del campo y escriba la frmula a emplear. El generador de expresiones es un botn con tres puntos en su superficie, semejante al generador de consultas que se encuentra a la derecha de la propiedad Origen de datos.

Generador de expresiones La ilustracin anterior muestra al Generador de expresiones con la frmula que calcula la edad de un trabajador a partir de su fecha de nacimiento. 5. Cierre la ventana de propiedades.

Etiqueta Las etiquetas tienen como fin presentar un texto al usuario de modo que le sea ms fcil entender el propsito del formulario y sus dems controles. Despus de insertar una etiqueta a partir del cuadro de herramientas, se le presentar un rectngulo con el punto de insercin parpadeando de tal forma que usted pueda escribir el texto que contendr.

Casilla de verificacin Las casillas de verificacin se emplean para presentar datos que pueden tener solamente dos valores que se expresan en trminos de S o No, o Activado y Desactivado. Los siguientes ejemplos pueden ayudarlo a familiarizarse con casos de uso tpico de estos controles: 1. El campo Importado para el catlogo de productos de una empresa. 2. El campo Sindicalizado para una tabla de datos personales. Algunas personas emplean casillas de verificacin para el campo Sexo, proceder de esta manera indicara Sexo: S o Sexo: No; sera mucho

SENATI-Computacin e Informtica

39

Microsoft Office

mejor emplear botones de opcin o cuadros combinados para este tipo de campos. Despus de insertar una casilla de verificacin a partir del cuadro de herramientas, usted ver el control con la expresin VerificacinX donde X es un nmero que representa el orden de aparicin del control en el formulario.

A fin de enlazar el control con el origen de datos: 1. Verifique que el formulario est asociado a un origen de datos. 2. Haga clic derecho sobre el visto bueno de la izquierda y active el comando Propiedades. 3. Active la ficha Datos. 4. Modifique la propiedad Origen del control para indicar cul es el campo vinculado. 5. Cierre la ventana 6. Haga clic derecho sobre la etiqueta VerificacinX y active el comando Propiedades. 7. Active la ficha Formato. 8. Modifique la propiedad Ttulo para indicar cul debe ser el texto que se muestre.

Fichas Las fichas permiten agrupar los controles de acuerdo a alguna caracterstica que tengan en comn; son empleadas comnmente cuando se cuenta con una gran cantidad de controles y se desea mostrarlos por etapas. Para utilizar estos controles: 1. Muestre el formulario en vista diseo. 2. En el cuadro de herramientas, haga clic sobre el control Ficha y luego haga clic sobre el formulario. 3. Seleccione el control y emplee los controladores de tamao de modo que ocupe el rea que usted desee. 4. Modifique la propiedad Ttulo de cada ficha para que muestren el texto deseado. A fin de realizar esta accin: a. Haga clic derecho sobre la primera pestaa del control y luego haga clic sobre el comando Propiedades.

40

SENATI-Computacin e Informtica

Formularios

b. En la ficha Formato, busque la primera propiedad y cambie el ttulo. c. Repita estas acciones con las dems fichas. Para colocar controles en las fichas puede emplear dos mtodos: a. Utilizar controles que ya existen en el formulario. i. Corte los controles que desea colocar en la ficha. ii. Seleccione la ficha y pegue (CTRL+V) iii. Desplace los controles dentro de la ficha para ubicarlos en el lugar exacto que desee. b. Crear controles desde el cuadro de herramientas. i. Seleccione la ficha. ii. Haga clic en el control deseado dentro del cuadro de herramientas. iii. Haga clic dentro de la ficha. iv. Personalice el tamao y posicin del control dentro de la ficha.

Dos selecciones distintas

Cambiar el ttulo de una ficha

SENATI-Computacin e Informtica

41

Propiedades de los controles


Usted puede modificar el aspecto y comportamiento de los controles individualmente a travs de sus propiedades. Entre aquellas que modifican la apariencia se encuentran las propiedades de la fuente (nombre, tamao, estilo, alineacin y color); estn, tambin el color de fondo, el grosor y color de los bordes y el efecto e special. La forma ms fcil de configurar estas propiedades es la siguiente: 1. Seleccione el control al que desea cambiar una determinada propiedad. Puede hacer una seleccin mltiple si desea hacer cambios en mltiples controles. 2. Haga clic en la opcin correspondiente a la propiedad en la Hoja de Propiedades.

a. Orden de tabulacin Cuando se agrega y mueve controles se debe tener cuidado en el orden en el cual usted se podr desplazar por el formulario empleando la tecla TAB. Para configurar la secuencia en que los controles obtienen el enfoque usted puede hacer clic derecho sobre cualquiera de ellos y activar el comando Orden de tabulacin.

42

SENATI-Computacin e Informtica

Formularios

b. Color de fondo

c. Efecto especial

d. Color de bordes

e. Formato

SENATI-Computacin e Informtica

43

Microsoft Office

Cuadros combinados
Los cuadros combinados se emplean para que el usuario elija un valor dentro de un conjunto de posibilidades. Se prefiere este tipo de controles frente a los botones de opcin cuando el espacio en el formulario es reducido o cuando se espera que el conjunto de valores disponibles cambie. La forma ms sencilla de insertar cuadros combinados en la vista diseo de un formulario existente es emplear el asistente para cuadros combinados tal como se detalla a continuacin:
Cuadro combinado

1. Verifique que el formulario est asociado a un origen de datos tal como se detalla en el primer paso de Insertar cuadros de texto 2. Active el asistente para controles y guese por sus instrucciones.
Usando el asistente para controles Usando una tabla o consulta

Una tabla o consulta: Escoja esta opcin si desea colocar en el cuadro combinado valores que se encuentran en alguna tabla de la base de datos. Esta sera una buena opcin, por ejemplo, si desea mostrar distritos en lugar de cdigos postales. Haga clic en Siguiente: i. Indique cul desea emplear. ii. En el siguiente paso, seleccione los campos que desea emplear. Recuerde que lo ms recomendable es seleccionar dos columnas: una para los cdigos (que sern los que se almacenen) y otra para las descripciones (que sern las que se muestren). iii. Luego, indique la forma en la que se ordenarn los registros. iv. En la siguiente ventana, indique el ancho de las columnas (se recomienda ocultar la columna de los cdigos)
Escribiendo la lista

Una lista de valores que usted mismo escribir en el asistente. Esta es la opcin que debe seleccionarse si los valores no se encuentran en ninguna tabla de la base de datos. Por ejemplo: es comn tener un campo Sexo en los datos del personal de las empresas; el valor almacenado en las tablas suele ser M o F aludiendo a Masculino y Femenino pero estas palabras nunca estn almacenadas en ninguna tabla. Haga Clic en Siguiente i. Indique el nmero de columnas que va a emplear (normalmente son dos) y, en la cuadrcula, escriba los valores. Se recomienda que oculte la columna que contenga los cdigos.
44 SENATI-Computacin e Informtica

Formularios

ii. En la siguiente ventana, indique cul de las columnas es la que contiene los valores que deben ser almacenados en la base de datos (normalmente es la columna de los cdigos). iii. Avance a la siguiente pantalla del asistente e indique qu campo del formulario debe almacenar el valor asociado al cuadro combinado. iv. Finalmente, d una etiqueta para el cuadro combinado.

Bsqueda de registros.

Se puede crear un cuadro combinado agregando un campo de bsqueda a un formulario. 1. Cree un campo de bsqueda en una tabla. Este campo puede ser un campo multivalor o un campo que contiene un solo valor. Siga uno de estos procedimientos: Cree un nuevo formulario basado en un origen de registros que incluya el campo de bsqueda. Por ejemplo, en el panel de exploracin, seleccione una tabla o consulta que contenga el campo de bsqueda y, a continuacin, en la ficha Crear, en el grupo Formularios, haga clic en Formulario. Access crea automticamente un cuadro combinado para el campo de bsqueda. Agregue un cuadro de lista o un cuadro combinado a un formulario: - En la vista Diseo, abra un formulario que est basado en un origen de registros que incluya el campo de bsqueda. - Si no se muestra el panel Lista de campos, presione ALT+F8 para que se muestre. - Haga doble clic en el campo de bsqueda, o bien, arrastre el campo de bsqueda desde el panel Lista de campos hasta el formulario. Access crea automticamente un cuadro combinado enlazado al campo.
Generacin automtica mediante el uso del asistente de bsquedas en el diseo de las tablas

Una columna (o campo) de bsqueda es un campo de una tabla cuyo valor se obtiene de otra tabla o de una lista de valores. Puede usar una columna de bsqueda para mostrar una lista de opciones en un cuadro combinado o un cuadro de lista. Las opciones pueden proceder de una tabla o consulta, o pueden ser valores especificados. Puede crear una columna de bsqueda manualmente, configurando las propiedades de
SENATI-Computacin e Informtica 45

Microsoft Office

campo de bsqueda de un campo, o automticamente, completando el Asistente para bsquedas. Siempre que sea posible, debe usar el Asistente para bsquedas para crear una columna de bsqueda. El Asistente para bsquedas simplifica el proceso y rellena automticamente las propiedades del campo apropiadas y crea las relaciones de tabla apropiadas.

Puede crear una columna de bsqueda en la vista Hoja de datos o en la vista Diseo.

Crear una columna de bsqueda en la vista Hoja de datos De forma predeterminada, al abrir una tabla, si abre en la vista Hoja de datos. Puede agregar una columna de bsqueda haciendo clic en Columna de bsqueda en el grupo Campos y columnas en la ficha Hoja de datos. Haciendo esto se abre el Asistente para bsquedas, que le gua en el proceso de creacin de la columna de bsqueda.

1. Haga clic en el Botn Microsoft Office Abrir.

y, a continuacin, haga clic en

2. En el cuadro de dilogo Abrir , seleccione y abra la base de datos. 3. En el panel de exploracin, haga doble clic en la tabla en la que desee crear la columna de bsqueda, esto abrir la tabla en la vista Hoja de datos. 4. En la ficha Hoja de datos, en el grupo Campos y columnas, haga clic en Columna de bsqueda.

Se iniciar el Asistente para bsquedas.

46

SENATI-Computacin e Informtica

Formularios

5. En la primera pgina del Asistente para bsquedas, indique si desea basar la columna de bsqueda en los valores de una tabla o una consulta, o en una lista de valores que escriba. El tipo de columna de bsqueda ms habitual es el que muestra los valores buscados de una tabla o consulta relacionada. 6. Haga clic en Siguiente y, a continuacin, siga las instrucciones para completar el asistente. Para obtener ms informacin sobre cmo completar el asistente, vea la seccin Uso del Asistente para bsquedas. Al hacer clic en Finalizar, se crea una columna de bsqueda cuyas propiedades de campo se basan en las elecciones realizadas en el Asistente para bsquedas.

Crear una columna de bsqueda mediante el panel Lista de campos Si usa una base de datos que contiene ms de una tabla, puede iniciar el proceso de creacin de un campo de bsqueda arrastrando un campo del panel Lista de campos. El panel Lista de campos muestra los campos disponibles en otras tablas de la base de datos. Al crear una columna de bsqueda de este modo, el Asistente para bsquedas se inicia automticamente y el campo que arrastra a la hoja de datos se convierte en uno de los campos de la columna de bsqueda. 1. Haga clic en el Botn Microsoft Office Abrir. y, a continuacin, haga clic en

2. En el cuadro de dilogo Abrir , seleccione y abra la base de datos. 3. En el panel de exploracin, haga doble clic en la tabla en la que desee crear la columna de bsqueda , esto abrir la tabla en la vista Hoja de datos. 4. En la ficha Hoja de datos, en el grupo Campos y columnas, haga clic en Agregar campos existentes.

SENATI-Computacin e Informtica

47

Microsoft Office

Aparecer el panel Lista de campos. 5. Haga clic en el signo ms ( +) situado junto a la tabla para mostrar la lista de campos de esa tabla. 6. Arrastre el campo que desee del panel Lista de campos a la tabla en la vista Hoja de datos. 7. Cuando aparezca la lnea de insercin, coloque el campo en su posicin.

Se iniciar el Asistente para bsquedas. 8. Siga las instrucciones para completar el asistente. Para obtener ms informacin sobre cmo completar el asistente, vea la seccin Uso del Asistente para bsquedas. Una vez completado el asistente, aparecer la columna de bsqueda en la tabla en la vista Hoja de datos.

Crear una columna de bsqueda en la vista Diseo Puede crear una columna de bsqueda en la vista Diseo, adems de en la vista Hoja de datos. Cuando trabaja en la vista Diseo, puede crear una columna de bsqueda usando el mismo Asistente para bsquedas que usa en la vista Hoja de datos. Sin embargo, en la vista Diseo, tambin tiene acceso pleno a toas las propiedades del campo: Como resultado, puede editarlas directamente. 1. Haga clic en el Botn Microsoft Office Abrir. y, a continuacin, haga clic en

2. En el cuadro de dilogo Abrir , seleccione y abra la base de datos. 3. En el panel de exploracin, haga clic con el botn secundario en la tabla en la que desee agregar la columna de bsqueda y, a continuacin, haga clic en Vista Diseo en el men contextual. 4. Busque la primera fila vaca disponible en la cuadrcula de diseo de la tabla. 5. En la primera fila vaca disponible, haga clic en una celda de la columna Nombre de campo, y escriba el nombre de campo de la columna de bsqueda. 6. A continuacin, haga clic en una celda de la columna Tipo de datos de dicha fila, haga clic en la flecha desplegable y seleccione Asistente para bsquedas. Se iniciar el Asistente para bsquedas.

48

SENATI-Computacin e Informtica

Formularios

7. En la primera pgina del Asistente para bsquedas, indique si desea basar la columna de bsqueda en los valores de una tabla o una consulta, o en una lista de valores que escriba. El tipo de columna de bsqueda ms habitual es el que muestra los valores buscados de una tabla o consulta relacionada. 8. Haga clic en Siguiente y, a continuacin, siga las instrucciones para completar el asistente. Para obtener ms informacin sobre cmo completar el asistente, vea la seccin Uso del Asistente para bsquedas. Al hacer clic en Finalizar, se crea una columna de bsqueda cuyas propiedades de campo se basan en las elecciones realizadas en el Asistente para bsquedas. Puede ver las propiedades de campo en el panel inferior de la vista Diseo, bajo Propiedades del campo. Para ver las propiedades que se aplican especficamente a la columna de bsqueda, haga clic en la ficha Bsqueda

Usar el Asistente para bsquedas El Asistente para bsquedas se inicia en los siguientes casos: al crear una columna de bsqueda en la vista Hoja de datos, al arrastrar un campo desde el panel Lista de campos hasta una tabla que se abre en la vista Hoja de datos y, en la vista Diseo, al seleccionar Asistente para bsquedas en la columna Tipo de datos. El asistente le gua en los pasos necesarios para crear una columna de bsqueda y establece automticamente las propiedades de campo apropiadas de acuerdo con sus elecciones. El asistente tambin crea relaciones de tabla e ndices, cuando es necesario, para asistir a la columna de bsqueda. Cuando se inicia el Asistente para bsquedas, deber decidir si desea basar la columna de bsqueda en una tabla o consulta, o en una lista de valores especificados. La mayora de las veces, si la base de datos est diseada correctamente y la informacin se divide en tablas basadas en temas, deber elegir una tabla o consulta c omo el origen de los datos para la columna de bsqueda.

SENATI-Computacin e Informtica

49

Microsoft Office

Columna de bsqueda basada en una tabla o consulta Si eligi la opcin Deseo que la columna de bsqueda busque los valores en una tabla o consulta, cuando haga clic en Siguiente, el Asistente para bsquedas mostrar una lista de tablas que proporcionan los valores para la columna de bsqueda. Para ver nicamente las tablas, haga clic en Tablas. Para ver nicamente las consultas, haga clic en Consultas. Para ver ambas, haga clic en Ambas. Si eligi una tabla o consulta, haga clic en Siguiente.

El Asistente para bsquedas enumera los campos disponibles de la tabla o consulta. Para cada campo que desee incluir en la columna de bsqueda, haga clic en el campo y, a continuacin, en el botn mayor que ( >) para moverlo a la lista Campos seleccionados. Observe que debe seleccionar los campos que desee dejar visibles adems del campo que desea que suministre el valor que se almacena al realizar una seleccin en la columna de bsqueda. Cuando termine, haga clic en Siguiente.

50

SENATI-Computacin e Informtica

Formularios

El Asistente para bsquedas muestra una pgina que permite especificar un campo o campos que puede usar para ordenar la columna de bsqueda. Esta ordenacin es opcional. Cuando termine, haga clic en Siguiente.

Puede ajustar el ancho de las columnas que aparecern en la columna de bsqueda. Si reduce el ancho de un campo para que ya no est visible, no aparecer en la columna de bsqueda. Por ejemplo, puede usar esta funcin para impedir que se muestre una columna de Id. Cuando termine, haga clic en Siguiente.

SENATI-Computacin e Informtica

51

Al seleccionar una fila de la columna de bsqueda, puede almacenar un valor de dicha fila en la base de datos o usar el valor posteriormente para realizar una accin. Esta pgina del asistente, que se muestra en la siguiente figura, permite elegir el campo que suministra dicho valor. Debe elegir un campo que identifique de forma exclusiva la fila. Normalmente, el campo de clave principal de la tabla de origen resulta una buena eleccin. Cuando termine, haga clic en Siguiente.

En la pgina final del Asistente para bsquedas, debe escribir un nombre para la columna de bsqueda; ste se convertir en el nombre del campo de la tabla.

Si desea permitir la seleccin de ms de un valor cuando aparece la columna de bsqueda y, a continuacin, almacenar varios valores, active la casilla de verificacin Permitir varios valores. Observe que activar esta casilla de verificacin cambia la columna de bsqueda por un campo multivalor.

52

SENATI-Computacin e Informtica

Formularios

Actividad 3: Insertar una etiqueta


En la base de datos PersForm modificar el formulario Bienvenida para que se muestre como la siguiente ilustracin:

Procedimiento 1. Abra el formulario en vista diseo.


Etiqueta

2. En el cuadro de herramientas, haga clic en el icono etiqueta y luego haga clic en el formulario. 3. Escriba Comercial DOUP y luego haga clic fuera del control pero dentro del formulario. 4. Puede seleccionar la etiqueta y modificar su fuente, tamao y dems caractersticas. 5. Muestre la vista formulario, guarde y cierre.

Actividad 4: Editar los controles de un formulario


En la base de datos PersForm, usted crear un formulario con la tabla Trabajador empleando el asistente para formularios y lo modificar que se vea como se muestra en la siguiente ilustracin:

Aspecto final del formulario Procedimiento

SENATI-Computacin e Informtica

53

Microsoft Office

1. Emplee el asistente para formularios a fin de crear uno que tome los campos de la tabla indicada que se muestran en la imagen. 2. Cuando el asistente le muestre el objeto terminado, cambie a la vista diseo y seleccione los cuatro primeros campos; haga clic en el men Formato, despliegue el submen Tamao y active el comando Ajustar al ms estrecho . 3. Repita la operacin anterior con los campos Cargo y Direccin. 4. Active la vista formulario, guarde el formulario con el nombre predeterminado y cirrelo.

Actividad 5: Agregar etiquetas, cajas de texto y fichas


En la base de datos PersForm, usted modificar el formulario creado en la actividad anterior de modo que contenga un control de fichas tal como indica la siguiente ilustracin:

Formulario con fichas Procedimiento 1. Active la vista diseo. 2. Aumente ligeramente el tamao de la seccin detalle del formulario arrastrando sus bordes tal como se indica en la imagen:

Cambiar el ancho y alto del formulario


54 SENATI-Computacin e Informtica

Formularios

3. Para colocar el control de fichas: a. Active el formulario Edicin y haga clic sobre el comando Seleccionar todo. b. Efecte la accin Cortar mediante la combinacin de teclas Ctrl+X o cualquier otro mtodo disponible.
Control ficha

c. Haga clic en el botn Control ficha del cuadro de controles. d. Haga clic en la seccin Detalle del formulario. e. Haga clic en la primera lengeta del control ficha. Con esta accin usted indica que los objetos que colocar en el formulario debern pertenecer a esta pgina. f. Efecte la accin Pegar mediante la combinacin de teclas Ctrl+V o cualquier otro mtodo disponible. g. Redimensione el control ficha para que sea apropiado para las etiquetas y cajas de texto que ha colocado en l.

h. Haga doble clic sobre la primera lengeta del control. En la propiedad Ttulo (primera ficha de la pgina de propiedades), escriba Datos bsicos. i. Mueva la ventana de propiedades para que no obstaculice la visin del formulario. Sin cerrar esta ventana, haga clic en la segunda lengeta del control ficha y escriba Datos adicionales en la propiedad Ttulo.

4. Para los controles de la segunda ficha: a. Haga clic en la segunda lengeta del control ficha del formulario. b. Muestre la lista de campos del formulario haciendo clic en el men Ver y luego en el comando Lista de campos. c. Arrastre el campo traFechaNac dentro de la ficha.
Cuadro de texto

d. En el cuadro de herramientas, haga clic en el botn Cuadro de texto y luego haga clic dentro de la ficha, debajo del campo que acaba de crear. e. Cambie la propiedad Ttulo de la etiqueta, para que en ella se lea Edad. f. Cambie la propiedad Origen del control ubicada en la segunda ficha de la ventana de propiedades-a se lea:

SENATI-Computacin e Informtica

55

Microsoft Office

=Ent((ahora()-traFechaNac)/365) g. Repita los pasos del c al f para la fecha de contratacin y el tiempo de servicio. h. Active la vista formulario, guarde el formulario con el nombre predeterminado y cirrelo.

Formularios continuos
Los formularios continuos permiten que sean vistos los detalles de ms de un registro simultneamente, tal como se aprecia en la siguiente ilustracin:

Formulario continuo para los productos Aunque la forma ms sencilla de presentar un formulario en modo de formulario continuo es a travs del asistente para formularios (en la distribucin simplemente se selecciona la que est identificada como Tabular), tambin puede activar esta vista desde la propiedad Vista predeterminada que se encuentra en la ficha Formato.

Actividad 6: Crear un formulario continuo


En la base de datos Persform, usted crear el formulario de la ilustracin anterior. Procedimiento 1. Cree el formulario empleando el asistente. a. Haga clic en el enlace Crear un formulario utilizando el asistente en la seccin Formularios de la ventana de la base de datos. b. Primer paso: tabla y campos de origen del formulario. Indique al asistente que emplear la tabla Producto y, en ella, los campos proNombre, medID, proPrecio y catId c. Segundo paso: Seleccione la distribucin Tabular. d. Tercer paso: Elija el estilo Estndar (ms adelante puede emplear el autoformato para cambiarlo por cualquier otro)
56 SENATI-Computacin e Informtica

Formularios

e. Cuarto paso: Indique que el ttulo del formulario ser Mltiples productos. 2. Modifique el diseo para que se muestre como el grfico. a. Active la vista diseo. b. Para la seccin detalle: i. Cambie el ancho de las cajas de texto y cambie su posicin

c. Para la seccin del encabezado: i.


Ampliar el pie

Modifique las etiquetas. Algunas necesitan que cambie su texto, otras su alineacin, otras su posicin y todas que las coloque en negrita.

d. Para la seccin del pie: i. Ample la seccin arrastrando el puntero desde la parte inferior de la banda.

ii. Haga clic en el botn Cuadro de texto del cuadro de herramientas y luego haga clic en la seccin Pie del formulario . iii. Modifique el texto de la etiqueta para que diga Productos mostrados. iv. Cambie la propiedad Origen de datos del cuadro de texto que acaba de crear para que sea: =Cuenta(proId) v. Cambie el formato del cuadro de texto de para que la alineacin sea izquierda, la propiedad Estilo de fondo sea Transparente, la propiedad Efecto especial sea Sin relieve y el Estilo de los bordes sea Transparente. 3. Cambie las propiedades del formulario a. Establezca la propiedad Barras de desplazamiento al valor Slo vertical b. La propiedad Botones de desplazamiento debe estar configurada en No. 4. Muestre la vista formulario, gurdelo con el nombre que se le sugiere (Mltiples productos) y cirrelo.

Pie de formulario
Los formularios presentan comnmente tres secciones: encabezado, detalle y pie. Usted puede mostrar y ocultar la primera y la tercera seccin a travs del comando Encabezado o Pie del formulario . Es comn emplear estas secciones para colocar controles de bsqueda; en el siguiente formulario el cuadro combinado se emplea para buscar el producto cuyos detalles sern mostrados.

SENATI-Computacin e Informtica

57

Microsoft Office

Formulario con cuadro combinado de bsqueda Es importante que usted comprenda completamente la diferencia entre los el cuadro combinado del encabezado y los dos de la seccin de detalles: el primero permite buscar un registro para mostrar o modificar sus detalles, los otros dos ayudan al usuario a elegir la unidad de medida del producto y su categora.

Encabezado de formulario Actividad 7: Cuadro combinado en el encabezado


En la base de datos Persform, usted crear el formulario de la ilustracin Formulario con cuadro combinado de bsqueda .
Botn Tablas

Procedimiento 1. Para crear el formulario: a. Active el botn Tablas de la ventana de la base de datos. b. Haga clic sobre la tabla Producto y luego haga clic en el botn Autoformulario.
Ampliar el encabezado

2. Para crear el encabezado del formulario: a. Active la vista diseo y haga visible el encabezado y pie del formulario utilizando para ello el men Ver. b. Ample la seccin Encabezado del formulario arrastrando la banda Detalle hacia abajo. 3. Para colocar el cuadro combinado en el encabezado: a. Asegrese de que el asistente para controles est activado y luego haga clic sobre el botn Cuadro combinado .

58

SENATI-Computacin e Informtica

Formularios

b. Haga clic sobre el encabezado. En este momento el asistente debe haber empezado a guiarlo por el proceso de configuracin del control: Indique que desea que desea buscar un registro en el formulario segn el valor que seleccione en el cuadro y pulse Siguiente. Haga doble clic sobre el campo proNombre para indicar que ese campo es el que emplear como origen del control y pulse Siguiente. Usted ver la lista de los nombres de productos que contiene la tabla. Haga clic en el botn Siguiente. Escriba Seleccione un producto como etiqueta del cuadro combinado y haga clic en Finalizar

Subformularios
Los subformularios son formularios dentro de otros formularios y son empleados comnmente para mostrar registros de tablas que tienen alguna relacin con el origen de datos del formulario; por ejemplo, puede mostrarse los pedidos que se han hecho sobre el producto que se est mostrando en el formulario de productos, o los recibos que corresponden al cliente que se est viendo en el formulario de los clientes. La siguiente vista muestra un formulario que presenta en el formulario padre a las categoras y, como un subformulario, a los productos que pertenecen a aquella categora que se muestra actualmente.

Formulario y subformulario Para crear un subformulario: 1. Muestre el formulario en vista diseo.


SENATI-Computacin e Informtica 59

Microsoft Office

Si es necesario, cambie la propiedad Vista predeterminada del formulario al valor Un nico formulario (no es posible colocar un subformulario en formularios continuos) 2. Si es necesario, modifique el tamao de la seccin Detalle de modo que quepa el subformulario que crear. 3. Asegrese de que el Asistente para controles est activado en el cuadro de controles.
Subformulario /Subinforme

4. Haga clic en el botn Subformulario/Subinforme 5. Haga clic en la seccin Detalle, el Asistente para Subformularios se iniciar. a. Indique si emplear una tabla como origen del subformulario o un formulario que se pueda tomar como tal y haga clic en el botn Siguiente. b. Si decidi emplear una tabla o consulta deber seleccionar cul es e indicar qu campos utilizar; haga clic en el botn Siguiente. Deber existir un campo del formulario padre que tenga valores relacionados con un campo del formulario hijo. c. El siguiente paso es de vital importancia para el proceso: usted deber indicar la relacin que existe entre el formulario padre y el formulario hijo. Como se mencion previamente, debe haber un campo del formulario padre que tenga valores relacionados con un campo del formulario hijo. d. Escriba el nombre del subformulario y haga clic en el botn Finalizar.

Informacin Cuando se crea un subformulario a partir de una tabla o consulta se genera un adicional formulario nuevo.

No cambie el nombre de un subformulario despus de haberlo colocado en un formulario padre pues, si lo hace, este formulario no funcionar apropiadamente.

Actividad 8: Subformulario creado manualmente


Objetivo En la base de datos Persform, usted crear el subformulario que se muestra en la imagen Formulario y subformulario . Procedimiento 1. Preparacin del formulario padre: a. Empleando el enlace Crear un formulario utilizando el asistente de la ventana de la base de datos, cree un formulario que presente el Id de la categora, su nombre y descripcin. b. Muestre la vista diseo para colocar en negrita las etiquetas y ampliar la seccin Detalle. 2. Para colocar el subformulario:

60

SENATI-Computacin e Informtica

Formularios

a. Asegrese de que el Asistente para controles est activado en el cuadro de controles.


Subformulario /Subinforme

b. Haga clic en el botn Subformulario/Subinforme c. Haga clic en la seccin Detalle, el Asistente para Subformularios se iniciar. d. Indique que emplear el formulario Mltiples productos como origen del subformulario y haga clic en el botn Siguiente. e. Para definir la relacin entre el formulario padre y el hijo: Haga clic en el botn de opcin Definir la ma propia . En los primeros cuadros combinados (de la izquierda y derecha) elija el elemento catId Haga clic en el botn Siguiente.

f. Escriba el nombre del subformulario y haga clic en el botn Finalizar.

Utilizar el asistente para Subformularios/Subinformes Campos vinculados entre formulario padre y formulario hijo
Emplear el asistente para formularios con dos tablas o consultas puede llevarlo a crear: Un formulario convencional que tenga como origen de datos una instruccin interna (alojada en la propiedad Origen del registro del formulario) que toma campos de ambas tablas. Por ejemplo, tomando el caso de la tabla Categora y la tabla Producto, usted puede obtener el siguiente formulario:

Formulario que muestra solamente un registro a la vez

SENATI-Computacin e Informtica

61

Microsoft Office

Un formulario que llama a otro (a travs de un botn de comando) para mostrar los detalles de los registros relacionados.

Formulario que llama a otro Un formulario que contenga un subformulario.

Formulario con subformulario La presentacin final que tengan los formularios depende de las indicaciones que se den en el segundo paso del asistente, de acuerdo con las siguientes indicaciones: Para obtener un formulario convencional elija que desea crear el formulario a partir de la tabla hija en la relacin (en el ejemplo presentado la tabla hija es Producto)

62

SENATI-Computacin e Informtica

Formularios

Seleccin para un formulario convencional Para crear un formulario que llame a otro indique que el formulario se crear a partir de la tabla madre de la relacin y que desea obtener formularios vinculados.

Seleccin para crear formularios vinculados Para crear un formulario con un subformulario active el botn Formulario con subformulario despus de indicar que desea ver los datos a travs de la tabla madre.

Seleccin para crear un formulario con un subformulario


SENATI-Computacin e Informtica 63

Microsoft Office

Actividad 9: Subformulario empleando el asistente para formularios


En la base de datos Persform, usted crear el formulario que se muestra en la ilustracin Formulario con subformulario . Procedimiento 1. Inicie el asistente para formularios haciendo clic en el enlace Crear un formulario utilizando el asistente . 2. En el primer paso, seleccione los campos catId, catNombre y catDescrip de la tabla Categora y los campos proNombre, medId y proPrecio de la tabla Producto. 3. En el segundo paso, indique que desea ver los datos por categora y que debe ser creado un formulario con un subformulario tal y como se presenta en la ilustracin Seleccin para crear un formulario con un subformulario 4. Haga clic en el botn Siguiente hasta llegar al ltimo paso del asistente, en l, indique que el ttulo del formulario ser Categoras y productos III y que el subformulario se llamar Productos III. 5. Haga clic en el botn Finalizar, vea el resultado en la vista Formulario , gurdelo y cirrelo.

Modificar el diseo del subformulario


Para modificar un subformulario: 1. Muestre el formulario en vista diseo. 2. Haga clic dentro de la seccin detalle, dentro del subformulario y haga los cambios que considere pertinentes como si estuviera en la vista diseo del formulario del subformulario.

Preguntas de Repaso
1. Cmo se cambia el texto que aparece en la barra de ttulo de un formulario? 2. Qu se debe hacer para tener cuadros combinados en la vista hoja de datos de las tablas para aquellos campos que pertenecen al lado hijo de una relacin entre dos tablas? 3. Qu ventaja proporciona crear cuadros combinados de bsqueda en la vista hoja de datos de las tablas? 4. Cmo se crea un cuadro de texto calculado? 5. En la siguiente imagen, seale los siguientes elementos: seccin encabezado, seccin de detalle, seccin pie del formulario, separadores de registros, selector de registro, botones de desplazamiento, barra de desplazamiento vertical.

64

SENATI-Computacin e Informtica

Formularios

Nota: El texto 47 distritos en el formulario es un campo calculado 6. Cmo se cambia el formato de un formulario? 7. Qu es el orden de tabulacin y cmo se modifica? 8. Qu debe hacerse para que un formulario creado con el botn Autoformulario presente las secciones Encabezado y Pie? 9. Cmo se ampla el alto de la seccin Detalle de un formulario? 10. Cmo se crea un formulario continuo? 11. Por qu debe haber un campo comn entre un subformulario y su formulario padre?

Ejercicios Casos Propuestos


Actividad propuesta 1
Abra la base de datos Transporte que emplea una empresa de transportes para el registro de sus actividades. En ella: a. Haga que la vista hoja de datos se muestre con cuadros combinados para los campos Ruta, Horario y Servicio.

SENATI-Computacin e Informtica

65

Microsoft Office

Vista hoja de datos de la tabla Salida b. Cree el siguiente formulario:

Actividad propuesta 2
Abra la base de datos Biblioteca y en ella: 1. Cree los formularios vinculados que se muestran a continuacin:

2. Cree el siguiente formulario:

66

SENATI-Computacin e Informtica

Formularios

Actividades de investigacin
Emplee cualquier base de datos para realizar las siguientes actividades: 1. Cree el formulario mostrado en la ilustracin Formulario que muestra solamente un registro a la vez de la tabla Usuario y vea qu contiene la propiedad Origen del registro del formulario. 2. Cree un cuadro combinado de bsqueda en la vista hoja de datos de una tabla y luego muestre las propiedades de bsqueda de dicho campo tal como se presenta en la siguiente ilustracin:

SENATI-Computacin e Informtica

67

Microsoft Office

Propiedades de bsqueda del campo catID de la tabla Productos de la base de datos Persform Modifique la propiedad Ancho de columnas para que su nuevo valor sea 1;1 (dependiendo de cul sea la configuracin regional que haya sido establecida en el panel de control de Windows, es posible que usted deba escribir 1,1), guarde el diseo y muestre la vista Hoja de datos; qu efecto se ha producido? Es posible que un formulario que muestra un registro a la vez se convierta en un formulario continuo? Qu limitaciones hay para esto?

68

SENATI-Computacin e Informtica

Captulo

Utilidades
En este captulo trataremos:
Establecer Seguridad en una Base de Datos Compactar y reparar una BD

SENATI-Computacin e Informtica

69

Microsoft Office

Formas de abrir una base de datos


Abrir una base de datos de Access desde el Explorador de Windows En el Explorador de Windows, vaya a la unidad o carpeta que contiene el archivo de base de datos de Access que desea abrir y haga doble clic en la base de datos. Se inicia Access y se abre la base de datos. Abrir una base de datos en Access Si ya se est ejecutando Access, utilice el procedimiento siguiente para abrir la base de datos: 1. Haga clic en el Botn Microsoft Office Abrir. y, a continuacin, haga clic en

2. Haga clic en un acceso directo del cuadro de dilogo Abrir o en el cuadro Buscar en y, a continuacin, haga clic en la unidad o carpeta que contenga la base de datos que desee. 3. En la lista de carpetas, vaya a la carpeta que contiene la base de datos. 4. Cuando encuentre la base de datos, siga uno de estos procedimientos: Haga doble clic en la base de datos para abrirla en el modo predeterminado especificado en el cuadro de dilogo Opciones de Access o en el modo establecido por una directiva administrativa. Haga clic en Abrir para abrir la base de datos para acceso compartido en un entorno de multiusuario, de manera que cualquier usuario pueda leer y escribir en la base de datos.

70

SENATI-Computacin e Informtica

II: Utilidades

Haga clic en la flecha situada junto al botn Abrir y, a continuacin, en Abrir en modo slo lectura para abrir la base de datos en acceso de slo lectura y, de esta forma, poder verla pero no editarla. Otros usuarios pueden seguir leyendo y escribiendo en la base de datos. Haga clic en la flecha situada junto al botn Abrir y, a continuacin, en Abrir en modo exclusivo para abrir la base de datos en acceso exclusivo. Cuando tiene una base de datos abierta en acceso exclusivo, cualquiera que intente abrir la base de datos recibe el mensaje "el archivo ya est en uso". Haga clic en la flecha situada junto al botn Abrir y, a continuacin, en Abrir en modo exclusivo de slo lectura para abrir la base de datos en acceso exclusivo. Otros usuarios pueden seguir abriendo la base de datos pero estarn limitados al modo de slo lectura.

Si no puede encontrar la base de datos que desea abrir 1. En el cuadro de dilogo Abrir , haga clic en el acceso directo Equipo situado a la izquierda (o en el cuadro Buscar , haga clic en Equipo).

SENATI-Computacin e Informtica

71

2. En la lista de unidades, haga clic con el botn secundario del mouse (ratn) en la unidad en la que cree que podra estar la base de datos y haga clic en Buscar. 3. Especifique sus criterios de bsqueda y presione ENTRAR para buscar la base de datos. 4. Si encuentra la base de datos, haga doble clic en ella en el cuadro de dilogo de bsqueda para abrirla. 5. Como la bsqueda se inici en el cuadro de dilogo Abrir, debe hacer clic en Cancelar de ese cuadro de dilogo antes de abrir la base de datos.

Sugerencias: Para abrir una de las ltimas bases de datos que se hayan abiertas, haga clic en el nombre de archivo en la lista Abrir base de datos reciente en la pgina Introduccin a Microsoft Office Access. Access abrir la base de datos con la misma configuracin de opciones que tena cuando se abri por ltima vez. Si no se muestra la lista de archivos recientemente utilizados: 1. Haga clic en el botn Microsoft Office Opciones de Access. y, a continuacin, haga clic en

2. En el cuadro de dilogo Opciones de Access, haga clic en Avanzadas .

3. En Mostrar, escriba un nmero en el cuadro Mostrar este nmero de documentos recientes (el mximo es nueve).

72

SENATI-Computacin e Informtica

II: Utilidades

Si est abriendo una base de datos utilizando el comando Abrir, puede ver una lista de accesos directos a bases de datos que ha abierto anteriormente haciendo clic en Documentos recientes en el cuadro de dilogo Abrir.

Abrir varias bases de datos al mismo tiempo En una nica instancia de Access, puede tener slo una base de datos abierta a la vez. Es decir, no puede iniciar Access, abrir una base de datos y despus abrir otra base de datos sin cerrar la primera. Sin embargo, puede ejecutar varias instancias de Access al mismo tiempo, cada una de ellas con una base de datos abierta. Cada vez que inicia Access, abre una nueva instancia de la aplicacin. Por ejemplo, para tener dos bases de datos de Access abiertas al mismo tiempo, inicie Access y abra la primera base de datos y, a continuacin, inicie una nueva instancia de Access y abra la segunda base de datos.

Para disponer ms de una ventana de Access en mosaico 1. Para aquellos programas que no desea organizar en mosaico, haga clic en el botn Minimizar de la esquina superior derecha de la ventana. 2. Haga clic con el botn secundario del mouse en la barra de tareas de Windows y, a continuacin, haga clic en Mosaico vertical. Despus de haber dispuesto las ventanas en mosaico, puede copiar y pegar datos ms fcilmente, as como arrastrar y colocar objetos de base de datos en las bases de datos de Access.
SENATI-Computacin e Informtica 73

Microsoft Office

Crear un acceso directo en el escritorio para abrir un objeto de base de datos Puede crear un acceso directo en el escritorio para abrir un objeto de base de datos de Access (por ejemplo, un formulario o informe). La base de datos se puede almacenar localmente en el equipo, remotamente en un servidor de archivos de red o en un directorio compartido. 1. Abra la base de datos que contiene el objeto para el que desea crear un acceso directo. 2. Cambie el tamao de la ventana de Access y minimice cualquier otra ventana abierta para poder ver el escritorio detrs de la ventana de Access. 3. En el panel de exploracin, busque el objeto para el que desea crear el acceso directo. 4. Arrastre el objeto del panel de exploracin al escritorio. Cuando suelte el botn del mouse, se crea el acceso directo en el escritorio. 5. Si desea el acceso directo en una ubicacin distinta al escritorio, utilice el Explorador de Windows para mover el acceso directo a la ubicacin deseada. Si hace doble clic en el acceso directo, Access abre la base de datos en donde est almacenado el objeto y lo muestra. Si Access ya est ejecutndose y el objeto asociado con el acceso directo se encuentra en otra base de datos distinta a la base de datos actualmente abierta, se inicia una instancia nueva de Access. Para abrir el objeto en una vista especfica en Access, haga clic con el botn secundario del mouse en el acceso directo y, a continuacin, seleccione la vista que desee.

Seguridad
Office Access 2007 proporciona un modelo de seguridad mejorada que ayuda a simplificar el proceso de aplicar seguridad a una base de datos y de abrir una base de datos con la seguridad habilitada. A continuacin aparece una lista de las nuevas funciones de seguridad d e Office Access 2007: Posibilidad de ver los datos, incluso cuando no se desea habilitar ningn cdigo deshabilitado de Microsoft Visual Basic para Aplicaciones (VBA) o ningn componente deshabilitado de una base de datos. En Microsoft Office Access 2003, si se estableca el nivel de seguridad en Alto, haba que firmar cdigo y confiar en una base de datos para poder ver los datos. En Office Access 2007, se pueden abrir bases de datos y ver los datos sin tener que habilitar la base de datos. Mayor facilidad de uso. Si se colocan archivos de bases de datos (ya sea con el formato de archivo de Office Access 2007 o formatos de archivo anteriores) en una ubicacin de confianza, como una carpeta de archivos o un recurso de red designados como seguros, esos archivos se abrirn y se ejecutarn sin que se muestre ningn mensaje de advertencia o sin que se pida que se habilite contenido deshabilitado. Asimismo, si se abren bases de datos de las versiones anteriores de Access, como .mdb o .mde, en Office

74

SENATI-Computacin e Informtica

II: Utilidades

Access 2007, esas bases de datos llevan firma digital y se ha optado por confiar en el publicador, esos archivos se ejecutarn sin que sea necesario tomar decisiones en materia de confianza. No obstante, recuerde que el cdigo de VBA de una base de datos firmada no se ejecutar hasta que se confe en el publicador y tampoco se ejecutar si la firma digital deja de ser vlida. Una firma pierde su validez cuando un usuario que no sea el firmante altera el contenido de una base de datos. Para obtener ms informacin sobre la firma de bases de datos, vea la seccin Cmo funciona la seguridad con las bases de datos de las versiones anteriores de Access que se abren en Office Access 2007. Si no sabe con seguridad si un certificado es de confianza, el artculo Cmo saber si una firma digital es de confianza proporciona informacin general acerca de la comprobacin de las fechas y otros elementos de un certificado para saber si es vlido o no. Centro de confianza. El Centro de confianza es un cuadro de dilogo que proporciona una sola ubicacin para definir y cambiar la configuracin de seguridad de Access. Se usa el Centro de confianza para crear o cambiar las ubicaciones de confianza y configurar las opciones de seguridad de Office Access 2007. Esa configuracin afecta a la manera en que las bases de datos nuevas y existentes se comportan cuando se abren en esa instan cia de Access. El Centro de confianza contiene asimismo lgica para evaluar los componentes de una base de datos y determinar si es seguro abrir la base de datos o si el Centro de confianza debe deshabilitarla y dejar que el usuario decida si desea habilitarla. Para obtener informacin sobre el uso del Centro de confianza con Access, vea la seccin Usar una base de datos de Office Access 2007 en una ubicacin de confianza, que aparece ms adelante en este artculo. Para obtener informacin general sobre el uso del Centro de confianza, vea el artculo Ver la configuracin de seguridad y privacidad en el Centro de confianza. Menos mensajes de advertencia. En las versiones anteriores de Access, apareca una gran variedad de mensajes de alerta: la seguridad de macros y el modo de recinto de seguridad, para citar slo dos. De forma predeterminada, si se abre una base de datos de Office Access 2007 fuera de una ubicacin de confianza, se ve una sola herramienta denominada barra de mensajes.

Si se sabe con certeza que se puede confiar en la base de datos, se puede usar la herramienta Barra de acciones del documento para habilitar los componentes deshabilitados, es decir, consultas de accin (consultas que agregan, eliminan o cambian datos), macros, controles ActiveX, expresiones (funciones que se evalan como un solo valor) y cdigo de VBA, cuando se abre una base de datos que contiene uno o varios de esos componentes.

SENATI-Computacin e Informtica

75

Microsoft Office

Nuevas formas de firmar y distribuir los archivos creados con el formato de archivo de Office Access 2007. En las versiones anteriores de Access, se usaba el Editor de Visual Basic para aplicar un certificado de seguridad a los componentes individuales de las bases de datos. En Office Access 2007, se empaqueta la base de datos y, a continuacin, se firma y se distribuye el paquete. Si se extrae una base de datos desde un paquete firmado hasta una ubicacin de confianza, la base de datos se ejecuta sin que se muestre la barra de mensajes. Si se extrae una base de datos desde un paquete firmado hasta una ubicacin que no es de confianza, pero se confa en el certificado del paquete y la firma es vlida, no es necesario tomar ninguna decisin en materia de confianza. Cuando se empaqueta y se firma una base de datos que no es de confianza o que contiene una firma digital no vlida, es preciso usar la barra de mensajes para confiar en la base de datos cada vez que se abre, a menos que se coloque la base de datos en una ubicacin de confianza. Algoritmo ms seguro para cifrar las bases de datos con formato de archivo de Office Access 2007 que usan la caracterstica de contrasea. Al cifrarse una base de datos, se codifican los datos de las tablas y se ayuda a evitar que usuarios no deseados lean los datos. Nueva subclase de acciones de macro que se ejecutan cuando se deshabilita una base de datos. Estas macros ms seguras contienen asimismo funciones de tratamiento de errores. Adems, las macros (incluso las que contienen acciones que Access deshabilita) se pueden incrustar directamente en cualquier propiedad de formulario, informe o control que funcione lgicamente con un mdulo de cdigo de VBA o una macro de una versin anterior de Access.

Por ltimo, recuerde estas reglas a medida que avance: Si se abre la base de datos en una ubicacin de confianza, se ejecutan todos los componentes sin que sea necesario tomar ninguna decisin en materia de confianza. Cuando se empaqueta, se firma y se implementa una base de datos de una versin anterior de Access (.mdb o .mde), se ejecutan todos los componentes sin que sea necesario tomar ninguna decisin en materia de confianza si la base de datos contiene una firma digital vlida de un publicador de confianza y se confa en el certificado. Si se firma y se implementa una base de datos que no es de confianza en una ubicacin que no es de confianza, el Centro de confianza deshabilita la base de datos de forma predeterminada y se debe optar por habilitar la base de datos cada vez que se abre. Para obtener ms informacin, vea la seccin Habilitar contenido deshabilitado al abrirse una base de datos.

76

SENATI-Computacin e Informtica

II: Utilidades

Cifrar una Base de Datos mediante contrasea


Se cifra una base de datos de Microsoft Office Access 2007 cuando se necesita ocultar datos e impedir que usuarios no deseados abran la base de datos. 1. Abra la base de datos que desee cifrar en modo Exclusivo. Cmo se abre una base de datos en modo Exclusivo? a. Haga clic en el Botn Microsoft Office clic en Abrir. y, a continuacin, haga

b. En el cuadro de dilogo Abrir , busque el archivo que desee abrir y, a continuacin, seleccione el archivo haciendo clic en l. c. Haga clic en la flecha situada junto al botn Abrir y, a continuacin, haga clic en Abrir en modo exclusivo . En la siguiente ilustracin se refleja el men.

2. En la ficha Herramientas de base de datos , en el grupo Herramientas de base de datos, haga clic en Cifrar con contrasea.

Aparece el cuadro de dilogo Establecer contrasea para la base de datos . 3. Escriba la contrasea en el cuadro Contrasea, escrbala de nuevo en el cuadro Confirmar y, a continuacin, haga clic en Aceptar.

Utilice contraseas seguras que combinen letras en maysculas y minsculas, nmeros y smbolos. Las contraseas no seguras son aquellas que no combinan estos elementos. Un ejemplo de contrasea segura sera Y6dh!et5 y de contrasea no segura, Casa27. Las contraseas deben tener 8 o ms caracteres.

SENATI-Computacin e Informtica

77

Microsoft Office

Una frase con 14 o ms caracteres es todava mejor. Para obtener ms informacin, vea Ayudar a proteger la informacin personal con contraseas seguras. Es fundamental que recuerde la contrasea. Si la olvida, Microsoft no puede recuperarla. Guarde las contraseas que anote en un lugar seguro, lejos de la informacin que ayudan a proteger.

Descifrar una base de datos


1. Abra la base de datos cifrada de la misma manera que se abre cualquier otra base de datos. Aparece el cuadro de dilogo Solicitud de contrasea.

2. Escriba la contrasea en el cuadro Escriba la contrasea de la base de datos y, a continuacin, haga clic en Aceptar.

Quitar contrasea de una Base de Datos


Cuando se quita una contrasea de una base de datos, se puede restaurarla en cualquier momento (o usar otra contrasea) repitiendo los pasos descritos en la seccin Cifrar una base de datos mediante una contrasea, que aparece anteriormente en este artculo. 1. Haga clic en el Botn Microsoft Office Abrir. y, a continuacin, haga clic en

2. En el cuadro de dilogo Abrir , busque el archivo que desee abrir y, a continuacin, seleccione el archivo haciendo clic en l. 3. Haga clic en la flecha situada junto al botn Abrir y, a continuacin, haga clic en Abrir en modo exclusivo . En la siguiente ilustracin se refleja el men. 4. En la ficha Herramientas de base de datos, en el grupo Herramientas de base de datos, haga clic en Descifrar base de datos.

78

SENATI-Computacin e Informtica

II: Utilidades

Aparece el cuadro de dilogo Anular la contrasea establecida para la base de datos.

5. Escriba la contrasea en el cuadro Contrasea y, a continuacin, haga clic en Aceptar.

Uso del centro de confianza


El Centro de confianza es donde puede encontrar la configuracin de seguridad y privacidad de los programas de 2007 Microsoft Office system. Los niveles de seguridad Muy alta, Alta, Media y Baja utilizados en versiones anteriores de Office se han reemplazado ahora por un sistema de seguridad ms sencillo. 1. Siga estos pasos en estos programas de 2007 Microsoft Office system: Word, Excel, PowerPoint o Access Haga clic en el botn de Microsoft Office y, a continuacin, en Opciones de Nombre del programa , donde Nombre de programa es el nombre del programa que est utilizando, por ejemplo, Opciones de Access. 2. Haga clic en Centro de confianza y, a continuacin, en Configuracin del Centro de confianza.

SENATI-Computacin e Informtica

79

Microsoft Office

Compactar y reparar una BD


Para garantizar un rendimiento ptimo, se recomienda compactar y reparar los archivos de Microsoft Access con regularidad. Asimismo, si se produce un problema grave cuando est trabajando con un archivo de Access y el programa intenta recuperarlo, puede aparecer un mensaje de error que indique que la operacin de reparacin se cancel y que debe compactar y reparar el archivo. Precaucin Al compactar un archivo de Microsoft Access ubicado en un volumen qu e utiliza el sistema de archivos NTFS, Access quita el archivo existente y lo reemplaza por el archivo compactado. A continuacin, aplica los permisos de archivos predeterminados al nuevo archivo. Si el archivo es una base de datos de Access, utilice la seguridad por usuarios de Access en lugar de los permisos de nivel de archivo. En caso contrario, utilice permisos de carpetas. Para obtener ms informacin sobre el sistema de archivos NTFS y los permisos de carpetas, vea la Ayuda de Windows. Para compactar y reparar una base de datos de Access, debe tener permisos de Abrir o ejecutar y de Abrir en modo exclusivo.

Compactar y reparar el archivo de Access con el que est trabajando 1. Si va a compactar una base de datos compartida de Microsoft Access que est ubicada en un servidor o en una carpeta compartida, asegrese de que ningn otro usuario la tiene abierta. 2. En el men Office, seleccione Administrar y, a continuacin, haga clic en Compactar y reparar base de datos

80

SENATI-Computacin e Informtica

II: Utilidades

Compactar y reparar un archivo de Access que no est abierto 1. Cierre el archivo de Microsoft Access que tiene abierto. Si va a compactar una base de datos compartida de Access que est ubicada en un servidor o en una carpeta compartida, asegrese de que ningn otro usuario la tiene abierta. 2. En el men Office, seleccione Administrar y, a continuacin, haga clic en Compactar y reparar base de datos . 3. En el cuadro de dilogo Base de datos a compactar , especifique el archivo de Access y, a continuacin, haga clic en Compactar. 4. En el cuadro de dilogo Compactar la base de datos en, especifique un nombre, una unidad y una carpeta para el archivo de Access compactado. 5. Haga clic en Guardar. Si utiliza el mismo nombre, unidad y carpeta, y la base de datos de Access o proyecto de Access se compacta con xito, Microsoft Access reemplaz a el archivo original por la versin compactada.

Compactar y reparar un archivo de Access automticamente cada vez que se cierre La compactacin no tiene lugar si cierra una base de datos compartida de Access mientras otro usuario la tiene abierta. 1. Abra la base de datos de Access o proyecto de Access que desee compactar automticamente. 2. En el men Office, haga clic en Opciones de Access.

SENATI-Computacin e Informtica

81

Microsoft Office

3. Haga clic en Base de Datos Actual 4. Active la casilla de verificacin Compactar al cerrar .

Nota: Para detener el proceso de compactacin y reparacin, puede presionar la combinacin de teclas CTRL+ENTER o la tecla ESC.

Convertir a otras versiones


Caractersticas nuevas del formato de archivo de Office Access 2007

Campos de bsqueda multivalor La mayora de los programas de base de datos, incluidas las versiones anteriores de Access, slo permiten almacenar un valor nico en cada campo. Sin embargo, en Office Access 2007 puede crear ahora un campo de bsqueda que le permite almacenar ms de un valor en cada campo. En efecto, crea una relacin de varios a varios en cada campo y oculta los detalles de la implementacin mediante tablas de sistema. Por ejemplo, suponga que tiene una tabla Tareas con un campo de bsqueda que ha utilizado para asignar la tarea a un empleado. Qu ocurre si tiene una tarea que debe asignar a varios empleados? En las versiones anteriores de Access, tendra qu e configurar una nueva tabla de referencias cruzadas para almacenar cada combinacin de tarea y empleado, y revisar a continuacin los formularios e informes para utilizar la nueva estructura de datos. En Office Access 2007, es mucho ms sencillo si se implementa un campo de bsqueda multivalor. En lugar de seleccionar nicamente un elemento en una lista desplegable, ahora cada elemento de la lista tiene una casilla de verificacin para que pueda seleccionar todos los que desee. Las selecciones mltiples se muestran en el campo, separadas por comas.

Tipo de datos Datos adjuntos El nuevo tipo de datos Datos adjuntos permite almacenar fcilmente todos los tipos de documentos y archivos binarios de la base de datos sin necesidad de sobrecargar la

82

SENATI-Computacin e Informtica

II: Utilidades

base de datos. Los datos adjuntos se comprimen automticamente cuando as se requiere para racionalizar el uso del espacio. Puede anexar un documento de Microsoft Office Word 2007 a un registro o guardar una serie de imgenes digitales. Puede incluso anexar varios datos adjuntos a un nico registro.

Integracin con Microsoft Windows SharePoint Services 3.0 y Microsoft Office Outlook 2007 En el pasado, los archivos Access se habran bloqueado en Windows SharePoint Services 3.0 y Office Outlook 2007 porque se podra incluir cdigo no seguro en una base de datos de Access. Office Access 2007 implementa un nuevo formato qu e permite que el cdigo se compruebe como seguro o se deshabilite. De esta forma la integracin de las bases de datos de Access con Windows SharePoint Services 3.0 y Office Outlook 2007 es mucho ms completa, y tambin permiten programas antiviru s para inspeccionar con ms facilidad los archivos de base de datos de Access.

Trabajar con los datos de SharePoint sin estar conectado Puede desconectar las listas de SharePoint con un solo clic mediante Office Access 2007. Trabaje con los datos en Access y, despu s, sincronice los cambios, o bien, vuelva a conectarse ms adelante con el sitio de SharePoint.

Seguimiento del historial de los campos Memo Los campos Memo sirven para almacenar grandes cantidades de informacin. En Office Access 2007, puede definir una propiedad (SloAnexar (AppendOnly) ) que obligue a Access a conservar un historial de todos los cambios efectuados en un campo Memo. A continuacin, puede ver un historial de esos cambios. Esta caracterstica admite la funcin de control de versiones de Wi ndows SharePoint Services 3.0, por lo que puede utilizar Access para realizar un seguimiento de los cambios realizados en un campo de varias lneas de texto almacenado en una lista de SharePoint (siempre que el campo tenga la opcin Anexar cambios al texto existente establecida en S ).

Tablas vinculadas Puede vincular una tabla con un formato anterior de Access a una base de datos de una versin posterior de Access, pero no puede vincular una tabla de una versin posterior de Access a una base de datos de una versin anterior de Access. Por ejemplo, puede crear un vnculo desde una base de datos .accdb a tablas de otra base de datos .accdb o a tablas de una base de datos .mdb, pero no puede crear un vnculo desde una base de datos .mdb a tablas de una base de datos .accdb.

Rplica La rplica no se admite en el formato de archivo de Office Access 2007. Puede utilizar Office Access 2007 para replicar una base de datos creada en un formato de archivo anterior, pero no la creada en el formato de Office Access 2007.
SENATI-Computacin e Informtica 83

Archivos de informacin de grupo de trabajo (MDW) Los archivos de informacin de grupo de trabajo almacenan informacin para bases de datos seguras. No se ha realizado ningn cambio en el formato de archivo .mdw en Office Access 2007. El administrador del grupo de trabajo de Office Access 2007 crear archivos .mdw idnticos a los que se crearon en Access 2000 a travs de Access 2003, y los archivos .mdw creados en las versiones anteriores se pueden utilizar en las bases de datos de Office Access 2007.

Bloqueo de archivos Cuando se abre una base de datos, un archivo de bloqueo controla el bloqueo de archivos. Cuando se abre un archivo .mdb, Access crea y abre un archivo de bloqueo .ldb. Esto ocurre aunque utilice Office Access 2007 para abrir un archiv o de base de datos .mdb. Por ejemplo, cuando se abre el archivo Db1.mdb, Access crea y abre un archivo llamado Db1.ldb que controla el bloqueo. En el caso de aquellos archivos creados en formato de archivo de Office Access 2007 (archivos .accdb), Access controla el bloqueo creando y abriendo un archivo con una extensin de nombre de archivo de .laccdb. Por ejemplo, si se abre Db1.accdb, Access crea y abre un archivo de bloqueo llamado Db1.laccdb. Al igual que en los archivos .ldb, los archivos .laccdb se eliminan automticamente cuando todos los usuarios cierran la base de datos. Al mantener archivos de bloqueo independientes para los archivos de Office Access 2007 y para los archivos creados en versiones anteriores de Access, es posible tener ambos archivos Db1.mdb y Db1.accdb abiertos en Office Access 2007 al mismo tiempo, sin crear conflictos en el archivo de bloqueo, porque se crean dos archivos de bloqueo distintos. Es posible tener el mismo archivo .mdb abierto en Office Access 2007 y en una versin anterior de Access al mismo tiempo, mientras las dos versiones utilizan el mismo archivo de bloqueo .ldb.

Los formatos ACCDB y MDB


Office Access 2007 incluye nuevas extensiones de archivo: ACCDB Extensin de archivo para el nuevo formato de archivo de Office Access 2007. Sustituye a la extensin de archivo MDB. ACCDE Extensin de archivo de los archivos de Office Access 2007 que se encuentran en modo de slo ejecucin. A todos los archivos ACC DE se les ha quitado el cdigo fuente de Visual Basic para Aplicaciones (VBA). Los usuarios de archivos ACCDE slo pueden ejecutar el cdigo VBA, no modificarlo. ACCDE sustituye a la extensin de archivo MDE. ACCDT Extensin de archivo de Plantillas de base de datos de Access. ACCDR ACCDR es una nueva extensin de archivo que permite abrir una base de datos en modo de tiempo de ejecucin. Cambiando simplemente la extensin de archivo de una base de datos de .accdb a .accdr, puede crear una versin "bloqueada" de la base de datos de Office Access 2007. Puede modificar la extensin de archivo de nuevo a .accdb para que recupere toda su funcionalidad.
84 SENATI-Computacin e Informtica

II: Utilidades

Archivos ACCDE Un archivo .accde es la versin de Office Access 2007 del archivo .mde en versiones anteriores de Access. Es una versin bloqueada del archivo .accdb original. Si el archivo .accdb contena cdigo de VBA, slo se incluye el cdigo compilado en el archivo .accde y por tanto, el usuario no puede consultar ni modificar el cdigo de VBA. Adems, los usuarios del archivo .accde no tienen permiso para realizar modificaciones de diseo en los formularios o informes. Puede crear archivos .accde a partir de archivos .accdb mediante el siguiente procedimiento:

Crear un archivo ACCDE en Office Access 2007 1. En Office Access 2007, abra la base de datos que desea guardar como un archivo .accde. 2. En la ficha Herramientas de base de datos , en el grupo Herramientas de base de datos, haga clic en Crear ACCDE. 3. En el cuadro de dilogo Guardar como, desplcese a la carpeta en la que desea guardar el archivo, especifique un nombre para el archivo en el cuadro Nombre de archivo y, a continuacin, haga clic en Guardar.

Convertir una base de datos al formato de archivos de Access 2007


Puede convertir bases de datos de versiones anteriores de Access al formato de archivo de Microsoft Office Access 2007, abrir bases de datos de versiones anteriores de Access sin convertirlas y cambiar el formato de archivo predeterminado para las nuevas bases de datos que cree. Convertir una base de datos de Access a un formato de archivo diferente.

1. Si el archivo que desea convertir no est abierto, haga clic en el Botn de Microsoft Office y haga clic en Abrir. Busque el archivo y, a continuacin, haga doble clic en l para abrirlo. Si se muestra el cuadro de dilogo Mejoras de base de datos y se le solicita que actualice la base de datos, significa que el formato de archivo de la base de datos que est abriendo es anterior a Access 2000. Para continuar, haga caso omiso de la seccin Abrir archivos de versiones anteriores de Access en Office Access 2007. 2. Haga clic en el botn de Microsoft Office , seleccione Guardar como y, a continuacin, en Guardar base de datos en otro formato , haga clic en el formato al que desee convertir el archivo.

SENATI-Computacin e Informtica

85

Microsoft Office

Por ejemplo, puede hacer clic en Formato de archivo actual para guardar la copia en el mismo formato que el original, o puede elegir uno de los otros formatos de archivo. Es importante tener en cuenta que si est abierto algn objeto de la base de datos cuando utiliza el comando Guardar base de datos en otro formato , Access le pedir que lo cierre para poder crear la copia. Haga clic en S para que Access cierre los objetos, o bien, haga clic en No para cancelar todo el proceso. Si es necesario, Access le pedir que guarde los cambios. 3. En el cuadro de dilogo Guardar como, escriba un nombre de archivo para la copia de la base de datos en el cuadro Nombre de archivo y, a continuacin, haga clic en Guardar. Access crea una copia de la base de datos y despus la abre. Access cierra automticamente la base de datos original. Si tiene una base de datos de Office Access 2007 (.accdb) que desea guardar en un formato de archivo anterior de Access (.mdb), podr hacerlo siempre que la base de datos .accdb no contenga campos de bsqueda multivalor, datos sin conexin o datos adjuntos. Si intenta convertir una base de datos .accdb que contenga alguno de estos elementos a un formato de archivo .mdb, Access mostrar un mensaje de error.

Abrir archivos de versiones anteriores de Access en Office Access 2007 Al abrir una base de datos .mdb en formato de archivo Access 97 o Access 95, Access muestra el cuadro de dilogo Mejoras de base de datos, donde se le solicita que actualice la base de datos.

86

SENATI-Computacin e Informtica

Captulo

Trabajando con datos externos


En este captulo aprenderemos:
Importar y Exportar datos Preparar y vincular la informacin con un sitio SharePoint

SENATI-Computacin e Informtica

87

atos Externos

Importar
Access te permite importar objetos de otra base de datos a la tuya rpidamente. Para ello, slo tendremos que acudir a la pestaa Datos externos, una vez all seleccionar una opcin de la seccin Importar.

Aqu podemos seleccionar qu tipo de archivo contiene los datos que queremos importar.

Access
Si quieres importar objetos de una base de datos a otra slo tienes que hacer clic en el botn Access. Se abrir el siguiente cuadro de dilogo:

Para importar un objeto de una base de datos Access, ya sea una tabla, formulario, informe, macro, etc... solo tendremos que seleccionar la base de datos de origen y pulsar el botn Aceptar.

En el siguiente cuadro de dilogo slo tendremos que seleccionar los objetos que queremos aadir a nuestra base de datos y pulsar el botn Aceptar.

SENATI-Computacin e Informtica

89

Microsoft Office

En la imagen vers que el botn Opciones>> se encuentra desactivado, es porque hemos hecho clic sobre l y entonces han aparecido las opciones en la parte inferior del cuadro. Desde all podrs seleccionar cmo y en qu medida quieres importar los objetos. Como habrs podido observar existen otros mtodos de importacin de datos, podrs acceder a ellos haciendo clic en los diferentes botones de la seccin Importar.

Excel
Para almacenar datos de Excel en una base de datos de Access y utilizar y mantener estos datos en Access de ahora en adelante, puede importar los datos. Cuando se importan datos, Access los almacena en una tabla nueva o existente sin modificarlos. Slo puede importar una hoja de clculo cada vez durante una operacin de importacin. Para importar datos de varias hojas de clculo, repita la operacin de importacin para cada hoja de clculo. A continuacin se incluyen algunos escenarios comunes de importacin 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 clculo 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 clculo de Excel a la base de datos cuando la s recibe.

90

SENATI-Computacin e Informtica

atos Externos

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 importacin para asegurarse de que los datos se importan cada semana a una hora especfica a la ba se de datos. Si quieres importar objetos de un archivo de Excel solo tienes que hacer clic en el botn Excel. Se abrir el siguiente cuadro de dilogo:

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 botn Siguiente.

SENATI-Computacin e Informtica

91

Microsoft Office

Verificar si la Primera Fila tiene encabezados de Columna.

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

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

92

SENATI-Computacin e Informtica

atos Externos

Por ltimo indicarle el nombre que va a tener

Lista de SharePoint
Importar una lista de SharePoint crea una copia de la lista en una base de datos de Access. Durante la operacin de importacin, puede especificar las listas que desea copiar y, para cada lista seleccionada, puede indicar si desea importar toda la lista o slo una vista especfica. La operacin de importacin crea 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. Para obtener ms informacin sobre las tablas y sobre cmo est estructurada una base de datos, vea los vnculos de la seccin Vea tambin. Al final de la operacin de importacin, puede elegir guardar la informacin de la operacin de importacin como una especificacin. Una especificacin de importacin ayuda a repetir la operacin de importacin en el futuro sin tener que examinar el Asistente para importacin cada vez.

SENATI-Computacin e Informtica

93

Microsoft Office

Escenarios 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.

Prepararse para la operacin de importacin 1. Busque el sitio de SharePoint que contiene las listas que desea copiar y anote la direccin del sitio. Una direccin vlida de un sitio empieza por http:// seguido del nombre del servidor y finaliza con la ruta al sitio especfico en el servidor. 2. Identifique las listas que desea copiar a la base de datos y decida si desea toda la lista o slo una vista determinada. Puede importar varias listas en una nica operacin de importacin pero puede importar slo una vista de cada lista. Si es necesario, cree una vista que contenga slo 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 Columnas Consideraciones Access no admite ms de 256 campos en una tabla, de forma que Access importa slo las 256 primeras columnas. Para evitar este problema, cree una vista, agrguele slo las columnas que desea y asegrese de que el nmero total de columnas no sea superior a 256. Cada carpeta de la lista de SharePoint o de la vista aparece como un registro en la tabla de Access. Los elementos dentro de una carpeta tambin aparecen como registros, inmediatamente debajo del registro correspondiente a dicha carpeta. Si una columna de origen busca valores de otra lista, tiene dos opciones: Importar los valores de presentacin 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 bsqueda, debe importar tambin la lista relacionada. NOTA: Una columna de origen de tipo Persona o Grupo es un tipo especial de columna de bsqueda. Busca valores en la lista
SENATI-Computacin e Informtica

Carpetas

Columnas de bsqueda

94

atos Externos

Informacin de usuario, por lo que debe decidir si desea importar la lista Informacin de usuario junto con otras listas. Columnas calculadas Datos adjuntos Relaciones 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 expresin que ejecuta el clculo. La columna de datos adjuntos de la lista se copia en un campo denominado Datos adjuntos. Access no crea automticamente relaciones entre tablas relacionadas al finalizar una operacin de importacin. Debe crear manualmente las relaciones 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 Mostrar u ocultar, haga clic en Relaciones. Columnas multivalor Una columna de tipo opcin o bsqueda puede contener varios valores. Al importar una columna que admite varios valores, Access crea una columna que hace lo mismo. Para obtener ms informacin sobre los campos multivalor en Access, abra los vnculos en la seccin Vea tambin de este artculo. 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.

Formato de texto enriquecido

1.

Identifique la base de datos a la que desea importar las listas. Asegrese 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 Botn de Microsoft Office . A continuacin, haga clic en Nuevo. .

2.

Revise las tablas de la base de datos. La operacin de importacin 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.)

Importar datos 1. Abra la base de datos de destino. En la ficha Datos externos, en el grupo Importar, haga clic en Lista de SharePoint .

SENATI-Computacin e Informtica

95

Microsoft Office

2. 3. 4. 5.

En el Asistente, especifique la direccin del sitio de origen. Haga clic en Importar el origen de datos en una nueva tabla de la base de datos actual y luego en Siguiente . En la lista que muestra el Asistente, seleccione las listas que desea importar. En la columna Elementos para importar , seleccione la vista que desea para cada lista seleccionada. Elija una vista Todos los elementos (por ejemplo, Todos los elementos, Todos los contactos o Todos los documentos ) para importar toda la lista. La casilla de verificacin Importar valores para mostrar en lugar de Id. para los campos que consultan valores almacenados en otra lista controla los datos que se importan para las columnas de bsqueda en las lista s seleccionadas. Siga uno de estos procedimientos: Si desea importar los valores de presentacin como parte del campo, active la casilla de verificacin. En este caso, el campo no buscar valores en otra tabla. Si desea que el campo de destino busque valores en otra tabla, desactive la casilla de verificacin. Al hacerlo, los identificadores de las filas de valores de presentacin se copian en el campo de destino. Los identificadores son necesarios para definir un campo de bsqueda en Access. Al importar identificadores, debe importar las listas que proporcionan actualmente los valores a las columnas de bsqueda (a menos que la base de datos de destino ya tenga tablas que puedan funcionar como tablas de bsqueda). Es importante recordar que la operacin de importacin sita los identificadores en el campo correspondiente pero no establece todas las propiedades necesarias para que el campo funcione como un campo de bsqueda. Los pasos para establecer las propiedades de bsqueda de este tipo de campo se describen en Establecer campos de bsqueda en la seccin Tareas relacionadas de este artculo.

6.

7.

Haga clic en Aceptar.

Access importa las listas y muestra el estado de la operacin en la ltima pgina del asistente. Si prev repetir la operacin de importacin, guarde los detalles como una especificacin de importacin. Vaya a los pasos siguientes para completar la tarea.

Archivo de texto
Por ejemplo, para importar la informacin de una base de datos de un archivo de texto simplemente deberemos hacer clic en el botn Archivo de texto. En este caso se abrir el Asistente para importacin de texto , donde podr s indicar la forma en la que est formateado el archivo del que vas a tomar la informacin, incluso te podrs guardar esa descripcin y volver a utilizarla para importar datos de otro fichero con las mismas caractersticas utilizando el botn Importaciones guardadas.

96

SENATI-Computacin e Informtica

atos Externos

Para ver mejor cmo utilizar este asistente visita el avanzado de Importacin de texto.

A veces cuando se importan datos algunos datos no pueden ser almacenados por no coincidir con la definicin de la tabla, en este caso Access nos avisar que se han producido errores en la importacin y crear una tabla con esos errores para que los podamos analizar y comprobar.

Actividad 1 : Importar de un Archivo de Texto


Abre la base de datos Express.accdb. Vamos a importar el archivo Clientes.txt . 1. Selecciona la ficha Datos Externos y haz clic en el botn Archivo de texto de la seccin Importar.

2. En el cuadro de dilogo Importar selecciona Importar el origen de datos en una nueva tabla de la base de datos actual . 3. Navega hasta la carpeta ejercicios del curso y selecciona el archivo Clientes.txt.

SENATI-Computacin e Informtica

97

Microsoft Office

4. Pulsa Aceptar. Se abrir el asistente para importacin de texto . 5. Pulsa el botn Avanzado, vamos a crear una especificacin para archivos que tengan este determinado formato.

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 opcin Aos en cuatro cifras. 11. Selecciona la opcin Ceros no significativos en fechas. Ahora pasaremos a establecer las propiedades de los campos. Ya hemos terminado de configurar las propiedades de los campos, debera haberte quedado algo as:

98

SENATI-Computacin e Informtica

atos Externos

Si se guarda esta especificacin, ms adelante, se puede volver a utilizarla. 12. En el dilogo de Avanzado haz clic de nuevo sobre el botn Aceptar. 13. En el siguiente paso hay que activar Primera Fila contiene nombres de campos

Ahora vers que a medida que vamos avanzando por el asistente todas las opciones ya se encuentran perfectamente configuradas. 14. Selecciona la opcin Permitir a Access agregar la clave principal.

SENATI-Computacin e Informtica

99

Microsoft Office

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

17. Pulsa Finalizar para terminar. Vers cmo la tabla se importa. Podrs abrirla desde la ventana de Base de datos y ver sus contenidos.

Archivo XML
Para Importar un archivo XML a Access 2007, seguir los siguientes pasos a. Selecciona la ficha Datos Externos y haz clic en el botn Archivo XML de la seccin Importar

100

SENATI-Computacin e Informtica

atos Externos

b. Aparecer un Cuadro de Dialogo, en el que tendrs que buscar la ubicacin del archivo XML que necesitaras

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

SENATI-Computacin e Informtica

101

Microsoft Office

d. Por defecto esta activada la opcin Estructura y Datos, lo que implica que importara, tanto los campos que contienen la tabla, como el contenido de la misma e. Aceptar, y luego Cerrar

f. Finalmente se ver la tabla Importada

Exportar
En el apartado anterior veamos como podamos 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 informacin de nuestra base de datos a otra base de datos o a un archivo de otro tipo , por ejemplo de texto. Para ello, slo tienes que seleccionar una de las opciones que encontrars en la seccin Exportar de la pestaa Datos Externos. Estos comandos te permitirn copiar tablas, informes, formularios, macros y en definitiva cualquier objeto de tu base de datos a otra . Creando una copia exacta del objeto en otro lugar. Para utilizar esta opcin slo tendrs que seleccionar el objeto y entonces ejecutar el comando Exportar. Si haces clic en el botn Ms desplegars ms formatos de exportacin entre ellos Base de datos de Access que te permitir exportar datos de una base de datos a otra rpidamente. Se abrir el cuadro Exportar tabla 'tabla1' a... y slo tendrs que indicar en qu base de datos quieres copiar el objeto, a continuacin Access abrir un cuadro de dilogo

102

SENATI-Computacin e Informtica

atos Externos

Exportar donde te permitir cambiar el nombre del objeto en la otra base de datos y se encargar de exportarlo ntegramente sin ninguna otra interaccin por tu parte. Si el objeto es una tabla se te presentar un cuadro de dilogo Exportar como este:

Como puedes ver en la imagen, estamos exportando una tabla llamada Alumnado a una base de datos llamada prueba.accdb . Podemos indicar el nombre que tendr la tabla en la base de datos de destino y tambin elegir qu parte queremos exportar. En el marco Exportar tablas podremos seleccionar Definicin y datos para exportar la tabla completa (con todos los registros que contiene incluidos) o exportar nicamente su estructura seleccionando la opcin Slo definicin .

Excel
Puede copiar los datos de una base de datos de Microsoft Office Access 2007 a una hoja de clculo exportando un objeto de base de datos a una hoja de clculo de Microsoft Office Excel 2007. Esto se hace mediante el Asistente para exportacin en Office Access 2007. Desde la seccin Exportar, podremos exportar el contenido de nuestras tablas, informes o formularios a aplicaciones del mismo paquete como Word o Excel.

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. Escenarios comunes para exportar datos a Excel Su departamento o grupo de trabajo utiliza Access y Excel pa ra 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 anlisis. Su equipo exporta actualmente datos a Excel cuando y como lo necesita pero desea aumentar la efi cacia de este proceso. Es usuario de Access desde hace tiempo pero su administrador prefiere trabajar con los datos en Excel. A intervalos regulares, suele copiar los datos en Excel, pero desea automatizar este proceso para ahorrar tiempo.

SENATI-Computacin e Informtica

103

Microsoft Office

Si es la primera vez que exporta datos a Excel Para exportar datos de Access a Excel, debe estar trabajando en Access (Excel no proporciona ningn 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 slo como otro objeto de base de datos de Access. Puede exportar una tabla, una consulta o un formulario. Tambin puede exportar los registros seleccionados en una vista. No puede exportar macros ni mdulos a Excel. Al exportar formularios, informes u hojas de datos que contienen subformularios, subinformes u hoja s secundarias de datos, slo se exporta el formulario, el informe o la hoja de datos principales. Debe repetir la operacin de exportacin para cada subformulario, subinforme y hoja secundaria de datos que desea exportar a Excel. Slo puede exportar un objeto de base de datos en cada operacin de exportacin. No obstante, puede combinar los datos en varias hojas de clculo en Excel despus de finalizar las operaciones individuales de exportacin.

Prepararse para la operacin de exportacin 1. Abra la base de datos de origen. 2. En el panel de navegacin, seleccione el objeto que contiene los datos que desea exportar. 3. Puede exportar una tabla, una consulta, un informe o un formulario.

4. Revise los datos de origen para asegurarse de que no contienen indicadores de error ni valores de error.
104 SENATI-Computacin e Informtica

atos Externos

5. Si hay algn error, debe resolverlo antes de exportar los datos a Excel. De lo contrario, se pueden producir errores durante la operacin de exportacin 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 decisin afecta a dos aspectos del libro resultante: la cantidad de datos que se exportan y el formato de presentacin de los datos. En la tabla siguiente se describe el resultado de la exportacin de datos con y sin formato. Exportar Sin formato Objeto de origen Tabla consulta o Campos y registros Se exportan todos los campos y registros del objeto base. Formato La configuracin de la propiedad Formato se omite durante esta operacin. Para campos de bsqueda, se exportan slo los valores de identificador de bsqueda. Para campos de hipervnculo, el contenido se exporta como una columna de texto que muestra los vnculos en el formato textoParaMostrar#direccin#. El Asistente respeta la configuracin de la propiedad Formato. Para campos de bsqueda, se exportan los valores de bsqueda. Para campos de hipervnculo, los valores se exportan como hipervnculos. Para campos de texto enriquecido,

NOTA Los formularios no se pueden exportar sin formato.

Con formato

Tabla, consulta, formulario informe

Slo se exportan campos y registros que se muestran en la vista o el objeto actual. No se exportan los registros

SENATI-Computacin e Informtica

105

Microsoft Office

filtrados, las columnas ocultas en una hoja de datos ni los campos no mostrados en un formulario o informe.

se exporta el texto pero no el formato.

8. Elija el libro de destino y el formato de archivo. Durante la operacin de exportacin, Access le pide que especifique el nombre del libro de destino. En la tabla siguiente se resume cundo se crea un libro (si no existe an) y cundo se sobrescribe (si ya existe). Si el libro de destino No existe

Y el objeto de origen es Una tabla, consulta, formulario o informe Una tabla o consulta

Y desea exportar Los datos con formato o sin formato Los datos pero no el formato

Entonces El libro se crea durante la operacin de exportacin.

Ya existe

El libro no se sobrescribe. Se agrega una nueva hoja de clculo al libro y recibe el nombre del objeto del que se exportan los datos. Si ya existe una hoja de clculo con ese nombre en el libro, Access le pide que reemplace el contenido de la hoja de clculo correspondiente o especifique otro nombre para la nueva hoja. El libro se sobrescribe con los datos exportados. Se eliminan todas las hojas de clculo existentes y se crea una nueva hoja de clculo con el mismo nombre que el objeto exportado. Los datos de la hoja de clculo de Excel heredan la configuracin de formato del objeto de origen.

Ya existe

Una tabla, consulta, formulario o informe

Los datos, incluido el formato

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

106

SENATI-Computacin e Informtica

atos Externos

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, podrs seleccionar la opcin Combinar con Microsoft Office Word que se encuentra en el desplegable del botn Ms 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.

Lista de SharePoint
Si los miembros de su departamento o grupo de trabajo utilizan Windows SharePoint Services 2.0 o posterior 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 ms fcil de exportar datos a un sitio de SharePoint es ejecutar el Asistente para exportacin. Una vez ejecutado, puede guardar la configuracin (la informacin proporcionada al ejecutar el Asistente) como especificacin de exportacin. Luego, puede ejecutar de nuevo la operacin de exportacin sin tener que volver a proporcionar la informacin.

Preparar la operacin 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 slo un objeto a la vez. 2. Identifique el sitio de SharePoint en el que desea crear la lista. Una direccin de un sitio vlido empieza por http:// seguido del nombre del servidor y finaliza con la ruta al sitio especfico del servidor. El siguient e ejemplo es una direccin vlida: http://adatum/EquipoAnalisis 3. Asegrese de que tiene los permisos necesarios para crear una lista en un sitio de SharePoint. Pngase en contacto con el administrador del servidor si no est seguro de los permisos. La operacin de exportacin crea una lista nueva que tiene el mismo nombre que el objeto de origen de Access. Si el

SENATI-Computacin e Informtica

107

Microsoft Office

sitio de SharePoint ya tiene una lista con este nombre, se le pide que especifique un nombre diferente para la lista nueva. No se pueden sobrescribir ni anexar datos a una lista existente. 4. Revise los campos de la tabla o de la consulta de origen. La tabla siguiente explica cmo se importan determinados elementos y si se deben tomar acciones adicionales en casos especficos. Elemento Campos y registros Resolucin 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 configuracin de filtros durante la operacin de exportacin. Si el objeto de origen tiene ms de una columna adjunta, debe quitar todas las columnas de datos adjuntos excepto una. Esto se debe a que una lista de SharePoint slo puede admitir una columna de datos adjuntos. Si el objeto de origen contiene ms 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 operacin. Para resolver este problema, puede copiar cualquier columna adicional de datos adjuntos en otros objetos de Access y exportarla a otras listas de SharePoint. Los valores de presentacin en los campos de bsqueda de valor nico se exportan como campos de opciones de mens desplegables en la lista de SharePoint. Si el campo de origen admite varios valores, se crea un campo de opcin que permite selecciones mltiples en la lista de SharePoint. NOTA Un campo de opcin de una lista de SharePoint no puede constar de ms de una columna. Si el campo de bsqueda de origen contiene varias columnas, los valores de todas las columnas se combinarn 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 expresin en la que se basan los resultados. Los campos Objeto OLE se omiten durante la operacin de exportacin.

Datos adjuntos

Campos de bsqueda que tienen valores nicos o varios valores

Campos Objeto OLE

5. Si la base de datos de origen no est abierta an, brala y vaya a la siguiente serie de pasos.

108

SENATI-Computacin e Informtica

atos Externos

Exportar los datos 1. En la ficha Datos externos, en el grupo Exportar, haga clic en Lista de SharePoint . Se inicia el Asistente para exportacin. 2. En el cuadro Especifique un sitio de SharePoint , escriba la direccin 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 descripcin para la nueva lista en el cuadro Descripcin y active la casilla de verificacin Abrir la lista al finalizar . 5. Haga clic en Aceptar para iniciar el proceso de exportacin. 6. Access crea una lista en el sitio de SharePoint y muestra el estado de la operacin en la ltima pgina del Asistente. Cuando finaliza la operacin de exportacin, puede cerrar el Asistente o guardar los pasos de la exportacin en una especificacin. Asimismo, durante la operacin, Windows SharePoint Services selecciona el tipo de datos correcto para cada columna basndose en el campo de origen corre spondiente. Para ver una lista de cmo se asignan los tipos de datos de Access y Windows SharePoint Services entre s durante la exportacin de los datos, y qu valores de campo se exportan para cada tipo de datos, vea la seccin Cmo se asignan los tipos de datos de Windows SharePoint Services a los tipos de datos de Access ms adelante en este artculo.

Archivo de texto
En el caso de exportar el contenido de una tabla a un archivo de texto podremos marcar la opcin Exportar datos con formato y diseo .

SENATI-Computacin e Informtica

109

Microsoft Office

Si activamos esta opcin podremos elegir el modo en el que se guarda la informacin en el archivo de texto mediante este cuadro de dilogo:

Aqu podrs seleccionar el tipo de codificacin de los datos de tipo Texto de la tabla. Aunque el predeterminado sea Windows, Unicode (UTF-8) suele ser el formato que mayor compatibilidad presenta. Aunque si tu intencin es seguir trabajando dentro de la plataforma Windows deja la opcin predeterminada seleccionada.

Si no activas la opcin Exportar datos con formato y diseo , se abrir el Asistente para exportacin de texto , que es muy parecido al que hemos visto en el apartado anterior de importacin. Podrs especificar el modo en el que se formatear el archivo de salida e incluso guardar esa especificacin. Indicarle si va a ser Delimitado o de Ancho Fijo.

110

SENATI-Computacin e Informtica

atos Externos

Indicarle el delimitador

Y por ultimo para finalizar, indicarle la ruta donde va a ser guardado el archivo de Texto.

Archivo XML
Para importar a un Archivo XML, seguir los siguientes pasos: 1. Elegir de la Cinta Exportar, la opcin Mas, para luego elegir la opcin Archivo XML

2. Indicarle la ruta y el nombre donde va a exportar


SENATI-Computacin e Informtica 111

Microsoft Office

3. Aceptar la opcin, y aparecer la siguiente ventana

4. Elegir la opcin que ud desea. Y luego cerrar.

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: Tablas, Consultas, Formularios o Macros? 3. Como se denomina al proceso de recoger datos de un programa diferente, pero no los incorpora a su base de datos?

Ejercicios Casos Propuestos


1. Exporte los campos nombre, apellidos, direccin, distrito, Ocupacion de la tabla Datos personales de la Base de Datos Agenda, a Word para la realizacin de una carta tipo Combinacion de Correspondencia. En dicha carta comunicaremos a nuestros clientes la aparicin de un nuevo producto de nuestra empresa.
2. Exporte los campos NombreVideo, IdCategoria, IdProductora de la tabla Video de la Base de Datos Alquiler Videos a Word y realice una tabla adornndola con diferentes opciones de formato.

112

SENATI-Computacin e Informtica

Captulo

Macros y opciones de Inicio


En este captulo aprenderemos:
Crear macros Asignar macros a controles de formulario Personalizar herramientas Definir las opciones de inicio

SENATI-Computacin e Informtica

113

Microsoft Office

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 muchsimas acciones en un solo botn gracias a la integracin de este programa con el lenguaje de programacin Visual Basic y al uso de macros.

El asistente para controles


Cuando, teniendo el asistente activado, intentamos crear un Botn de Comando nos aparece una cuadro de dilogo. Veremos paso a paso cmo deberemos seguirlo para conseguir nuestro objetivo.

En la primera pantalla podremos elegir entre diferentes acciones a realizar cuando se pulse el botn. Como puedes ver en la imagen estas acciones se encuentran agrupada s en Categoras. Selecciona la Categora que creas que se ajusta ms a lo que quieres r ealizar y luego selecciona la Accin en la lista de la derecha. Pulsa Siguiente para continuar.

Ahora podrs modificar el aspecto del botn. Puedes elegir entre mostrar un Texto en el botn, o mostrar una Imagen.

114

SENATI-Computacin e Informtica

ones de Inicio

En el caso de escoger Imagen, podrs seleccionar una entre las que Access te ofrece. Marca la casilla Mostrar todas las imgenes para ver todas las imgenes que Access tiene disponible para los botones. Tambin podras hacer clic en el botn 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 Botn de Comando para poder reconocerlo ms tarde en la lista de controles. Pulsa Finalizar para terminar. Al ser tan fcil aadir Botones de comando con el Asistente este control se convierte en una forma muy verstil de aadir acciones a tus formularios e informes. Como podrs ver en las primeras ventanas del Asistente para controles existen varia s acciones que podrs realizar. Con la categora de Exploracin de registros podrs moverte de forma rpida por todos los datos del formulario, buscando registros o desplazndote directamente a alguno en particular. Utiliza las acciones de Operaciones con registros para aadir nuevos, duplicarlos, eliminarlos, guardarlos o imprimirlos. Del mismo modo podrs jugar con los formularios aplicndoles filtros y actualizndolos. En cualquier momento podrs aadir un botn para abrir, cerrar o imprimir informes, formularios y consultas.

Macros
Las Macros son un mtodo sencillo para llevar a cabo una o varias tareas bsicas como abrir y cerrar formularios, mostrar u ocultar barras de herramientas, ejecutar informes, etc... Tambin sirven para crear mtodos abreviados de teclado y para que se ejecuten tareas automticamente cada vez que se inicie la base de datos. Si guardamos la Macro con el nombre de AutoExec, cada vez que se inicie la base de datos, se ejecutar automticamente. Esto es debido a que Access al arrancar busca un a

SENATI-Computacin e Informtica

115

Microsoft Office

macro con ese nombre, si la encuentra ser el primer objeto que se ejecute antes de lanzar cualquier otro. Esta opcin es muy socorrida a la hora de efectuar comprobaciones o lanzar procesos antes de que el usuario empiece a trabajar con la base de datos. La configuracin por defecto de Access, nos impedir ejecutar ciertas acciones de macro si la base de datos no se encuentra en una ubicacin de confianza, para evitar acciones malintencionadas. Para ejecutar correctamente las macros de bases de datos que consideremos fiables, podemos aadir la ubicacin de sta al Centro de confianza. Crear una Macro Para definir una macro, indicaremos una accin o conjunto de acciones que automatizarn un proceso. Cuando ejecutemos una Macro, el proceso se realizar automticamente sin necesidad, en principio, de interaccin por nuestra parte. Por ejemplo, podramos Macro que abra un cuando el usuario haga botn, o una Macro que nuestros productos. definir una formulario clic en un abra una consulta para subir un diez por cien el precio de

Crear una Macro es relativamente fcil, slo tienes que hacer clic el botn Macro de la pestaa Crear, Cinta Otros, Opcin Macro. Se abrir la Vista de diseo de Macro.

116

SENATI-Computacin e Informtica

ones de Inicio

Esta ventana es muy parecida a la vista Diseo de tabla que ya conoces y tiene la misma dinmica pero ahora en vez de campos lo que definimos son las acciones que queremos que se ejecuten. Como podrs observar, al principio consta de dos columnas: Accin y Comentario, aunque puede que aparezca tambin la columna Argumentos, que se puede mostrar y ocultar, y que explicaremos ms adelante.

En la imagen puedes ver cmo en la columna Accin deberemos seleccionar una accin de entre las existentes en el cuadro desplegable. En la columna Comentario podremos escribir una pequea descripcin opcional sobre el por qu de la accin o un comentario sobre su efecto. Cuando selecciones una Accin en la lista desplegable, en la parte inferior izquierda aparecern sus opciones y a la derecha una descripcin breve de lo que hace la accin.

Podemos aadir tantas acciones como queramos, simplemente deberemos colocarla s una despus de otra y en el orden que queremos que se ejecuten.

SENATI-Computacin e Informtica

117

Microsoft Office

Recuerda que debers 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 accin de apertura debera ir antes de la de cierre. En todo momento podrs utilizar los botones de Insertar o Eliminar filas para insertar nuevas acciones entre dos existentes o eliminar una accin. Para cambiar el orden en el que se encuentren las acciones puedes seleccionar algunas de ellas y arrastrarlas con el ratn para colocarlas en otra posicin. Cuando la Macro est terminada, puede guardarse, ejecutarse y cerrarse. Ms tarde podremos llamarla desde un control Botn 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 ms utilizadas En este apartado veremos las acciones ms utilizadas en las Macros. Siempre puedes recurrir a la ayuda de Access para obtener informacin sobre acciones que aqu no tratemos. Cuando selecciones una Accin en la lista desplegable, en la parte inferior izquierda aparecern sus opciones:

A continuacin veremos las acciones ms comunes, puedes ver la descripcin de sus argumentos de accin haciendo clic en. Abrir Consulta AbrirFormulario AbrirInforme AbrirTabla BuscarRegistro Esta accin abre una consulta escogida entre las existentes en la base de datos. Del mismo modo que la accin anterior, abre un formulario Igual que las acciones anteriores, permite abrir un informe Esta accin permite abrir una tabla. Utilizaremos esta accin para buscar registros. Esta accin busca el primer registro que cumpla los criterios

118

SENATI-Computacin e Informtica

ones de Inicio

especificados. Puedes utilizar esta accin para avanzar en las bsquedas que realices. BuscarSiguiente Se posiciona en el siguiente registro que cumpla con los criterios indicados en la accin BuscarRegistro anterior. No tiene argumentos. Esta accin cancela el evento que produjo la ejecucin de la macro. No tiene argumentos. Con esta accin podrs cerrar cualquier objeto que se encuentre abierto. Con las Macros incluso podremos mostrar mensajes para interactuar con el usuario. Introduce esta accin en una Macro para detener su ejecucin. No tiene argumentos. Vers su utilidad ms adelante. Esta accin detendr todas las Macros que se estn ejecutando en ese momento. No tiene argumentos. Esta accin es muy til para ocultar al usuario las operaciones que se estn realizando con una Macro. Permite la activacin o desactivacin de la visualizacin de las acciones en pantalla. Utiliza esta accin para lanzar comandos que puedas encontrar en cualquier barra de herramientas. Una accin muy til que te permitir modificar los valores de los campos. Te permitir saltar a un registro en particular dentro de un objeto. Esta accin maximiza la ventana activa para que ocupe todo el espacio de la ventana de Access. Al contrario que la anterior, esta accin minimiza la ventana activa convirtindola en una barra de ttulo en la parte inferior de la ventana de Access. Esta accin hace que Access se cierre.

CancelarEvento Cerrar CuadroMsj DetenerMacro

DetenerTodasMacros *Eco

EjecutarComando *EstablecerValor IrARegistro Maximizar Minimizar

Salir

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

Acciones Condicionadas Ahora que ya conocemos las acciones y cmo introducirlas y ordenarlas, veremos un modo que nos ayudar a crear acciones con muchas posibilidades. Para ello utilizaremos las condiciones.

SENATI-Computacin e Informtica

119

Microsoft Office

Puedes activar este modo haciendo clic en el botn de Condiciones en la Ficha de Diseo.

La vista de Diseo de Macro cambiar para tomar este aspecto (observa como se ha aadido una columna a la izquierda):

En esta columna podremos introducir condiciones para que la accin establecida en la fila se ejecute o no segn el resultado de la condicin. Por ejemplo si escribimos [Formularios]![Clientes]![IDCliente]=4 en la columna Condicin, su accin slo se ejecutar en el caso de que la condicin sea afirmativa, es decir, que el IDCliente sea igual a 4.

Esto nos abre muchas posibilidades, sobre todo si lo combinamos con los puntos suspensivos (...).

120

SENATI-Computacin e Informtica

ones de Inicio

Si escribimos una condicin y resulta verdadera se ejecutar la accin que se encuentre en la misma fila, Pero qu pasa si queremos que la condicin ejecute ms de una accin? Muy fcil, escribe puntos suspensivos en la columna Condi cin para todas aquellas acciones siguientes que quieres que se ejecuten al resultar afirmativa la condicin. Si la condicin diese como resultado falso, la Macro saltar a la siguiente accin que no tenga puntos suspensivos en la columna Condicin. En el campo Condicin tambin podemos incluir expresiones ms complejas, como: [Formularios]![Cursos]![Fecha Inicio] Entre #2 -Mar-2006# Y #9-Nov-2007# para indicar si la fecha se encuentra en un intervalo, o EsNulo ([Formularios]![Cursos]![nhoras]) para realizar la accin si no hay nada guardado en el campo nhoras. 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 prximas pginas que podemos crear grupos de macros y definir bucles repetitivos que nos permitirn realizar operaciones mucho ms 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 ms cmodo agrupar los archivos en carpetas, puede ser til agrupar nuestras macros en grupos de macros que contengan macros relacionadas. Tambin 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 opcin Nombres de macro en la pestaa Diseo.

Si activas el botn vers que la Vista de Diseo de Macros cambia para aadir una nueva columna a la izquierda:

SENATI-Computacin e Informtica

121

Microsoft Office

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

Macro1 aparecer en la ventana Base de Datos como una macro, pero realmente ser un grupo de macros formado por las macros nombre1, nombre2 y nombre3. A partir de este momento podremos ejecutar las acciones AgregarMenu, CuadroMsj, y Beep simplemente llamando a la macro Macro1.nombre2. Sencillo, verdad? Observa que para llamar a una macro que forma parte de un grupo de macros, hay que primero indicar el nombre del grupo y despus el nombre de la macro separados por un punto.

Crear Bucles Si una macro se puede asemejar a un programa porque consiste en una serie de acciones que se ejecutan segn un determinado orden, y que adems incluye alternativas (gracias a la columna Condicin), nos faltaba un concepto imprescindible en programacin, el concepto de estructuras repetitivas (bucles). Pues bien, ahora aprenderemos una nueva accin que nos permite en cierta medida resolver el problema. Se trata de la accin EjecutarMacro.

EjecutarMacro: Nos da la posibilidad de llamar a una macro desde dentro de otra macro y repetir la ejecucin de dicha macro, definiendo as un bucle repetitivo.

122

SENATI-Computacin e Informtica

ones de Inicio

Para ello deberemos especificar el Nombre de macro que queremos ejecutar. Por ejemplo, en el caso anterior, Macro1, Macro1.nombre1, Macro1.nombre2 o Macro1.nombre3. Podemos indicar que la Macro se ejecute ms de una vez escribiendo en Nmero de repeticiones un nmero que indique cuntas veces queremos que se repita la ejecucin de la macro (el nmero deber ser mayor que 1). En Expresin de repeticin podremos introducir una expresin condicional para que se repita la ejecucin de la macro mientras la condicin se cumpla (sea verdadera). Se evala la condicin antes de ejecutar la macro as que si al empezar, la condicin no se cumple, la macro no se ejecutar. Ojo con los bucles infinitos! si utilizas el argumento Expresin de repeticin la condicin que pongas deber depender de un parmetro que cambie dentro de la macro que se repite, sino podrs entrar en un bucle que no se acabe nunca!! Para componer la condicin se nos dar la opcin de utilizar el Generador de Expresiones. Ahora veremos una estructura que ilustrar el u so de la combinacin de ambas tcnicas.

Como puedes ver en la imagen, si reproducimos esta estructura seremos capaces de generar un bucle. Veamos que hemos hecho. En un punto de la macro necesitamos ejecutar unas acciones que se repitan hasta determinado momento. Para lograrlo lo que hacemos es incluir una llamada a la macro bucle que se encuentra en Macro1. Por lo que en el argumento Nombre de macro de la accin EjecutarMacro escribiremos Macro1.bucle. En el argumento Expresin de repeticin escribiremos la condicin que ha de cumplirse para que se vuelva a repetir el proceso. En caso de que la condicin sea falsa, el proceso dejar de repetirse y continuar con la lista de acciones que siguen hasta la accin Detener Macro que terminar la ejecucin de la macro.

SENATI-Computacin e Informtica

123

Microsoft Office

Observa que al final de la macro Macro1.bucle, hemos incluido la accin Cerrar, si como argumento de la accin pusisemos la macro Macro1, este bloque solamente se ejecutara como mucho una vez ya que la macro se cerrara antes de que se pueda repetir el bloque.

Depuracin de errores Cuando creamos una Macro con diferentes condiciones y saltos de ejecucin puede que al final la comprobacin de que acta correctamente sea cada vez ms difcil. Access incorpora una herramienta que permite seguir la ejecucin de la Macro paso a paso pudiendo en cada momento ver qu procesos se estn llevando a cabo y los resultados que recibe de la base de datos. Para activar esta opcin solamente deberemos de hacer clic sobre el botn de Paso a paso en la pestaa Diseo. Una vez activada, cada vez que se ejecute una macro en el sistema lo har en modo Paso a paso. Cuando una Macro se ejecuta de este modo para cada accin que realiza produce una salida de informacin que nos llega a modo de Cuadro de dilogo:

Como puedes ver en la imagen este cuadro de dilogo te mostrar el Nombre de la macro que se est ejecutando. Si tiene condicin, y en caso afirmativo, en qu consiste dicha condicin y su estado de coincidencia (Verdadero: o Falso:).Tambin podrs ver el Nombre de la accin que se va a ejecutar, y los Argumentos que tiene. En la imagen la funcin EstablecerValor cambiara el valor del campo Nombre Curso a "Diseo Web" si la condicin no hubiese dado falso. Para continuar con la reproduccin Normal de la Macro pul sa Continuar. Si pulsas Paso a Paso seguirs en el mismo modo. Puedes detener la Macro pulsando el botn Detener. En cualquier momento en la reproduccin de una Macro puedes detenerla tambin utilizando la combinacin de teclas CTRL + INTRO. Esto te puede ser muy til si una Macro entra en un bucle infinito y el sistema deja de responder.

124

SENATI-Computacin e Informtica

ones de Inicio

AutoKeys o Mtodos abreviados de Teclado Las Macros tambin te permitirn crear mtodos abreviados de teclado. Esto es, podremos asignar a travs de una Macro diferentes acciones mediante una combinacin de teclas. El modo de construir una Macro que acte de este modo es muy sencillo. Slo tendrs que seguir los siguientes pasos: 1. Crea una nueva Macro y llmala AutoKeys. 2. Activa la opcin Nombres de Macro para aadir la columna con el mismo nombre.

3. En la columna Nombre de Macro debers indicar la combinacin de teclas que activarn las acciones que escribas en la columna Accin. De este modo podrs crear varias combinaciones y asignarlas a un grupo de acciones.

En vez de Combinacin1, Combinacin2, Combinacin3, etc... Debers escribir la combinacin de teclas que quieres que ejecuten las acciones, siguiendo la sintaxis que encontrars en la siguiente tabla: Sintaxis de la Combinacin Combinacin de Teclas ^C or ^1 {F3} ^{F3} +{F3} CTRL+C CTRL+1 F3 CTRL+F3 MAYUS+F3

SENATI-Computacin e Informtica

125

Microsoft Office

{INSERT} ^{INSERT} +{INSERT}

INSERT CTRL+INSERT MAYUS+INSERT

El modo en el que indicaremos las combinaciones es muy sencillo. Simplemente tendremos que escribir los nombres de las teclas que forman la combinacin en la columna Nombre de Macro. Lo nico que debers tener en cuenta es que la tecla CTRL se escribir como ^, y la tecla MAYUS como +. Las teclas que contengan ms de una letra debern ir encerradas entre llaves {} para que no se confundan c on combinaciones. Por ejemplo, END sera el equivalente a la combinacin de teclas E+N+D, mientras que {END} equivaldra a pulsar la tecla FIN. Es interesante asociar combinaciones de teclas a la accin EjecutarMacro para permitir lanzar una macro con slo pulsar unas teclas.

Asignar macros a controles en formularios


Despus de haber creado las macros usted debe hacer que se activen a travs de los objetos en sus formularios. Por ejemplo puede obligar a que al pulsar un botn de comando se active una macro. Para configurar que la ejecucin de una macro se realice cuando se haga clic en un control de un formulario: 1. Muestre la vista diseo del formulario. 2. Muestre las propiedades del control (puede hacer clic derecho sobre l y luego activar el comando Propiedades). 3. Active la ficha Eventos.

4. Haga clic en el control ubicado a la derecha de Al hacer clic. 5. Despliegue la lista y elija el nombre de la macro que desea ejecutar mediante el control elegido.

126

SENATI-Computacin e Informtica

ones de Inicio

6. Muestre la vista diseo del formulario, pruebe la asociacin que ha realizado, guarde el formulario y cirrelo
a. Botones de comando

Asociar una macro con un botn de comando En la base de datos Pedidos, usted configurar el formulario de bienvenida para que al hacer clic en el botn Aceptar se cierre este formulario y se abra el Panel de control. Procedimiento Muestre la vista diseo del formulario Panel de control. Haga clic derecho sobre el botn de comando y luego active el comando Propiedades (deber utilizar la barra de desplazamiento vertical del formulario para ver el botn de comando) Active la ficha Eventos. Haga clic en el control ubicado a la derecha de Al hacer clic. Despliegue la lista y elija Cerrar bienvenida y Abrir Panel

SENATI-Computacin e Informtica

127

Microsoft Office

Elegir la macro que se ejecutar Muestre la vista diseo del formulario y haga clic sobre el botn. Cuando realice esta accin se cerrar el formulario de bienvenida, se guardar automticamente y se abrir el formulario Panel de control.
b. Etiquetas

Asociar macros a etiquetas En la base de datos Pedidos, usted configurar el formulario Panel de control para que al hacer clic en sus etiquetas se abran los formularios e informes a los que se refieren. Procedimiento Muestre la vista diseo del formulario. Muestre la ventana de propiedades para la etiqueta Catlogo de productos y en su evento Al hacer clic indique que se debe ejecutar la macro Abrir formulario Productos . Sin cerrar la ventana de propiedades, haga clic en la etiqueta Pedidos en el formulario; nuevamente en la ventana de propiedades, indique que se debe ejecutar la macro Abrir formulario Pedidos en el evento Al hacer clic. Asocie el resto de etiquetas en forma anloga a la indicada en el paso 3 Cierre la ventana de propiedades. Muestre la vista formulario y pruebe las etiquetas.

Macro Autoexec
Si ya ha creado una macro que contiene las acciones que desea que se produzcan al iniciarse la base de datos, simplemente cambie el nombre de la macro a AutoExec, y se ejecutar la prxima vez que abra la base de datos. De lo contrario, siga estos pasos para crear una macro: 1. En el grupo Otros de la ficha Crear, haga clic en Macro. Si el comando no est disponible, haga clic en la flecha situada debajo del botn Mdulo o Mdulo de clase y, a continuacin, haga clic en Macro. 2. En el Generador de macros, en la primera celda Accin vaca, seleccione la accin que desea realizar. Cuando corresponda, dentro de Argumentos de accin, escriba los valores apropiados en los cuadros para argumentos. Si no encuentra la accin deseada, en la ficha Diseo, en el grupo Mostrar u ocultar, asegrese de que est seleccionado Mostrar todas las acciones. Esto ampla la lista de acciones que se pueden utilizar, pero tambin se incluirn algunas acciones que solamente se pueden ejecutar si la base de datos est designada como "de confianza". Para obtener ms informacin, vea los artculos Decidir si se debe confiar en una base de datos o Cmo se comportan los objetos de base de datos cuando son de confianza y cuando no lo son .

128

SENATI-Computacin e Informtica

ones de Inicio

3. Repita el paso 2 para cada accin adicional que desee que se produzca. 4. Haga clic en Guardar, y en el cuadro de dilogo Guardar como , escriba AutoExec. 5. Haga clic en Aceptar y luego cierre el Generador de macros. La nueva macro se ejecutar la prxima vez que abra la base de datos. Para obtener ms informacin sobre la creacin de macros, vea el artculo Crear una macro. Para omitir la macro AutoExec y otras opciones de inicio, mantenga presionada la tecla MAYS mientras se inicia la base de datos. Para obtener m s informacin, vea el artculo 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 continuacin, adjuntar las macros o cdigo VBA a los eventos AlAbrir o AlCargar del formulario. Para obtener m s informacin, vea el artculo Establecer el formulario predeterminado que aparece cuando se abre una base de datos.

Opciones de exploracin
Cuando se crea una categora personalizada, se crea para la base de datos que est abierta y la categora est ligada a esa base de datos. No se pueden transferir categoras y grupos personalizados a otras bases de datos. Para crear y administrar categoras y grupos personalizados, se utiliza el cuadro de dilogo Opciones de exploracin . stos son los pasos generales del proceso: Primero, se crea una categora personalizada. Access proporciona la categora: Personalizado. Puede cambiar el nombre de esa categora y, a continuacin, agregar o quitar grupos segn sus necesidades, o bien, puede crear una nueva categora en cualquier momento. Tras la creacin de una categora, se crea uno o varios grupos para la nueva categora. Cierre el cuadro de dilogo Opciones de exploracin y, en el panel de exploracin, 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 categora 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, slo al acceso directo a dicho objeto. Tras rellenar los grupos personalizados, puede ocultar el grupo Objetos no asignados y todos los dems grupos que no desee mostrar.

SENATI-Computacin e Informtica

129

Microsoft Office

Crear Categoras
1. Haga clic con el botn secundario del mouse en el men de la parte superior del panel de exploracin y, a continuacin, haga clic en Opciones de exploracin.

2. En el cuadro de dilogo Opciones de exploracin , bajo la lista Categoras, haga clic en Agregar elemento. Aparecer una nueva categora en la lista.

Esta figura ilustra una nueva categora personalizada:

130

SENATI-Computacin e Informtica

ones de Inicio

3. Escriba un nombre para la nueva categora y, a continuacin, presione ENTRAR. Procure usar un nombre que tenga sentido para los usuarios de la base de datos. Tras crear el nombre, observe que el ttulo de la lista a la derecha cambia para reflejar ese nombre. Por ejemplo, si asigna el nombre Mi panel de control a la nueva categora, el ttulo de la lista a la derecha ser Grupos de "Mi 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.

Tras crearse la categora personalizada, se crea uno o varios grupos para dicha categora. Se pueden crear tantos grupos como sean necesarios. Mantenga abierto el cuadro de dilogo Opciones de exploracin y siga los procedimientos que se detallan a continuacin

Crear un grupo personalizado 1. Bajo la lista Grupos de "nombre de grupo ", haga clic en Agregar grupo y, a continuacin, 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.

SENATI-Computacin e Informtica

131

Microsoft Office

2. Mantenga activada la casilla de verificacin situada junto a Objetos no asignados y haga clic en Aceptar. Access cierra el cuadro de dilogo Opciones de exploracin y agrega el nuevo grupo personalizado al panel de exploracin, pero an no podr ver el nuevo grupo. 3. Siga los procedimientos descritos a continuacin para poder ver el nuevo grupo y agregar objetos al grupo.

Agregar objetos a un grupo personalizado 1. Haga clic en el men situado en la parte superior del panel de exploracin y, en la seccin superior del men, haga clic en la nueva categora. Los grupos creados para la categora aparecen en la seccin 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 continuacin, muvalos 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 continuacin, arrastrar los elementos hasta el grupo personalizado. Hacer clic con el botn secundario del mouse (ratn) en uno de los elementos seleccionados, elegir Agregar al grupo y, a continuacin, hacer clic en el nombre del grupo personalizado. Cuando finalice, podr dejar visible el grupo Objetos no asignados en el panel de exploracin u ocultarlo.

132

SENATI-Computacin e Informtica

ones de Inicio

Ocultar el grupo Objetos no asignados 1. Haga clic con el botn secundario del mouse en el men de la parte superior del panel de exploracin y haga clic en Opciones de exploracin. 2. En el panel Grupos de categora, desactive la casilla de verificacin Objetos no asignados .

Despus de crear una categora 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 cmo realizar esta operacin. Crear un nuevo grupo personalizado mediante un objeto de un grup o personalizado existente Para usar esta tcnica, primero debe crear una categora personalizada y agrupar los objetos siguiendo los procedimientos descritos en las secciones anteriores. 1. Con una categora y un grupo personalizados abiertos en el panel de exploracin, haga clic con el botn secundario del mouse en el objeto que desee colocar en un grupo nuevo. 2. Elija Agregar al grupo y, a continuacin, haga clic en Nuevo grupo. Aparecer un grupo nuevo en el panel de exploracin

SENATI-Computacin e Informtica

133

Microsoft Office

Escriba un nombre para el nuevo grupo y, a continuacin, arrastre accesos directos adicionales al nuevo grupo, segn sea necesario.

Mostrar u ocultar los grupos y objetos de una categora Es posible ocultar algunos o todos los grupos de una categora 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 exploracin para ocultar un objeto de su grupo y categora primarios, o bien, se puede elegir una propiedad de cada objeto y ocultarla de todos los grupos y categoras de la base de datos abierta. Los objetos y grupos ocultos pueden quedar totalmente invisibles, o bien, se pueden mostrar en el panel de exploracin como iconos atenuados y no disponibles. Para ello, active o desactive la casilla de verificacin Mostrar objetos ocultos en el cuadro de dilogo Opciones de exploracin . Esta casilla de verificacin se usa tambin para mostrar o restaurar un grupo u objeto. Los pasos que se describen en las siguientes secciones indican cmo se lleva a cabo cada tarea.

Ocultar un grupo en una categora En el panel de exploracin, haga clic con el botn secundario del mouse en la barra de ttulo del grupo que desee ocultar y, a continuacin, haga clic en Ocultar. Para realizar esta tarea tambin puede usar el cuadro de dilogo Opciones de exploracin. Abra el cuadro de dilogo (vea los pasos descritos en la siguiente seccin si no sabe cmo hacerlo) y, en la lista Grupos de "categora", desactive la casilla de verificacin situada junto al grupo que desee ocultar.

Restaurar un grupo oculto en una categora 1. Haga clic con el botn secundario del mouse en la barra de mens de la parte superior del panel de exploracin y, a continuacin, haga clic en Opciones de exploracin en el men contextual. 2. En la lista Categoras , seleccione la categora que contenga el grupo oculto. 3. En la lista Grupos de "categora ", active la casilla de verificacin situada junto al grupo oculto. 4. Haga clic en Aceptar.

Ocultar un objeto en su grupo primario En el panel de exploracin, haga clic con el botn secundario del mouse en el objeto y, a continuacin, haga clic en Ocultar.

134

SENATI-Computacin e Informtica

ones de Inicio

Ocultar un objeto de todos los grupos y categoras 1. Haga clic con el botn secundario del mouse en el objeto que desee ocultar y, a continuacin, haga clic en Propiedades del objeto . Aparecer el cuadro de dilogo Propiedades y Access agregar el nombre del objeto al ttulo del cuadro de dilogo. Por ejemplo, si abre un formulario denominado Pedidos, el ttulo del cuadro de dilogo ser Propiedades de Pedidos. La siguiente figura muestra el cuadro de dilogo.

2. Active la casilla de verificacin Oculto. 3. Haga clic en Aceptar. Restaurar o mostrar un objeto oculto 1. Haga clic con el botn secundario del mouse en el men de la parte superior del panel de exploracin y haga clic en Opciones de exploracin en el men contextual. 2. Bajo Opciones de presentacin, active la casilla de verificacin Mostrar objetos ocultos. 3. Haga clic en Aceptar y vuelva al panel de exploracin. En el panel se muestra un icono atenuado para todos los objetos ocultos. 4. Siga uno de estos procedimientos: Si ocult el objeto nicamente de su grupo y categora primarios, haga clic con el botn secundario del mouse en el objeto y, a continuacin, haga clic en Mostrar . Si ocult el objeto de todas las categoras y todos los grupos estableciendo la propiedad Oculto, haga clic con el botn secundario del mouse en el objeto, haga clic en Propiedades de vista y, a continuacin, desactive la casilla de verificacin Oculto.

SENATI-Computacin e Informtica

135

Microsoft Office

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 quita r los objetos de un grupo en cualquier momento. Los siguientes procedimientos indica n cmo hacerlo.

Eliminar objetos de un grupo personalizado En el panel de exploracin, haga clic con el botn secundario del mouse en el objeto que desee quitar y, a continuacin, haga clic en Eliminar.

Restaurar un objeto en un grupo personalizado 1. Si est oculto el grupo Objetos no asignados, mustrelo. a. Haga clic con el botn secundario del mouse en el men de la parte superior del panel de exploracin y haga clic en Opciones de exploracin en el men contextual. b. En el panel Grupos de "categora", active la casilla de verificacin situada junto a Objetos no asignados. 2. Segn 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 exploracin, haga clic con el botn secundario del mouse en el objeto cuyo nombre desee cambiar y, a continuacin, haga clic en Cambiar nombre de acceso directo . Escriba el nuevo nombre del acceso directo y, a continuacin, presione ENTRAR

Cambiar entre categoras


Para cambiar entre categoras, solo hay que hacer clic en el Men de Categoras y elegir la Categora de su Preferencia

136

SENATI-Computacin e Informtica

ones de Inicio

Ordenar categoras
Haga clic con el botn secundario del mouse en el men de la parte superior del panel de exploracin y elija Ordenar por.. Elegir la Opcin que desee

Vistas
Haga clic con el botn secundario del mouse en el men de la parte superior del panel de exploracin y elija Vista por:

Opciones de la base de datos


Formulario o pgina 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 diseado el Panel de Control en este captulo). Usted puede configurar el comportamiento de Access al abrirse una base de datos de la siguiente manera: 1. Haga clic en la ficha Complementos, men Herramientas y luego active la opcin Inicio

SENATI-Computacin e Informtica

137

Microsoft Office

Usted ver aparecer el cuadro de dilogo Inicio.

2. Especifique la configuracin que desee establecer y haga clic en Aceptar. 3. Cierre la base de datos y vuelva a abrirla para ver el efecto de su configuracin.

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.

Finalizar el trabajo Usted har que al abrir la base de datos Pedidos: La barra de ttulo muestre el texto Comercial Duop . Se muestre el formulario Bienvenido. No se muestre la ventana Base de datos. Se muestre la barra de mens hrrComercial en lugar de la barra de mens predeterminada. Se impida ver la ventana Base de datos pulsando la tecla F11.

138

SENATI-Computacin e Informtica

ones de Inicio

Procedimiento 1. Haga clic en la ficha Complementos, el men Herramientas y luego active la opcin Inicio. 2. Realice las siguientes acciones en el cuadro de dilogo: a. Escriba Comercial Doup en la caja de texto Ttulo de la aplicacin. b. En el cuadro combinado Mostrar Formulario/Pgina , seleccione Inicio. c. En el cuadro mnuComercial. combinado Barra de mens (sic), seleccione

d. Desactive la casilla Usar las teclas especiales de Access . 3. Haga clic en el botn Aceptar. 4. Cierre la base de datos y vuelva a abrirla para ver el efecto de su configuracin.

Agregar barra de mens personalizada.


Puede utilizar macros de Access para crear mens contextuales personalizados que aparezcan al hacer clic con el botn secundario en formularios, informes o controles individuales. Tambin puede crear mens personalizados que aparezcan en la cinta de formularios o informes especficos. Para crear un men mediante macros, son necesarios tres pasos principales: 1. Crear un grupo de macros para definir los comandos del men. 2. Crear otra macro para construir el propio men. 3. Adjuntar el men a un control, un formulario, un informe, o a la base de datos como un todo. En las secciones siguientes, se explican estos pasos en detalle.

Paso 1: Crear un grupo de macros que contenga los comandos del men En este paso, se crea un grupo de macros, cada una de las cuales ser un comando independiente en el men contextual. Qu es un grupo de macros? a. En el grupo Otros de la ficha Crear , haga clic en Macro. Si el comando no est disponible, haga clic en la flecha situada debajo del botn Mdulo o Mdulo de clase y, a continuacin, haga clic en Macro. b. En el grupo Mostrar u ocultar de la ficha Diseo, haga clic en Nombres de macro para mostrar la columna Nombres de macro. c. Para cada comando que desee agregar al men contextual personalizado:

SENATI-Computacin e Informtica

139

Microsoft Office

En la columna Nombre de macro, escriba el texto que desee que aparezca en el men contextual (por ejemplo, "Imprimir informe" o "Guardar"). Si desea crear una tecla de acceso de modo que se pueda elegir el comando con el teclado, escriba el smbolo & delante de la letra que desea designar como tecla de acceso en el nombre del comando (por ejemplo "&Guardar"). Esta letra aparecer subrayada en el men. En la columna Accin, seleccione la primera accin que desea que se produzca al hacer clic en el comando dentro del me n contextual. Si desea que se ejecuten ms acciones al seleccionar este comando, agrguelas en las lneas siguientes. En todas las acciones siguientes, deje vaca la celda Nombre de macro. Para crear una lnea entre dos comandos del men, escriba un guin (-) en la columna Nombre de macro entre los comandos de men correspondientes. d. Guarde la macro con algn mcrComandosMenContextual. nombre, por ejemplo,

La ilustracin siguiente muestra un ejemplo de grupo de macros para un men personalizado o contextual.

Paso 2: Crear una macro para construir el men Este paso puede parecer redundante, pero para construir el men contextual a partir del grupo de macros creado en el paso 1, debe crear una segunda macro que contenga la accin de macro AgregarMen . Esta macro se denomina a veces "macro de men". a. En el grupo Otros de la ficha Crear, haga clic en Macro. Si el comando no est disponible, haga clic en la flecha situada debajo del botn Mdulo o Mdulo de clase y, a continuacin, haga clic en Macro. b. En la primera lnea de la macro, seleccione AgregarMen en la lista Accin. c. En Argumentos de accin, en el cuadro Nombre del men, escriba el nombre del men (por ejemplo, "Comandos de
140 SENATI-Computacin e Informtica

ones de Inicio

informe"). Este argumento no es obligatorio, pero se recomienda por si en el paso 3 quisiera agregar el men a una ficha de la cinta (por ejemplo, la ficha Complementos de un informe o formulario). Si en el paso 3 agrega el men como men contextual, el argumento Nombre del men no se tendr en cuenta. d. En el cuadro Nombre de macro de men, escriba el nombre de la macro creada en el paso 1. e. Guarde la macro con algn mcrAgregarMenContextual. nombre, por ejemplo,

La ilustracin siguiente muestra un ejemplo de macro de men que crea el men diseado en el paso 1.

Paso 3: Adjuntar el men a un control, formulario, informe o base de datos Segn dnde desee que aparezca el men, siga uno o varios de los procedimientos siguientes.

Agregar el men a la ficha Complementos de un formulario o informe Utilice este procedimiento si desea que el men aparezca en la ficha Complementos de un formulario o informe en particular, como se muestra en la ilustracin siguiente:

a. En el panel de navegacin, haga clic con el botn secundario en el formulario o el informe donde desea que aparezca el men y, a continuacin, haga clic en Vista Diseo. b. En la ficha Diseo, en el grupo Mostrar u ocultar, haga clic en Hoja de propiedades. c. Para seleccionar todo el objeto, seleccione Formulario o Informe en la lista que aparece en la parte superior del panel de tareas Hoja de propiedades. d. En la ficha Otras de la hoja de propiedades, en el cuadro de propiedad Men contextual, escriba el nombre de la macro que cre en el paso 2 (en este ejemplo, mcrAgregarMenContextual).

SENATI-Computacin e Informtica

141

Microsoft Office

La prxima vez que abra el formulario o informe, la ficha Complementos aparecer en la cinta. Haga clic en la ficha para ver el men. Para obtener ms informacin sobre tcnicas de personalizacin de la cinta, por ejemplo agregar fichas personalizadas u ocultar las fichas predeterminadas, vea el artculo Personalizar la cinta de opciones.

Agregar el men como men contextual de un formulario, informe o control Utilice este procedimiento si desea que el men aparezca al hacer clic con el botn secundario en un formulario, informe o control especficos, como se muestra en la ilustracin siguiente:

a. En el panel de navegacin, haga clic con el botn secundario en el formulario o el informe donde desea que aparezca el men y, a continuacin, haga clic en Vista Diseo. b. En la ficha Diseo, en el grupo Mostrar u ocultar, haga clic en Hoja de propiedades. c. Seleccione el control u objeto al que desea adjuntar el men contextual. d. Para seleccionar todo el objeto, seleccione Formulario o Informe en la lista que aparece en la parte superior del panel de tareas Hoja de propiedades. e. En la ficha Otras de la hoja de propiedades, en el cuadro de propiedad Barra de mens contextuales, escriba el nombre de la macro que cre en el paso 2 (en este ejemplo, mcrAgregarMenContextual).

Agregar el men como men contextual global Este procedimiento reemplaza todos los mens contextuales predeterminados de la base de datos actual. Los mens contextuales personalizados que haya vinculado a formularios, informes o controles especficos no se vern afectados. a. Haga clic en el botn de Microsoft Office Opciones de Access. y, a continuacin, haga clic en

b. En el cuadro de dilogo Opciones de Access, haga clic en Base de datos actual. c. En Opciones de barra de herramientas y de la cinta de opciones , en el cuadro Barra de mens contextuales, escriba el nombre de la macro que cre en el paso 2 (en este ejemplo, mcrAgregarMenContextual). Los mens contextuales personalizados sustituyen a los mens contextuales predeterminados de los objetos a los que se asocien. Si desea
142 SENATI-Computacin e Informtica

ones de Inicio

conservar algunos comandos de Access para utilizarlos en estos mens, use la accin EjecutarComando para colocar los comandos dentro de los grupos de macros de los mens donde los desee. Un men contextual personalizado asociado a un control reemplaza cualquier otro men contextual personalizado definido en la base de datos. Un men contextual personalizado asociado a un formulario o informe reemplaza un men contextual global personalizado. Cuando se especifica una macro de men para un formulario, un informe o para la base de datos, Access ejecuta esta macro de men siempre que se abre el formulario, el informe o la base de datos. Si modifica la macro de men o el grupo de macros que definen los comandos mientras el formulario, el informe o la base de datos estn abiertos, deber cerrarlos y volverlos a abrir para ver los cambios. Para crear un submen (submen: men que aparece cuando un usuario selecciona un comando en un men de nivel superior.) , siga el paso 1 para crear un grupo de macros independiente que slo contenga los comandos del submen. A continuacin, siga nuevamente el paso 1 para definir los comandos del men de nivel superior. Agregue el submen como un elemento en el grupo de macros de nivel superior, mediante la accin de macro AgregarMen. La ilustracin siguiente muestra el grupo de macros de un men que contiene un submen y, a continuacin, muestra el men contextual resultante. La tercera lnea en el grupo de macros crea el submen Exportar a... (mcrSubMen).

Puede crear varios niveles de submens mediante acciones AgregarMen en los grupos de macros de cada nivel de men. No olvide suministrar un valor para el argumento Nombre del men de cada accin AgregarMen, ya que de lo contrario el submen aparecer como una lnea vaca en el men de nivel superior.

SENATI-Computacin e Informtica

143

Microsoft Office

Slo se admiten condiciones en la macro de men de nivel superior. Dicho de otro modo, puede usar una condicin en una macro de men para determinar si un men o men contextual determinados aparecern, pero solamente para los mens en el nivel superior. No se pueden usar condiciones para mostrar ni ocultar comandos o submens en los mens. Tambin puede utilizar una condicin para mostrar u ocultar un men contextual personalizado o un men contextual global. De manera opcional, la macro de men que cree en el paso 2 puede formar parte de un grupo de macros. Por ejemplo, si tiene varios mens contextuales para diferentes objetos o controles, puede crear un nico objeto de macro que contenga todas las macros de men necesarias. Asegrese de mostrar la columna Nombre de macro y de escribir un nombre distinto para cada macro. En el paso 3, use este formato para hacer referencia a la macro: nombredegrupodemacros.nombredemacro. Por ejemplo, mcrAgregarMensContextuales.AgregarMen2.

Preguntas de Repaso
1. Qu es una macro? 2. Cmo se crea una macro? 3. Cmo se asigna una macro a una etiqueta en un formulario? 4. Cmo se asigna una macro a un botn de comando en un formulario? 5. Cmo se crea una barra de herramientas? 6. Cmo 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


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 Categoras b. El formulario Usuarios c. El informe Prstamos. 2. Cree una barra de herramientas que abra al formulario Panel de control y a los objetos mencionados en la pregunta 1 de esta actividad.

144

SENATI-Computacin e Informtica

Captulo

Programacin con VBA


En este captulo aprenderemos:
Agregar controles ActiveX Programacin de controles y procesos con VBA

SENATI-Computacin e Informtica

145

Uso de VBA en Access


VBA quiere decir Visual Basic para Aplicaciones. Es un conjunto de libreras, (un tipo especial de programas), desarrollado por Microsoft que incluye, entre otras cosas, un entorno de desarrollo y un lenguaje de programacin. VBA no es exclusivo de Access; lo podemos encontrar tambin en todas las aplicaciones de Office como Word o Excel, en otro tipo de programas como 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 podra desarrollar aplicaciones en cualquiera de esos aplicativos. VBA tiene un entorno de programacin que es semejante para todos estos programas. Por ejemplo:

VBA para Access

VBA para MS Word

VBA para Corel Draw

VBA para AutoCAD

SENATI-Computacin e Informtica

147

Microsoft Office

Los mdulos Los mdulos son los objetos en los que se guarda el cdigo que va a utilizar VBA. Hay tres tipos de mdulos.
Mdulos generales

Mdulos asociados a formularios e informes Mdulos de Clase.

Actividad 1: Crear un Formulario


Manos a la obra: vamos a crear una nueva base de datos con el nombre Entrega01.mdb

Para acceder a los mdulos generales debemos presionar en la Ficha Crear, y luego la Cinta Otros, para luego elegir Modulo.

148

SENATI-Computacin e Informtica

c n con VBA i

Una vez hecho esto se abre el editor de VBA y nos crea un mdulo con el original nombre de Mdulo1.

Este mdulo est vaco, salvo la primera Linea: Option Compare Database Desde la ventana del editor que se ha abierto, presionamos la opcin de men: Herramientas > Opciones

En el formulario que aparece activaremos la opcin [Requerir declaracin de variables].

SENATI-Computacin e Informtica

149

Microsoft Office

Le damos a Aceptar. Pero qu es esto?Cuando empecemos a escribir cdigo, veremos que existen unos elementos que se llaman variables, a los que podremos asignar valores. Si tenemos activada la opcin [Requerir declaracin de variables] nos obligar a declarar las variables antes de poder usarlas. Ms adelante veremos que hay variables que pueden contener Texto, Nmeros, Fechas, Objetos, etc. Esto significa darle nombre y expresar qu tipo de dato va a contener. Una vez hecho esto grabamos el mdulo dndole al botn Guardar a la opcin de men Archivo, Guardar combinando las teclas [Ctrl] + [S]

Aceptamos el nombre por defecto Mdulo1 y cerramos la ventana. 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 botn Cerrar

Nuestro primer formulario con cdigo Vamos a crear un nuevo formulario que lo vamos a llamar Saludo. Para que nos de plena libertad de actuacin, vamos a desactivar el botn del [Asistente para controles]

150

SENATI-Computacin e Informtica

c n con VBA i

1. Nos vamos a la Ficha Crear , Cinta Formularios y hacer clic en Diseo del Formulario 2. Lo guardamos como Saludo

3. Aadimos una Etiqueta al formulario.

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 tena por defecto: Etiqueta1. b. Desde la Ficha [Formato] le ponemos a la propiedad [Ttulo] el valor Saludo, a la propiedad [Tamao de la fuente] el valor 24, y al [Color de texto] el valor 255 (Rojo) y a la [Alineacin del texto] el valor Centro. 4. Aadimos un Botn y le ponemos como [Nombre], en vez de Comando2, cmdSaludo 5. Seleccionamos el Formulario y ponemos a No las propiedades [Selectores de registro], [Botones de desplazamiento] y Separadores de registro. 6. La propiedad [Centrado automtico] la ponemos a S, y a la propiedad [Ttulo] el valor Mi primer cdigo.

SENATI-Computacin e Informtica

151

Microsoft Office

Le ponemos como [Nombre] Saludo. Si visualizamos el formulario se ver algo as como esto:

Si presionamos el botn vemos que no pasa nada. Vamos a hacer que cuando se presione el botn aparezca el mensaje Hola Mundo!!! en la etiqueta lblSaludo, sustituyendo su contenido actual que es Saludo.

Un poquito de teora Windows funciona con las llamadas Ventanas. Esas ventanas contienen objetos, y tanto las ventanas como los objetos pueden mandar unos mensajes para indicar a la aplicacin 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, tambin son ventanas; pero esa es otra guerra. En nuestro caso tenemos los siguientes objetos: Formulario Saludo Etiqueta lblSaludo Botn cmdSaludo Cada uno de esos Objetos posee una serie de Propiedades, generan determinados Eventos y pueden hacer determinadas cosas mediante unos procedimientos propios que se llaman Mtodos. Por ejemplo, al presionar el botn cmdSaludo, se genera el evento [Al hacer Clic] (Click). Podramos 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 [Ttulo]; en ingls [Caption]. Ahora la pregunta: dnde y cmo se hace todo eso? Cada formulario, y veremos ms adelante que tambin cada informe, lleva asociado un mdulo especial. Se llama mdulo de clase del formulario. Vamos a verlo. En el modo Diseo del formulario Saludo, seleccionamos el botn cmdSaludo. Abrimos la Hoja de propiedades y seleccionamos la pestaa [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 cdigo] en la ventana que se nos abre. A continuacin pulsamos en el botn [Aceptar].

152

SENATI-Computacin e Informtica

c n con VBA i

Tras esto nos abrir el mdulo de clase del formulario Saludo, con el esquema de cdigo correspondiente al evento Clic del botn cmdSaludo:

Crea el siguiente cdigo: 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 cdigo se corresponde al procedimiento que recoge el evento Clic del botn. Consta de varias partes: Private Sub: Indica que empieza un procedimiento del tipo Sub, ms adelante veremos en detalle qu es esto. cmdSaludo_Click(): Indica que es el procedimiento al que llama el evento Click del botn cmdSaludo. End Sub: Indica el punto donde acaba el procedimiento Entre esas dos lneas podemos escribir el cdigo que le dir a Access qu es lo que tiene que hacer. Vamos a hacer 2 cosas:

SENATI-Computacin e Informtica

153

Microsoft Office

1. Escribiremos en la propiedad [Ttulo] (Caption) de la etiqueta el texto Hola Mundo. 2. En la propiedad [Ttulo] (Caption) del formulario mostraremos el texto. Aqu estoy. Debo modificar el texto del cdigo para que ponga: Option Compare Database Option Explicit Private Sub cmdSaludo_Click() Me.lblSaludo.Caption = "Hola Mundo!!!" Me.Caption = "Aqu estoy!" 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 mtodos. Para seleccionar uno en concreto podemos utilizar la tecla [Enter], o mejor an, la tecla [tab] de tabulacin (es la tecla que suele estar encima de la de Bloqueo de Maysculas). Me.lblSaludo.Caption = "Hola Mundo!!!" 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 = "Aqu estoy!" Pone el texto Aqu estoy!en el ttulo del formulario. Me es el propio formulario. Si nos fijamos en la sentencia Me.lblSaludo.Caption est indicando la propiedad Caption del objeto lblsaludo del formulario actual. Fijese que cada objeto propiedad est separada por un punto. Hablaremos ms de esto. Cerramos la ventana de edicin del cdigo, y si hemos seguido correctamente los pasos, al presionar el botn formulario debera tener un aspecto semejante a ste:

154

SENATI-Computacin e Informtica

c n con VBA i

Entorno de desarrollo Ya hemos comentado que VBA para Access tiene un entorno de desarrollo similar al de otras aplicaciones con VBA. Este entorno recibe el nombre de IDE, que significa algo as como Entorno de Desarrollo Integrado. En el idioma brbaro se escribe Integrated Development Environment. Este entorno consta de una serie de ventanas y botones, algunos de los cuales se muestran en el siguiente grfico
Interrumpir Ejecutar Macro

Las ventanas, por el momento ms importantes para nosotros, son Ventana de Cdigo Es la ventana en la que se escribe todo el cdigo que va a gestionar nuestra aplicacin.
SENATI-Computacin e Informtica 155

Microsoft Office

Podemos seleccionar el mdulo que se mostrar en cada momento, por ejemplo seleccionndolo con un doble clic en la ventana del Explorador del Proyecto. Ventana del Explorador del Proyecto La ventana del proyecto nos muestra todos los objetos que poseen mdulos. Entre ellos tenemos los mdulos de Formularios e Informes, los mdulos estndar, y los mdulos de clase. En esta primera parte del cursillo vamos a trabajar con los mdulos asociados a formularios y los mdulos estndar. Si en la ventana del proyecto hacemos doble clic sobre cualquiera de los elementos que aparecen, abriramos su mdulo correspondiente. Por ejemplo, si en la base de datos correspondiente al grfico presionramos (doble clic) el formulario Form_frmMarciano nos abrira el mdulo asociado al formulario frmMarciano. Si presionamos sobre Funciones Marcianas nos abrira el mdulo estndar Funciones Marcianas y si presionramos sobre CMarciano, nos abrira el mdulo de clase CMarciano. Fijaros que el icono asociado a cada mdulo cambia en funcin del tipo que sea. Ventana Inmediato Esta es una ventana desde la que podemos ordenar que se ejecuten determinadas rdenes, o imprimir desde el cdigo determinados valores para efectuar comprobaciones. Recibe tambin el nombre de Ventana de Depuracin. Su mayor utilidad es para la depuracin del cdigo, es decir para efectuar comprobaciones de errores. De hecho es un objeto que recibe el nombre de Debug. Ventana Locales Esta es una ventana que tambin sirve para la comprobacin y el seguimiento de los valores que van tomando determinados parmetros, variables, etc. durante la ejecucin del cdigo. Por tanto comparte la funcin de depuracin 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 diseo. Los mdulos, como Objetos de Access, tambin 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 Inspeccin, de las que hablaremos ms adelante.

156

SENATI-Computacin e Informtica

c n con VBA i

Actividad 2: Uso de la ventana Inmediato


Creamos una nueva base de datos a la que llamamos Entrega02.mdb Vamos a Mdulos y presionamos en el botn [Nuevo]. Nos crear un mdulo con el original nombre de Mdulo1. Vamos a examinar las ventanas que se abren y las comparamos con el grfico de la Actividad 1. 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 opcin [Ventana Inmediato]; o ms fcil an, presiona la combinacin de teclas [Ctrl] + [G]. Vamos a mantener las ventanas de Cdigo, la de Inmediato y la del Explorador del proyecto. Las otras, si te molestan, puedes cerrarlas. Ms tarde las podrs abrir con los botones o las opciones de men correspondientes (Men Ver > y seleccionar su opcin). Para qu sirve la ventana Inmediato? Vamos a hacer un ejemplo. Pincha con el cursor en ella, escribe lo siguiente: Print 4 + 5 y dale a la tecla [Enter] Y oh sorpresa! Escribe 9 en la siguiente lnea. Ahora escribe? 4 + 5 ms [Enter] Y vuelve a escribir la cifra 9 Escribe: ? 4 * 5 ms [Enter] Adivinas qu va a escribir? Premio! 20 Ahora vamos a hacerlo un poco ms complicado a = 2 : b = 4 : Print a * b Pues s, te escribe 8 en la siguiente lnea. Qu pasar si escribo? a^b y aprieto [Enter]? Sorpresa! Ha escrito 16 que es 2 elevado a 4 Si ahora presiono la tecla de la barra de men que tiene la forma de un cuadradito azul y que en el grfico la identifico con Interrumpir la ejecucin y reiniciar, si vuelvo a escribir. ? a^b como resultado me da 1. Pensemos un poco sobre estos sorprendentes resultados. Tras la primera lnea 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 algo llamado b que tiene el valor 4, como se demuestra tras el resultado de escribir la segunda vez ? a^b
SENATI-Computacin e Informtica 157

Microsoft Office

Pero resulta que tras presionar el botn 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 nmero elevado al exponente 0 da como resultado 1. En realidad ste no es un gran ejemplo, ya que estaramos en el caso singular de 0 elevado a cero, que no est definido en el campo de los nmeros reales. Pero no vamos a ser ms papistas que el Papa. Vamos a hacer ahora otro experimento. Escribimos en la ventana Inmediato: a = "2" : b = "4" : ? a + b Tras presionar la tecla Enter el resultado es chan, chan.! Si se te ha ocurrido que sera 6 te puedo decir que ests equivocado. Si tu respuesta ha sido 24, has acertado; Como introduccin hemos usado unos elementos que se llaman Operadores. Los que hemos usado por ahora son: + Suma * Producto ^ Exponenciacin El smbolo: no es el operador de divisin. En realidad es un simple separador de instrucciones. El operador de divisin es /. Hay otros muchos ms que ya iremos viendo poco a poco. Por qu al escribir a = "2" : b = "4" : ? a + b , nos da 24? Vamos a fijarnos en estos pequeos detalles 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 nmeros, sino como texto, tambin llamado cadena. Tras esto el operador + no efecta una suma numrica, sino que enlaza dos cadenas de texto. Si enlazamos la cadena "2" con la cadena "4", nos da la cadena "24" . Para los listos que ya se saban el resultado, el resto que no haga ni caso de este prrafo, les informo que esto, en lenguajes ms avanzados, se llama Sobrecarga de Operadores, lo que equivale a decir que el operador + est Sobrecargado. En resumen, que con nmeros hace la operacin de Suma numrica y con cadenas de texto la operacin de enlazar cadenas. Vamos a seguir con pequeas sorpresas. Escribamos algo tan inocente como: Print 2,4 * 2

158

SENATI-Computacin e Informtica

c n con VBA i

Sorpresa!. Qu ha pasado? Que nos imprime: 2 8 Por qu no nos ha dado como resultado 4,8 que es lo que le dara a un buen cristiano, judo musulmn, (o lo que sea siempre que sea bueno)?. De toda la vida la operacin 2,4 * 2ha dado como resultado 4,8 La culpa de esto la tienen que tener los americanos! Y no es broma. Slo un pequeo matiz: Los americanos utilizan la coma como separador de miles. En cambio el separador decimal, en vez de la coma, es el punto. En una sentencia Print, cuando encuentra una coma entre dos valores, intercala una tabulacin. Probemos ahora: Print 2.4 * 2 y nos da 4,8 Nueva sorpresa!. 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? Cosas de Windows. Como sabe que al otro lado de la pantalla hay un hispano, le muestra el resultado en cristiano; Excepto para algunos PCs. De Mxico, Florida y otra s colonias. Y cmo lo sabe?-. Fcil; para eso est la Configuracin Regional de Windows-. Vamos a dejar de divagar y sigamos experimentando. Escribimos en la ventana Inmediato lo siguiente: a = 2 : b = "Peras" : Print a + b No salimos de sustos! Qu he roto?

SENATI-Computacin e Informtica

159

Microsoft Office

Tranquilo que no has roto nada. No nos ensearon en el colegio que no haba que sumar Peras con Manzanas? Le estamos diciendo a VBA que sume un nmero con un texto, y lgicamente se queja. Cambiemos la lnea a = "2" : b = " Peras" : ? a + b Ahora s imprime bien 2 Peras Al poner el 2 entre comillas, lo hemos cambiado al modo texto y entonces ha funcionado. Si hacemos a = "Dos" : b = " Peras" : ? a + b Nos imprimir Dos Peras Tenemos algo llamado que le da lo mismo ser Nmero que Texto.

Actividad 3: Uso de Variables


Ya hemos visto que en la ventana Inmediato podemos efectuar clculos, con valores directos o con unos elementos a los que les asignamos valores. Todo esto es interesante, pero todava no podemos hacer grandes cosas, de hecho con una simple calculadora seramos ms eficientes. Un poco de paciencia; todo a su tiempo Si no tenemos abierto un fichero Access, es el momento para hacerlo, por ejemplo crea un nuevo archivo con el nombre Entrega03.mdb Abrimos el apartado [Mdulos] y presionamos el botn [Nuevo]. Pulsamos con el cursor en la ventana de Cdigo y escribimos lo siguiente: Option Compare Database Option Explicit Const Pi As Double = 3.14159265358979 Qu significa esta ltima lnea? A falta de explicar otros detalles, declaramos una Constante llamada Pi del tipo Double (un valor numrico de coma flotante de 8 bytes) y le asignamos el valor del famoso Pi. Les recuerdo que Pi es algo ms que el simple 3,1416 que nos ensearon en el colegio Al declarar Pi como Constante nos impide que en otro punto del mdulo podamos hacer algo as como Pi = 25.36 Por qu?Porque el valor de una constante es en definitiva Constante, y no se puede cambiar-.

160

SENATI-Computacin e Informtica

c n con VBA i

Y cmo podemos declarar algo que se pueda cambiar?Ese algo, en contraposicin a una constante, se llama Variable. Para declarar variables se podra hacer algo as como Dim Precio As Currency Dim Nombre As String Enseguida veremos qu es eso de Currency y String. Ahora vamos a intentar usar el valor que hemos declarado de Pi. Pulsamos en la ventana Inmediato y escribimos ? Pi y presionamos [Enter] Y no pasa nada! Se supona que seramos muy felices si nos imprimiera el valor 3,14159265358979 Por qu no lo ha hecho?

mbito Alcance de las Constantes y variables Antes que nada aclarar que se suelen utilizar indistintamente ambos trminos Qu entendemos por mbito o por Alcance? 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. Ms adelante veremos que todo esto an se puede generalizar para otros elementos de la programacin. En el punto anterior hemos escrito? Pi en la ventana Inmediato y no ha pasado nada. Al declarar en la cabecera de un mdulo una variable con Dim, o una constante con Const hacemos que esa variable, y esa constante slo sean visibles desde dentro del cdigo del mdulo. Para que puedan verse desde fuera es necesario ponerles la palabra 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 la s variables Publicsustituye a Dim. El cdigo del mdulo quedara as: Option Compare Database Option Explicit Public Const Pi As Double = 3.14159265358979 Public Precio As Currency Public Nombre As String Si ahora pulsamos con el ratn en la ventana Inmediato, escribimos ? Pi y [Enter] Nos escribir 3,14159265358979. Vamos a hacer otra prueba Escribe en la ventana Inmediato Pi = 3.1416 y pulsa [Enter]. Qu ha pasado?

SENATI-Computacin e Informtica

161

Microsoft Office

Simplemente que estamos intentando asignar un valor a una constante que ya lo tena. En definitiva una constante slo puede tomar el valor una vez, y a ti te encontr en la calle. Por definicin una constante no puede cambiar. Slo mantiene relaciones y se casa una vez. En cambio las variables son mucho ms promiscuas. Todo lo anterior, entiendanlo como una introduccin a la declaracin de variables y Constantes, que en realidad presenta ms posibilidades que las aqu vistas. En puntos posteriores, estudiaremos el tema con ms profundidad. Aqu han aparecido cosas nuevas; por ejemplo la palabra Currency y la palabra String. En el ejemplo, con Currency, hacemos que la variable Precio sea 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 Currency y 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 podramos haber hecho las declaraciones sin especificar su tipo pero, por el momento sin ms explicaciones, les dir que esto genera cdigo menos optimizado e incluso puede dar problemas a la hora de encontrar posibles errores. Por ejemplo podramos haber hecho: Public Const Pi = 3.14159265358979 Public Precio Public Nombre Y la cosa funcionara En realidad el declarar as una variable constante, equivale a haber hecho esta otra declaracin Public Const Pi As Variant = 3.14159265358979 Public Precio As Variant Public Nombre As Variant -Y qu es eso de Variant?El Variant es un tipo de dato al que se le puede asignar casi cualquier cosa. Esto lo hace a costa de consumir ms recursos que otros tipos de variables y por consiguiente una velocidad ms lenta en la ejecucin. Ya tenemos las bases para el siguiente paso.

162

SENATI-Computacin e Informtica

c n con VBA i

Actividad 4: Uso de Procedimientos y Funciones


Procedimientos Sub Procedimientos Function o Funciones

Procedimientos Sub
Un procedimiento Sub llamado tambin Procedimiento a secas es un conjunto de cdigo que realiza determinadas tareas. Suele estar contenido entre las expresiones Sub y EndSub El trmino 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 los use internamente. A estos datos se les llama Parmetros Argumentos. Si en la ventana de cdigo escribimos la palabra Sub, le ponemos encima el cursor y presionamos la tecla [F1], Access nos mostrar la ayuda aplicable a Sub. En la ayuda podemos entre otras cosas podemos ver: [Private | Public | Friend] [Static] Sub nombre [(lista_argumentos)] [instrucciones] [Exit Sub] [instrucciones] End Sub Por cierto, estas lneas indican cmo es la estructura de un procedimiento Sub. Los elementos que estn entre Parntesis Cuadrados [ ] son opcionales. Cuando hay varias palabras separadas por Barras Verticales |, nos est indicando que podemos seleccionar una de ellas. Segn esto seran igual de vlidas 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 Por supuesto que cada opcin genera un cdigo que se comportar de forma diferente. Es igualmente vlido el que ya hemos usado en la primera entrega. Private Sub cmdSaludo_Click() Me.lblSaludo.Caption = "Hola Mundo!!!" Me.Caption = "Aqu estoy!" End Sub
SENATI-Computacin e Informtica 163

Microsoft Office

Con una salvedad, este ltimo es un tipo especial de Sub. Y es especial porque captura el evento que se produce cuando de presiona el botn cmdSaludo de su formulario. Recordemos que un Evento es un mensaje que enva Windows y en este caso es capturado por Access. En el mdulo que hemos creado vamos a escribir el siguiente cdigo: Public Sub Circunferencia() Dim Radio As Single Radio = 2.5 Debug.Print "Circunferencia = " & 2 * Pi * Radio Debug.Print "Crculo = " & Pi * Radio ^ 2 & " m2" End Sub Ahora, en la ventana Inmediato escribe Circunferencia y presiona [Enter] Efectivamente, en esa ventana se escribir: Circunferencia = 15,7079632679489 Crculo = 19,6349540849362 m2 Vamos a analizar un poco esto. Hemos creado un procedimiento llamado Circunferencia. Este procedimiento es de los de tipo Sub. La primera lnea es el encabezado. Al hacerlo Public, dentro de un mdulo estndar, permitimos que se pueda llamar desde cualquier parte de la base de datos. Es un procedimiento pblico. En la segunda lnea declaramos la variable Radio, de tipo Single. El tipo Single es un tipo de coma flotante, que ocupa 4 bytes, o lo que es lo mismo, 32 bits. En la siguiente lnea asignamos a la variable el valor 2.5 Recuerdo que dentro del cdigo, las comas separadores de decimales se ponen como puntos. La siguiente lnea utiliza el mtodo Printdel objeto Debug. La forma de llamarlo es poniendo primero el objeto, a continuacin un punto y despus el mtodo. Fijese que mientras lo escribes se les muestra una Ayuda en lnea que les permite seleccionar lo que quieres escribir.

164

SENATI-Computacin e Informtica

c n con VBA i

El objeto Debuges la propia ventana Inmediato. El mtodo Printimprime lo que se ponga a continuacin. Lo primero que imprime es una cadena, en nuestro caso "Circunferencia = " A continuacin vemos el operador & seguido de la expresin 2 * Pi * Radio Este operador hace de Pegamento entre dos expresiones. En este caso enlaza la cadena primera con el resultado de la operacin 2 * Pi * Radio Dando como resultado Circunferencia = 15,7079632679489 Lo mismo es aplicable a la siguiente lnea. Con End Sub se acaba el cdigo del procedimiento. - Esto est bien, pero slo puede imprimir los datos de la circunferencia de radio 2,5, lo que no es gran cosa. - Bueno, s. Es un inicio. - Ahora, modifico el procedimiento Sub, de la siguiente forma: Public Sub Circunferencia(Radio As Single) Debug.Print "Circunferencia = " & 2 * Pi * Radio Debug.Print "Crculo = " & Pi * Radio ^ 2 & " m2" End Sub Fijense que la declaracin de la variable Radio ya no se hace en el cuerpo del procedimiento, sino en su cabecera. Adems ha desaparecido la lnea en la que asignbamos el valor del radio. Y cmo se utiliza esto? No tiene ninguna complicacin especial Vamos a modificar la forma como llamamos desde la ventana Inmediato al procedimiento, y escribimos Circunferencia 2.5 El resultado es el mismo que en el caso anterior. Pero si escribimos Circunferencia 7.8 Nos dar los valores correspondientes a una circunferencia de radio 7.8. En este caso hemos utilizado un procedimiento con un nico argumento. El argumento es precisamente 7.8. Si tuviera, por ejemplo 2, se escribiran separados por una coma NombreProcedimiento Argumento1, Argumento2 Hay otro tipo de procedimientos de los que hemos hablado. Se llaman procedimientos Function, las famosas Funciones.

Funciones
En la entrega anterior hemos visto una introduccin a los procedimientos Sub.

SENATI-Computacin e Informtica

165

Microsoft Office

Otro de los tipos de procedimientos son los procedimientos Function, que al igual que los procedimientos Sub estn 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 cdigo que va a realizar las tareas que deseemos, y al final devolver algn valor. Son las llamadas Funciones. Veamos la forma como lo explica la ayuda de Access. 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 declaracin: [Public | Private | Friend] [Static] Function nombre [(lista_argumentos)] [As tipo] [instrucciones] [nombre = expresin] [Exit Function] [instrucciones] [nombre = expresin] End Function Vemos que para declarar una funcin empezaramos, por ejemplo poniendo la palabra Public (si quisiramos que la funcin sea accesible desde cualquier parte de Access) a continuacin la palabra Function, despus abriramos un parntesis y pondramos los parmetros que necesitramos, cerraramos el parntesis y finalmente pondramos el tipo de datos que devolvera la funcin. Supongamos que quisiramos escribir una funcin en la que pasndole el ngulo y el radio, nos devolviera la longitud de un arco de circunferencia. La cabecera de esta funcin sera: Public Function Arco(Angulo As Single, Radio As Single) As Single Hay un truco para que una lnea con mucho texto se pueda dividir en varias lneas, sin que deje de ser una nica lnea. Se coloca al final de la lnea que se quiere dividir un espacio en blanco y la raya de subrayado. Con ello la lnea anterior se podra poner as: Public Function Arco(Angulo As Single, Radio As Single) As Single Aqu declaramos la funcin como pblica, para que se pueda utilizar desde cualquier parte de la aplicacin, siempre que se escriba en un mdulo normal. A continuacin escribimos la palabra Function, seguida de su nombre, en este caso Arco. Abrimos parntesis y escribimos los dos parmetros que necesitamos, Angulo y Radio, declarndolos del tipo Single (tipo numrico de coma flotante de 4 Bytes). Cerramos el parntesis y declaramos la funcin Arco tambin del tipo Single. Si escribes la cabecera de la funcin en un mdulo normal, veras que VBA, al igual que pasaba con los procedimientos Sub, les aade automticamente el final correspondiente, es decir End Function

166

SENATI-Computacin e Informtica

c n con VBA i

Con esto la funcin quedara as: Public Function Arco(Angulo As Single, Radio As Single ) As Single End Function Por ahora no es gran cosa, ya que no hace nada. Permiteme que escriba el cdigo completo de esta funcin y la explique paso a paso. Como en la entrega anterior, voy a declarar la constante Pi como pblica en la cabecera del mdulo, para que pueda ser utilizada por la aplicacin. Si ya la tuviera declarada en otro mdulo este paso no sera necesario. El cdigo sera el siguiente: Option Compare Database Option Explicit Public Const Pi as Double = 3.14159265358979 Public Function Arco(Angulo As Single, Radio As Single) As Single Arco = Pi * Radio * Angulo / 180 End Function Aparte de la frmula matemtica de Trigonometra elemental, vemos lo siguiente. Asignamos al nombre de la funcin Arco el resultado de la frmula de la izquierda. Esto har que la funcin Arco devuelva el resultado de la operacin matemtica. Vamos a centrarnos en lo que aparece entre Function y el final de la lnea. Vamos a probar la funcin. Para ello escribiremos en la ventana Inmediato. ? Arco(360,1) Supongo que ya no ser sorpresa para ustedes la ayuda en lnea que va prestando el propio VBA de Access:

Tras completar la expresin, y darle a [Enter] nos escribir: 6,283185 que es la longitud de un arco de radio 1 y ngulo 360, lo que equivale a la circunferencia completa. Vamos a hacer un experimento: Qu pasa si cambiamos la declaracin de tipo de esta funcin?

SENATI-Computacin e Informtica

167

Microsoft Office

Vamos a cambiar el Single de la declaracin de la cabecera, por Double. Double es un nmero de coma flotante de ms precisin que single (8 Bytes de Double frente a 4 de single). La cabecera quedar as: Public Function Arco(Angulo As Single, Radio As Single) As Double Para ello escribiremos? Arco(360,1) en la ventana Inmediato, y presionamos [Enter]. Efectivamente la precisin ha aumentado, ya que el valor escrito ha sido: 6,28318530717958 Por ello si cambiamos ahora la cabecera: Public Function Arco(Angulo As Double, Radio As Double) As Double Se supone que los clculos sern ms precisos. Efectivamente as es, pero en una aplicacin crtica deberamos jugar que el tipo de precisin adecuada, para hacer la aplicacin lo ms ligera posible. Si probamos a hacer el cambio vemos que en nuestra funcin, con los datos anteriores apenas cambia el resultado. Pero qu pasara si estuviramos programando la rbita de una nave con destino a Marte? En este caso la precisin sera un elemento clave.

Actividad 5: Funciones en Formularios


Vamos a hacer una pequea y elemental calculadora que nos permita sumar dos cifras. Cerramos los mdulos y creamos, abrimos un formulario en modo diseo. 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 mgica para deshabilitarla. Deber quedar sin resaltar, como se indica en el grfico Ponemos dos cuadros de texto en el formulario. Por defecto, Access les pondr un nombre semejante a Texto2 y Texto2. Vamos a cambiar esos nombres. Abrimos la hoja de propiedades, les recuerdo Ficha Diseo > Cinta Herramientas, pulsando las teclas [Alt] + [Enter]. En la ficha [Otras] ponemos el cursor en la primera propiedad, que casualmente es la propiedad Nombre. Ah es donde, pulsando en los correspondientes cuadros de texto, vamos a cambiar su nombre. Les ponemos, al primer Cuadro de texto el nombre de txtSumando_1, y al segundo txtSumando_2. Ahora le vamos a poner un botn, cambiando su nombre , algo as como Comando5, por cmdSumar, y su ttulo texto del botn, por Sumar . Al programar es muy importante que los objetos, variables, constantes, procedimientos, etc. tengan nombres con cierto sentido.

168

SENATI-Computacin e Informtica

c n con VBA i

Si no fuese as, si ms adelante tuvieras que revisar tu cdigo, o si lo tuviese que hacer otra persona, tendrais que invertir una gran cantidad de tiempo en averiguar qu es y qu hace cada cosa en el cdigo. Ms adelante hablaremos sobre normalizacin de cdigo, pero fjate que el nombre de los cuadros de texto est precedido por las letras txt y el del botn por cmd. As si en un pedazo de cdigo veo una palabra que empieza por cmd s que se refiere a un botn, y si empieza por txt s que se refiere a un cuadro de texto. Otro ejemplo: Los nombres de las etiquetas los suelo empezar por lbl. Estas son convenciones de normalizacin ms menos estndares. A partir de este momento las ir aplicando al cdigo y veris como su uso se ir convirtiendo en algo cada vez ms natural. A lo que bamos. Tenemos en un formulario los siguientes elementos: txtSumando_1 txtSumando_2 cmdSumar Cuadro de texto Cuadro de texto Botn de comando

Probablemente al poner los cuadros de texto se nos hayan colocado dos etiquetas. D e momento no vamos a cambiar su nombre, pero les vamos a poner como Ttulo Operando 1 y Operando 2 Ahora vamos a poner una etiqueta nueva, con ttulo Resultado, y de nombre lblResultado. Ms de uno se habr dado cuenta que lbl viene de Label (etiqueta en ingls), txt de Text y cmd de Command . A esta etiqueta le vamos a poner un texto un poco ms grande y como color de texto el rojo. Pero qu quieres que hagamos con todo esto? Tan simple como tener un formulario en el que escribir dos nmeros en la s correspondientes casillas, y que al pulsar un botn nos muestre su suma. Y cmo sabe Access cuando se ha pulsado el botn y qu es lo que tiene que hacer? Para eso utilizaremos el Evento Clic del botn cmdSumar. Ya he comentado que un Evento es un mensaje que manda Windows, cuando pasa algo, que puede ser captado por Access y a su vez reenviado a Windows con un cdigo que se tiene que ejecutar. Seleccionamos el botn, y en la [Hoja de Propiedades] pulsamos en la pestaa Eventos. Seleccionamos el cuadro correspondiente a Al hacer clic y pulsamos en el pequeo botn con tres puntos que nos aparece.( Debe estar desactivado el botn Asistente para Controles )

SENATI-Computacin e Informtica

169

Microsoft Office

A continuacin veremos una pequea pantalla que nos permite seleccionar entre Generador de expresiones Generador de macros Generador de cdigo

Lgicamente seleccionamos Generador de cdigo, y pulsamos [ Aceptar] doble clic en [Generador de cdigo]. Inmediatamente se nos abre el editor de cdigo con el siguiente cdigo Option Compare Database Option Explicit Private Sub cmdSumar_Click() End Sub El cursor estar seguramente posicionado entre las dos lneas. Qu es esto? Es el procedimiento que captura el evento Clic del botn cmdSumar. Ahora lo que quiero es que tras poner un valor en cada uno de los cuadros de texto, si pulsamos el botn, nos muestre el resultado de la suma en la etiqueta lblResultado. El contenido de un cuadro de texto lo maneja su propiedad Value, que se puede leer y escribir. El contenido de una etiqueta (su ttulo) lo maneja su propiedad Caption , y tambin es de lectura y Escritura. Escribimos lo siguiente Private Sub cmdSumar_Click() Me.lblResultado.Caption = Me.txtSumando_1.Value + Me.txtSumando_2.Value End Sub Que traducido al cristiano quiere decir: Cuando se presione sobre el botn cmdSumar (evento clic) pon como ttulo de la etiqueta lblResultado (propiedad caption) el resultado de sumar el contenido (propiedad Value) del cuadro de texto txtSumando_1y del cuadro de texto txtSumando_2. El control Cuadro de texto es un TextBox y la Etiqueta un control Label. Bueno, grabamos el cdigo y el formulario y lo abrimos.

170

SENATI-Computacin e Informtica

c n con VBA i

Nos quedar algo as como

Si ahora introducimos, por ejemplo el valor 2 en el primer cuadro de texto, el valor 3 en el segundo y presionamos el botn Sumar, nos llevamos una pequea sorpresa:

Qu ha pasado?. Por qu en vez de un 5 nos da 23? al fin y al cabo 2 ms 3 son 5 Estas son algunas de las cosillas que desaniman a los principiantes No es que Access nos est tomando el pelo. Recordemos que estamos hablando del contenido de un [Cuadro de Texto], y que como tal todo lo que contiene lo interpreta como texto. Aunque hemos introducido un 2 para el control es como si introdujramos el texto 2 . Vamos a probar a introducir en el primer Cuadro de texto Pepe, y en el segundo Gotera. Al presionar el botn nos da

Un par de prrafos ms adelante veremos cmo solucionar este problema. Primero un par de matizaciones sobre el cdigo. Tomemos el texto Me.lblResultado.Caption Vamos a desmenuzarlo. Me representa el formulario al que pertenece el cdigo. Me.lblResultado lblResultado representa a la etiqueta lblResultadodel formulario actual. Me.lblResultado.Caption Captionrepresenta a la propiedad Ttulo de la etiqueta.
SENATI-Computacin e Informtica 171

Microsoft Office

La utilizacin de Me no es necesaria; pero facilita a la ayuda en lnea el que te presente las diferentes opciones a escribir. Tomemos ahora el texto Me.txtSumando_1.Value Ya hemos visto que me representa al formulario. Me.txtSumando_1 txtSumando_1 representa al cuadro de texto txtSumando_1 Me.txtSumando_1.Value Value representa el contenido del cuadro de texto la propiedad Value. La propiedad Value de los cuadros de texto tiene dos peculiaridades: La primera es que es la propiedad por defecto del control. Eso quiere decir, que si se escribe en el cdigo el nombre del cuadro de texto, sin especificar nada ms, har implcitamente referencia a la propiedad Value. Por ello son equivalente es igual de vlidos los siguientes cdigos: Me.lblResultado.Caption = Me.txtSumando_1.Value + Me.txtSumando_2.Value lblResultado.Caption = txtSumando_1 + Me.txtSumando_2 He quitado las referencias al formulario Me y la propiedad Value . Cambiamos el cdigo anterior por ste: Private Sub cmdSumar_Click() lblResultado.Caption = txtSumando_1 + Me.txtSumando_2 End Sub Ahora vamos a ejecutar el formulario, pero antes de presionar el botn de sumar dejamos uno de los cuadros de texto sin nada escrito en l. Un nuevo problema!...

172

SENATI-Computacin e Informtica

c n con VBA i

Esto hace referencia a la segunda peculiaridad de los cuadros de texto: Si el cuadro de texto contiene algn valor, nos devolver un texto con ese valor, pero si no contiene nada nos devolver el valor Nulo (Null). Para poder funcionar as, la propiedad Value del cuadro de texto tiene que ser del tipo Variant. S ese tipo de dato capaz de tragarlo todo. Un valor nulo no es cero, ni una cadena de texto vaca. Un valor nulo en realidad se corresponde al resultado del cdigo ASCII 0. Como uno de los cuadros de texto tena el valor Nulo (Null), VBA no puede sumarlo al contenido del otro cuadro de texto. Podramos decir que un nulo no se puede sumar con nada.

Pero qu tenemos que hacer para poder sumar los datos? Primero deberamos convertir los valores contenidos en los cuadros de texto a valores numricos. Para efectuar esa conversin existe una funcin 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 funcin Val. Con la siguiente informacin: Devuelve los nmeros contenidos en una cadena como un valor numrico del tipo adecuado. Sintaxis Val(cadena) El argumento obligatorio cadena es cualquier expresin de cadena vlida. Vamos a hacer pruebas en la ventana Inmediato. Escribimos las sucesivas expresiones y presionamos [Enter] Expresin ? "2" + "3" ?2+3 ? Val("2") + Val("3") ? Val("12.234") ? Val(" 23 Caballos") ? Val( Pepe) Resultado impreso 23 5 5 12,234 23 0

Declaracion de Variables
Una variable es un elemento del cdigo que apunta a una direccin de memoria en donde se almacena un dato. Haciendo referencia a la variable se puede devolver el dato al que apunta e incluso modificarlo.

SENATI-Computacin e Informtica

173

Microsoft Office

Las constantes son similares a las variables, slo que su contenido se le asigna en el momento en el que se declaran, y despus no es posible cambiarlo. Hay tres temas 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.

Construccin del nombre de una variable (o constante). Nombre El nombre de una variable est compuesto por caracteres ASCII. Para su construccin hay que ceirse a las siguientes reglas: No se pueden usar caracteres que tienen un uso especial en Access, como son el Punto ., los parntesis ( ), 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 Estos nombres seran correctos, lo que no quiere decir que sean aconsejables. A123456 _Pepe R2P2 El nombre de una variable no puede tener espacios en blanco. Por ejemplo no sera vlido el nombre Apellidos Nombre. En cambio s sera vlido Apellidos_Nombre ApellidosNombre. Una variable puede terminar con un carcter de declaracin de tipo %&!#@$ Estos caracteres slo se pueden usar al final del nombre de la variable. Nota: Estos caracteres tambin se pueden usar para declarar el tipo de dato que devuelve una funcin. Por ejemplo esta cabecera de funcin sera vlida: Public Function Nombre$() Que sera equivalente a: Public Function Nombre() As String 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 yo de ti no lo intentara forastero -. No se pueden declarar dos variables con el mismo nombre dentro del mismo procedimiento o en la cabecera de un mismo mdulo.
174 SENATI-Computacin e Informtica

c n con VBA i

Tipos de datos Adems de las Variables hay otra serie de elementos que manejan datos, como son la s 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 caractersticas tienen? Hay varios tipos de datos. Entre ellos podemos definir Numricos Booleanos Fecha / Hora De texto (cadenas) Variant De objeto Registros de datos definidos por el usuario

Datos numricos Existen dos familias de datos numricos: Datos numricos de nmero entero Datos numricos de coma flotante.

Nmeros Enero Como datos enteros tenemos los siguientes tipos:

Por Sufijo entendemos un carcter de definicin de tipo que se puede aadir a la Variable Constante, para definir el tipo al que pertenece. Por ejemplo: Dim Valor Long Declara implcitamente la variable ValorLong como Long. Esta declaracin equivale a la siguiente Dim ValorLong as Long Si hubiramos hecho Dim ValorLong a secas, la variable ValorLong se hubiera declarado como Variant .

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 cdigo, el tipo de dato que contiene una variable. La ventaja de utilizar estos mtodos se aprecia inmediatamente. As, slo con leer que una tiene como nombre lngDiasTrabajados podramos deducir que es una variable de tipo Long que probablemente sirva para manejar los das trabajados.
SENATI-Computacin e Informtica 175

Microsoft Office

Si en una lnea de cdigo aparece el nombre cmdSalir, podramos deducir que es un botn de comando que probablemente sirva para salir de un formulario u otro sitio. Igualmente lblNombre es una etiqueta y txtApellido1 es un cuadro de texto. Ya iremos viendo estas cositas poco a poco. Repito que los prefijos, int, lng, txt , lbl, cmd, etc. no modelan el tipo de contenido de la variable, sino que sirven como informacin adicional para la persona que escribe lee el cdigo.

Nmeros de Coma Flotante Los nmeros de coma flotante son unos tipos de datos que admiten valores no enteros. Por ejemplo estos son valores de coma flotante: 3.14159265358979 2.71828182845905 2856.1# 4.00!

Como datos de coma flotante tenemos los siguientes tipos:

Por Sufijo entendemos un carcter de definicin de tipo que se puede aadir a la Variable Para el manejo de valores monetarios se suele utilizar el tipo Currency. Este tipo no da errores de redondeo y permite manejar hasta magnitudes de 15 dgitos exactos en su parte entera. En posteriores captulos haremos mencin a algunos errores de redondeo que pueden llegar a dar los tipos de coma flotante.

Tipo Decimal El tipo Decimal es un tipo muy especial. Permite trabajar con hasta 29 dgitos enteros exactos hasta con 28 dgitos exactos en su parte decimal. Es un tipo con muy poco uso en Access, ya que normalmente no se necesita ese tipo de precisin, y adems resulta engorroso su uso.

Tipo Date El tipo Date es un tipo de dato adecuado para manejar datos de tipo Fecha / Hora. El valor 0 representa las 0 horas del 30 de diciembre de 1899. La parte entera representa el nmero de das que han pasado desde esa fecha. La parte decimal representa el tanto por 1 de da adicional que ha pasado.
176 SENATI-Computacin e Informtica

c n con VBA i

Por ejemplo, ahora son las 18 horas 15 minutos 30 segundos del 20 de enero del 2005 Internamente este dato lo guarda como 38372,7607638889. Qu quiere decir? Han pasado 38372 das desde las 0 horas del 30 de diciembre de 1899 Pero adems ha transcurrido 0,7607638889 das, lo que equivale a 18 horas 15 minutos 30 segundos frente a 24 horas Si pasamos la hora actual a segundos nos da 3600 * 18 + 15 * 30 + 30 65730 segundos Un da completo tiene 3600 seg/hora * 24 horas = 86400 Si dividimos 65730 entre 86400 nos da aproximadamente 0,7607638889 Para ver cmo utilizar un tipo date, vamos a crear un procedimiento Sub en un mdulo estndar que nos permita ver lo explicado en las lneas anteriores. En realidad un tipo Date es un tipo Double y como l utiliza 8 Bytes. Por cierto, el prefijo para indicar que es tipo Date es dat . Su cdigo ser el siguiente Public Sub PruebaTipoDate() Dim datFechaActual As Date Dim datSemanaProxima As Date Dim datAyer As Date Dim datMaana As Date datFechaActual = #1/20/2005 6:15:30 PM# datSemanaProxima = datFechaActual + 7 datAyer = datFechaActual - 1 datMaana = datFechaActual + 1 Debug.Print "Tipo Doble", CDbl(datFechaActual) Debug.Print "Ahora", datFechaActual Debug.Print "Prx. Semana", datSemanaProxima Debug.Print "Ayer", datAyer Debug.Print "Maana", datMaana End Sub

Si desde la ventana inmediato escribimos PruebaTipoDate y presionamos [Enter] nos mostrar: Tipo Doble 38372,7607638889 Ahora 20/01/2005 18:15:30 Prx. Semana 27/01/2005 18:15:30 Ayer 19/01/2005 18:15:30 Maana 21/01/2005 18:15:30

SENATI-Computacin e Informtica

177

Microsoft Office

Tipo Boolean (boleano) El tipo Boolean (boleano) es un tipo de dato adecuado para manejar datos de tipo S / No, True / False. Sorprendentemente el tipo Boolean ocupa 2 Bytes, supongo que por compatibilidad con otros tipos. Es como si estuviera definido como de tipo Integer, y como veremos, algo de esto hay. El prefijo para un boleano es bln. A una variable Boleana se le puede asignar un valor de varias formas

Por ejemplo esto sera correcto: Public Sub PruebaTipoBoleano() Dim blnDatoBoleano As Boolean blnDatoBoleano = True Debug.Print "Valor True " & blnDatoBoleano blnDatoBoleano = False Debug.Print "Valor False " & blnDatoBoleano blnDatoBoleano = -1 Debug.Print "Valor -1 " & blnDatoBoleano blnDatoBoleano = 0 Debug.Print "Valor 0 " & blnDatoBoleano blnDatoBoleano = 4 Debug.Print "Valor 4 " & blnDatoBoleano Debug.Print "Valor entero de Verdadero " & CInt(blnDatoBoleano) End Sub

Este cdigo nos mostrar en la ventana Inmediato Valor True Verdadero Valor False Falso Valor -1 Verdadero Valor 0 Falso Valor 4 Verdadero Valor entero de Verdadero -1 Nota: La instruccin CInt(blnDatoBoleano) convierte a un valor Entero el contenido de la variable blnDatoBoleano. Para asignar a una variable booleana el valor falso le podemos asignar False 0. Para asignarle cierto lo podemos hacer pasndole directamente True cualquier valor numrico diferente de Cero, incluso aunque sea de coma flotante. Si convertimos el contenido de una variable Boleana que contenga True a un valor numrico, nos devolver -1.

178

SENATI-Computacin e Informtica

c n con VBA i

Tipo String (cadena) El tipo String est especializado en almacenar datos de tipo Cadena (Texto). El carcter para definir el tipo es el signo de Dlar $. Hay dos tipos String String de longitud variable String de longitud fija Para asignar una cadena de longitud variable , la declaracin se hace de forma similar al resto de los tipos Dim strNombre As String Dim strNombre$ Public strNombre As String Private strNombre As String Para declarar una variable como de longitud fija se utiliza el asterisco (*) y a continuacin el nmero de caracteres que va a contener Dim strCuentaCorriente As String * 20 Para declarar cadenas de longitud fija no se puede usar el carcter $. Por ejemplo, esto dara error Dim strCuentaCorriente$ * 20 Una cadena de longitud variable podra en teora almacenar hasta 2^31 caracteres, es decir unos 2000 millones de caracteres. Lgicamente siempre que el PC tuviera suficiente memoria. Una cadena de longitud fija puede contener hasta 65536 caracteres (64 KBytes). Si por ejemplo hacemos: Dim strCliente As String * 40 strCliente = "Pepe Gotera" strCliente contendr la cadena Pepe Gotera seguida de 29 espacios en blanco (para completar los 40 que debe contener la variable.

Tipo Variant El tipo Variant es un tipo de dato que puede contener prcticamente cualquier tipo de datos. El prefijo que se suele utilizar para identificar una variable Variant es var. Hay excepciones, por ejemplo no puede contener una cadena de longitud fija. Cuando declaramos una variable o escribimos la cabecera de una funcin, sin especificar el tipo que va a contener devolver, implcitamente la s estamos declarando como de tipo Variant. Si declaramos una constante, sin especificar su tipo, el tipo que tome lo har en funcin del dato que le asignemos en la propia declaracin.

SENATI-Computacin e Informtica

179

Microsoft Office

Por ejemplo si declaramos en la cabecera de un mdulo estndar Global Const conEmpresa = "Manufacturas ACME s.l." Hace que la constante conEmpresa se configure como del tipo String. He usado aqu el modificador de alcance Global. Este modificador del Alcance de la variable sera, en este caso, equivalente a haber utilizado Public. Las declaraciones de constante siguientes seran equivalentes a la anterior Public Const conEmpresa = "ACME s.l." Public Const conEmpresa As String = "ACME s.l." Public Const conEmpresa$ = "ACME s.l." La forma de declarar una variable explcitamente como Variant es la siguiente. ModificadorDeAlcanceNombre As Variant Dim varMiVariable As Variant Ya hemos dicho que si se declara una variable sin especificar su tipo, implcitamente la declara como Variant. La ltima declaracin sera equivalente a Dim varMiVariable

Declaraciones mltiples en una lnea. VBA permite declarar mltiples variables en una misma lnea de cdigo. La forma correcta de hacerlo sigue esta estructura: Alcance Variable1 As Tipo, Variable2 As Tipo, Variable3 As Tipo Por ejemplo, esto sera correcto Dim lngUnidades As Long, strNombre As String Otros lenguajes de programacin permiten hacer una declaracin del siguiente estilo: Dim strNombre, strApellido1, strApellido2 As String Tras esto las tres variables seran del tipo String. En cambio en VBA, si hubiramos declarado as las variables, strNombrey strApellido1seran del tipo Variant , y strApellido2 sera del tipo String.

Valores por defecto Cuando declaramos una variable, sta se inicializa con un valor por defecto. Dependiendo del tipo de dato de la variable el valor que tome por defecto ser diferente. Las variables de tipo numrico toman el valor 0 Las de tipo fecha tambin el valor 0, que se corresponde a las 0 horas del 30 de diciembre de 1899.

180

SENATI-Computacin e Informtica

c n con VBA i

Las de tipo boleano el valor False, 0. Las de tipo cadena la cadena vaca "". Las de tipo variant , el valor Empty.

mbito alcance de una declaracin Hemos visto varias instrucciones que afectan al alcance visibilidad de una Variable, Constante o Procedimiento. Estas instrucciones son: Dim Public Global Private Hay otras formas de declarar Variables como son las instrucciones: Static Friend

Dim Si la instruccin Dim se utiliza para declarar una variable en la cabecera de un mdulo, esa variable slo ser visible por los procedimientos que estn dentro de ese mdulo. De forma semejante, si la instruccin Dim se utiliza dentro de un procedimiento, esa variable slo podr ser vista por el cdigo del interior del procedimiento.

Private La instruccin Private se suele utilizar para definir de forma explcita que una constante, variable o procedimiento slo van a ser visibles desde dentro de un mdulo. Se suele utilizar para la declaracin de variables y constantes en las cabeceras de mdulos, as como para definir el alcance de los procedimientos de ese mdulo. Dentro de un procedimiento se usa Dim en vez de Private.

Public La instruccin Public se suele utilizar para definir que una constante, variable o procedimiento van a ser visibles desde cualquier parte de la aplicacin. Se suele utilizar para la declaracin de variables y constantes en las cabeceras de mdulos, as como para definir el alcance de los procedimientos de ese mdulo. Por ello no es factible declarar una variable como Publicdentro de un procedimiento. S se puede en cambio, declararla en la cabecera de cualquier mdulo estndar o de clase. Nota: Una aclaracin respecto a los elementos declarados en un mdulo de clase. Si declaramos una variable, constante procedimiento como Public en un mdulo de clase, por ejemplo en un formulario, para poder usarlo hay que hacerlo a travs de una Instancia de ese mdulo de clase.

SENATI-Computacin e Informtica

181

Microsoft Office

A las variables y constantes pblicas de un mdulo de clase, as como a los procedimientos Property, se les llama Propiedades de la clase. Al resto de los procedimientos de la clase que sean pblicos se les llama Mtodos de la clase. Cuando veamos las clases, veremos que una instancia es un ejemplar de una clase. La clase como tal es el propio cdigo, pero una instancia es un objeto creado mediante la clase. Se que es un poco crptico, pero ms adelante lo entenderis sin problema. Por ejemplo una instancia de un formulario es el propio formulario, o si tenemos la clase Persona y creamos una persona llamada Pepe, la instancia de la clase es Pepe. Si hemos declarado una variable, por ejemplo Nombre como Public para poder usarla deberemos hacer referencia a ella mediante la instancia de la clase, que es Pepe Pepe.Nombre Lo mismo ocurrira si hemos declarado como public la funcin Edad, es decir el mtodo Edad . Pepe.Edad As mismo, si en el formulario Pedidos declaramos datFechaUltimoPedido comoPublic, para acceder a ese dato lo tenemos que hacer a travs del propio formulario. Pedidos.datFechaUltimoPedido Desde el cdigo del formulario, no es necesario hacer referencia al mismo formulario, aunque s puede hacerse utilizando la palabra clave Me, que es una variable declarada implcitamente y que representa a la instancia de la clase u objeto creado mediante la clase. Desde el propio formulario sera lo mismo Me.datFechaUltimoPedido que datFechaUltimoPedido No tenis por qu entender todo esto todava. Lo ir comentando poco a poco y lo desarrollar en la entrega en la que hablemos de las Clases.

Global La instruccin Global se utiliza de forma semejante a Public, dentro de mdulos estndar.

La instruccin With Si observamos el cdigo del procedimiento PruebaRegistro de la pgina anterior, vemos que, tanto para asignar valores a los atributos de la variable Vendedor, he utilizado la instruccin With, acompaada de su complemento End With.

182

SENATI-Computacin e Informtica

c n con VBA i

Esto nos permite evitarnos tener que repetir de reiterativamente el nombre Vendedor en cada lnea de asignacin lectura. Entre With Vendedor y End With al escribir el punto se supone que estamos utilizando atributos del registro Vendedor. Este tipo de sintaxis ayudados por la instruccin With, se puede utilizar no slo con Variables Registro, sino tambin con todo tipo de objetos, como veremos posteriormente.

Estructuras de Control.
Las estructuras de control son segmentos de cdigo que nos permiten tomar decisiones en base a unos datos dados, o repetir procesos (bucles) mientras sucedan determinada s condiciones en los parmetros controlados por el cdigo. Ya hemos comentado algunas de ellas en las entregas anteriores. Estas estructuras vienen determinadas por una serie de instrucciones, entre las qu e destacaremos: Estructuras de Decisin Nota: Antes de seguir adelante, adoptar el sistema habitual para las expresiones de la sintaxis de una sentencia. Las partes de cdigo situadas entre corchetes [] son opcionales. De las partes contenidas entre Llaves {}hay que seleccionar una de ellas. If . . . . Then If . . . . Then . . . . Else IIF Select . . . . Case

Estructuras de Bucle For . . . . Next For Each . In . . . . Next Do . . . . Loop

Estructuras de Decisin.
La Instruccin If Permite ejecutar un grupo de instrucciones de cdigo, en funcin de que el valor de una expresin sea Cierta o Falsa True/ False. La forma ms bsica de esta instruccin es: If condicin Then [instrucciones]

SENATI-Computacin e Informtica

183

Microsoft Office

Condicin debe ser una expresin, numrica, relacional lgica que devuelva True False Por ejemplo: If Divisor<>0 then Cociente = Dividendo/Divisor Si el valor de la variable Divisor es diferente a Cero, entonces haz que la variable Cociente tome el valor de la divisin entre la variable Dividendoy la variable Divisor. Esta forma de la instruccin If slo se puede poner en una nica lnea de cdigo, aunqu e admite mltiples instrucciones separadas por los dos puntos ":". If Divisor<>0 then C = Dividendo/Divisor : Debug.print C Segunda forma If condicin Then [instrucciones] End If El ejemplo anterior podra haberse escrito: If Divisor<>0 then Cociente = Dividendo/Divisor End If Esta forma permite la ejecucin de varias lneas de sentencias entre Then y End If . Esta sintaxis es preferible a la primera, ya que genera un cdigo ms claro de interpretar. La instruccin If permite ejecutar otro grupo de sentencias, si el resultado de la evaluacin de la expresin fuera falso. If condicin Then [instrucciones para el caso de que condicin sea True] Else [instrucciones para el caso de que condicin sea False] End If Ejemplo: Public Sub PruebaIf01() Dim Dividendo As Single Dim Divisor As Single Dim Cociente As Single Dividendo = 4 Divisor = 2 If Divisor <> 0 Then Cociente = Dividendo / Divisor Debug.Print Cociente Else MsgBox "No puedo dividir entre cero", vbCritical, "Divisin por cero"

vbOKOnly

184

SENATI-Computacin e Informtica

c n con VBA i

End If End Sub En este caso, como Divisor <> 0 devuelve False, se ejecutar la lnea que aparece entre Else y End If, con lo que mostrar el mensaje de error. Estas sentencias admiten an un modo adicional, y es usar Else If. Es una nueva evaluacin tras una anterior que da como resultado falso. Supongamos que queremos hacer una funcin que devolviera el Nombre de provincia en funcin de un cdigo. Acepto por adelantado que habra otras formas ms adecuadas, pero es slo un ejemplo. Ejemplo: Public Function Provincia(ByVal Codigo As Long) As String If Codigo < 1 Or Codigo > 52 Then Provincia = "Cdigo de provincia incorrecto" ElseIf Codigo = 1 Then Provincia = "lava" ElseIf Codigo = 8 Then Provincia = "Barcelona" ElseIf Codigo = 20 Then Provincia = "Guipuzcoa" ElseIf Codigo = 28 Then Provincia = "Madrid" ElseIf Codigo = 31 Then Provincia = "Navarra" ElseIf Codigo = 31 Then Provincia = "Navarra" ElseIf Codigo = 26 Then Provincia = "La Rioja" ElseIf Codigo = 48 Then Provincia = "Vizcaya" ElseIf Codigo = 50 Then Provincia = "Zaragoza" Else Provincia = "Otra Provincia" End If End Function Con este cdigo Provincia(31)devolvera Navarra Las instrucciones If se pueden anidar , (poner unas dentro de otras). If comparacin1 Then [Instrucciones de 1] If comparacin2 Then [Instrucciones de 2] End If End If

La Funcin IIf Es una funcin similar a la estructura If . . Then . . Else Devuelve uno de entre dos valores, en funcin del resultado de una expresin: Su sintaxis es IIf(expresin, ValorTrue, ValorFalse )
SENATI-Computacin e Informtica 185

Microsoft Office

Se evala la expresin y si es True, devuelve ValorTrue; caso contrario devuelve ValorFalse. Por ejemplo Public Function EsPar(ByVal Numero As Long) As Boolean EsPar = IIf(Numero Mod 2 = 0, True, False) End Function La funcin IIF, en este caso, sera igual a hacer Public Function EsPar2(ByVal Numero As Long) As Boolean If Numero Mod 2 = 0 Then EsPar2 = True Else EsPar2 = False End If End Function Nota: El operador Mod devuelve el resto de dividir Numeroentre 2.

La Instruccin Select Case Con If . . Then es posible crear estructuras de decisin complejas como hemos visto en la funcin Provinciade un ejemplo anterior. El que sea posible ni impide que resulte un tanto Farragoso. Para este tipo de casos existe en VBA la instruccin Select Case que simplifica esas operaciones, creando un cdigo ms potente, ordenado y claro. Si vemos la ayuda de Acces podemos leer que la sintaxis de SelectCasees: Select Case expresin_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 expresin_prueba debe ser una variable, o expresin que devuelva una cadena un nmero. lista_expresion son una serie de valores, del tipo que da expresin_prueba. Si expresin_prueba coincide con alguno de los valores de lista_expresion , se ejecutarn las instrucciones que existen a continuacin, hasta llegar al siguiente Case, End Select. A partir de este punto se saldra de la estructura y se seguira con el siguiente cdigo. Si no se cumpliera la condicin de ninguno de los Case lista_expresion , y hubiera un Case Else , se ejecutaran las lneas de cdigo contenido a partir de Case Else. Ejemplo de las expresiones que pueden estar contenidas en las lista_expresion:

186

SENATI-Computacin e Informtica

c n con VBA i

Case 3 Case 3, 5, 6, 7 Case 1 To 8, 0, -5 Case Is < 8 Case Is > 3 Case Is >= lngDias Case "A", "B", "C", "Z" Voy a poner un ejemplo para clarificarlo: Supongamos que queremos crear una funcin que nos cualifique el tipo de los pagars de los clientes en funcin del tiempo que queda hasta su cobro. La funcin recibir como parmetro la fecha del vencimiento. Si la fecha es anterior al da de hoy, deber devolver la cadena Pago vencido. Si es del da de hoy Vence hoy, si quedan entre 1 y 3 das Cobro inmediato, si menos de 31 das Corto Plazo si son menos de 181 das Medio Plazo y si es mayor Largo Plazo La funcin podra ser sta: Public Function TipoVencimiento( _ Vencimiento As Date) As String Dim lngDias As Long ' Date devuelve la fecha de hoy lngDias = Vencimiento - Date Select Case lngDias Case Is < 0 ' Si lngDias es menor que cero TipoVencimiento = "Pago vencido" Case 0 ' Si es cero TipoVencimiento = "Vence hoy" Case 1, 2, 3 ' De 1 a 3 TipoVencimiento = "Cobro inmediato" Case 4 To 30 ' De 4 a 30 TipoVencimiento = "Corto Plazo" Case 31 To 180 ' De 31 a 180 TipoVencimiento = "Medio Plazo" Case Else ' Si ninguno de los anteriores TipoVencimiento = "Largo Plazo" End Select End Function Aqu mostramos algunas de las posibilidades de elaboracin de la lista_expresion . Case Is < 0 Is se puede utilizar junto con operadores de comparacin. Estos operadores son = < <= > >= <> Igual a Menor que Menor igual que Mayor que Mayor igual que Diferente que

Se pueden poner diferentes expresiones separadas por comas

SENATI-Computacin e Informtica

187

Microsoft Office

Esta lnea sera vlida: Case Is < 0, 4, 8, is > 10 Se ejecutaran las lineas correspondientes al Case para cualquier valor que sea menor que 0, mayor que 10 si su valor es 4 u 8. Este sistema tambin puede aplicarse a cadenas de texto. Supongamos que queremos clasificar a los alumnos de un colegio en 4 grupos, en funcin de su apellido. Aqullos cuyo apellido empiece por una letra comprendida entre la A y la D pertenecern 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. La funcin sera Public Function Grupo(ByVal Apellido As String) As Long 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 Function

Estructuras de Bucle.
Las Instrucciones For - - - Next Supongamos que tenemos que construir una funcin que nos devuelva el Factorial de un nmero. Recuerdo que Factorial de n es igual a 1*2*3* . . . *(n-1)*n, para n entero y mayor que cero. Adicionalmente se define que Factorial de Cero tiene el valor 1. Cmo se hara esta funcin: Public Function Factorial(ByVal n As Integer) As Long Dim i As Integer Factorial = 1 For i = 1 To n Factorial = Factorial * i Next i End Function Efectivamente funciona, ya que Factorial devuelve resultados correctos para valores de nentre 0y 12. Pero esta funcin no sera operativa para un uso profesional ya que tiene una serie de fallos. Por ejemplo, si hacemos Factorial(-4) devuelve el valor 1, lo que no es correcto,

188

SENATI-Computacin e Informtica

c n con VBA i

ya que no existe el factorial de un nmero negativo. Igualmente podemos pasarle valores superiores a 12, que nos daran un error de desbordamiento, ya que 13! Supera el alcance de los nmeros Long. Probar haciendo en la ventana inmediato ? Factorial(13). Observar este cdigo: Public Function Factorial(ByVal n As Integer) As Long Dim i As Integer Select Case n Case Is < 0 MsgBox "No existe el factorial de un nmero negativo", vbCritical + vbOKOnly, " Error en la funcin Factorial" Exit Function Case 0 Factorial = 1 Exit Function Case 1 To 12 Factorial = 1 For i = 1 To n Factorial = Factorial * i Next i Case Else MsgBox "Nmero demasiado grande", vbCritical + vbOKOnly, "Error en la funcin Factorial" Exit Function End Select End Function He puesto una serie de sentencias Case para filtrar los valores que daran resultados incorrectos, o produciran error, avisndole al usuario de que ha tratado de utilizar la funcin Factorialcon unos valores fuera de su rango vlido. As el mayor valor lo obtenemos de 12! = 479.001.600 El tener como rango vlido del 0 a 12 no resulta un poco corto ?. Dependiendo para qu, s. Supongamos que estemos programando un sistema estadstico que hace uso de clculos combinatorios grandes. Probablemente esta funcin no servira, aunque se podran usar trucos para saltarse sus limitaciones. El problema surge porque el resultado supera el rango de los nmeros Long , pero en el Captulo 5, y tambin en el Apndice 01, vemos que existen dos tipos de nmeros que superan esa limitacin. Uno es el de los Currencyy el otro el de los Decimal . Vamos a cambiar el cdigo para trabajar con Currency: Public Function FactorialCurrency(ByVal n As Integer) As Currency Dim i As Integer Select Case n Case Is < 0 MsgBox "No existe el Factorial de un nmero negativo", vbCritical + vbOKOnly, " Error en la funcin FactorialCurrency"

SENATI-Computacin e Informtica

189

Microsoft Office

Exit Function Case 0 FactorialCurrency = 1 Exit Function Case 1 To 17 FactorialCurrency = 1 For i = 1 To n FactorialCurrency = FactorialCurrency * i Next i Case Else MsgBox "Nmero demasiado grande", vbCritical + vbOKOnly, "Error en la funcin FactorialCurrency" Exit Function End Select End Function Ahora nos permite trabajar desde 0 a 17. 17! = 355.687.428.096.000 Esta ya es una cifra importante. Pero supongamos que nos contrata el Fondo Monetario Internacional, para hacer unos estudios estadsticos a nivel mundial. Es posible la capacidad de calcular hasta el factorial de 17, se nos quede corta. Para ello echamos mano de un tipo numrico de rango an ms alto. El tipo Decimal. El tipo Decimal tiene la particularidad de que VBA no puede trabajar directamente con l. La variable que lo vaya a contener debe ser primero declarada como Variant, y luego convertida a Decimal . Public Function FactorialDecimal(ByVal n As Integer) As Variant Dim i As Integer Dim Resultado As Variant ' Aqu hacemos la conversin de Variant a Decimal Resultado = CDec(Resultado) Select Case n Case Is < 0 MsgBox "No existe el factorial de un nmero negativo", vbCritical + vbOKOnly, " Error en la funcin Resultado" Exit Function Case 0 FactorialDecimal = 1 Exit Function Case 1 To 27 Resultado = 1 For i = 1 To n Resultado = Resultado * CDec(i) Next i Case Else

190

SENATI-Computacin e Informtica

c n con VBA i

MsgBox "Nmero demasiado grande", vbCritical + vbOKOnly, "Error en la funcin FactorialDecimal" Exit Function End Select FactorialDecimal = Resultado End Function La funcin FactorialDecimal, trabaja en el rango de 0!a 27!. 27! = 10888869450418352160768000000 Es decir con 29 cifras exactas. Una puntualizacin respecto al tipo Decimal. El tipo decimal no es el que permite un rango mayor de valores; es el que permite un rango de valores con ms cifras exactas. Los bucles del tipo For - - Next se pueden anidar (Poner unos dentro de otros). Por ejemplo, supongamos que tenemos que generar un procedimiento 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 Para cada valor que tomara n, ejecutara el bucle completo de For m --- Next m. imprimiendo en la ventana Inmediato los resultados de las tablas 9 x 8 = 72 9 x 9 = 81 9 x 10 = 90 ----------10 x 1 = 10 10 x 2 = 20 10 x 3 = 30 10 x 4 = 40 10 x 5 = 50 10 x 6 = 60 10 x 7 = 70 10 x 8 = 80 10 x 9 = 90 10 x 10 = 100 En los ejemplos anteriores hemos utilizado la estructura ms tpica de VBA para la creacin de Bucles.

SENATI-Computacin e Informtica

191

Microsoft Office

La instruccin For m --- Next m., repite el cdigo contenido entre la lnea que contiene la palabra Fory la lnea 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 numrica que ir tomando sucesivos valores, con incrementos decrementos iguales al valor de incremento . Si no se pusiera el valor incremento , contadorira creciendo en una unidad cada vuelta. El cdigo se ir repitiendo hasta que contador tome el valor de fin, se encuentre con la instruccin Exit For. En el siguiente ejemplo, el bucle For Next se ejecutar hasta que lngSuma sea mayor que 100, momento en que saldr del bucle o se imprima el nmero de impares especificado en el parmetro Numero. Si el parmetro Numero fuese cero menor, se sale directamente del procedimiento sin ejecutarse el bucle. Public Sub ImprimeImpares(Numero As Long) Dim i As Long Dim lngImpar As Long Dim lngSuma As Long If Numero < 1 Then Exit Sub End If For i = 1 To Numero lngImpar = 2 * i - 1 lngSuma = lngSuma + lngImpar If lngSuma > 100 Then Exit For End If Debug.Print i & " - " & lngImpar & " - " & lngSuma Next i End Sub La llamada al procedimiento se hara, por ejemplo para 4 impares ImprimeImpares 4 Despus de la palabra Next, no es imprescindible escribir el nombre de la variable que sirve como contador. Por ejemplo este bucle es vlido a pesar de no escribir Next i: For i = 1 To 10 Debug.Print i Next

Las Instrucciones Do - - - Loop Do [{While | Until} condicin] [instrucciones] [Exit Do]

192

SENATI-Computacin e Informtica

c n con VBA i

[instrucciones] Loop O con esta otra sintaxis: Do [instrucciones] [Exit Do] [instrucciones] Loop [{While | Until} condicin ] Veamos la primera forma: Despus de Do nos permite seleccionar Whilecondicin, Untilcondicin. Si ponemos While, despus de Do el bucle se ejecutara mientras la condicin sea cierta. Si escribimos Until, el bucle se ejecutara hasta que la condicin sea cierta. Si la condicin no fuese cierta no se ejecutara el bucle tanto si hemos puesto While, como si hubiramos escrito Untildespus de Do. Por lo tanto podra ocurrir, tanto con Whilecomo con Until en funcin del resultado de Condicin, que no se llegara a ejecutar el bucle ni una sola vez. Si deseramos que siempre se ejecutara al menos una vez el bucle, deberamos usar While Until despus de Loop. Supongamos que queremos escribir una funcin a la que pasndole un nmero entero positivo, nos indique si ese nmero es no primo. Supongo que no har falta recordaros que un nmero primo es aqul que slo es divisible por 1 por s mismo. Este es el mtodo que voy a emplear. S. Ya se que no es el ptimo: Dividir el nmero entre valores enteros, empezando por el dos, y a continuacin por los sucesivos valores impares, hasta que encontremos un valor que divida de forma exacta al nmero a probar (su resto = 0). Si el resto de la divisin da cero indica que el nmero es divisible por ese valor, por lo que el nmero no ser primo y deberemos salir del bucle. Seguir con el ciclo mientras el valor por el que se va a dividir el nmero no sea mayor que la raz cuadrada del nmero. Necesitis saber que en VBA, el operador que devuelve el resto de una divisin es Mod. Si dividimos 17entre 3da de resto 2 17 Mod 3 2 Ya s que este cdigo es manifiestamente mejorable, pero funciona y me viene bien para el ejemplo con Do Loop . Funciona si el nmero que probamos es menor igual que 2.147.483.647 Este es el mximo nmero Long positivo. Este nmero tambin es primo. Public Function EsPrimo(ByVal Numero As Long) As Boolean Dim lngValor As Long Dim dblRaiz As Double Select Case Numero Case Is < 1
SENATI-Computacin e Informtica 193

Microsoft Office

MsgBox (Numero & " est fuera de rango") EsPrimo = False Exit Function Case 1, 2 EsPrimo = True Exit Function Case Else dblRaiz = Numero ^ 0.5 lngValor = 2 ' Comprobamos si Numero es divisible por lngValor If Numero Mod lngValor = 0 Then EsPrimo = False Exit Function End If lngValor = 3 EsPrimo = True Do While lngValor <= dblRaiz If Numero Mod lngValor = 0 Then EsPrimo = False Exit Function End If lngValor = lngValor + 2 Loop End Select End Function

Nota: En este cdigo he usado para calcular la raz cuadrada de un nmero, elevar ste a 0,5. En VBA hay una funcin que calcula la raz cuadrada directamente: Sqr(Nmero). Es equivalente a Nmero^0.5 Habiendo escrito la funcin EsPrimo, en un mdulo estndar, vamos a crear un formulario en el que introduciendo un nmero en un cuadro de texto, tras pulsar un botn, nos diga si es primo no. Cerramos el editor de cdigo y creamos un nuevo formulario y lo ponemos en Vista Diseo. Aadimos al formulario una etiqueta, un cuadro de texto y un botn. Nombres aplicados a los controles: Etiqueta lblMensaje Cuadro de texto txtNumero Etiqueta del cuadro de texto lblNumero Botn cmdPrimo Ajustamos algunas de las propiedades del formulario, por ejemplo para quitar los separadores de registro, botones, etc. Ya que va a ser un formulario con muy pocos controles, ponemos los textos algo mayores que lo normal, e incluso podemos jugar con los colores.

194

SENATI-Computacin e Informtica

c n con VBA i

A m me ha quedado as

Abrimos la ventana de propiedades y teniendo seleccionado el formulario, vamos a la pgina de Eventos. Hacemos que al abrir el formulario ponga como ttulo del mismo "Test de nmeros primos ", y como texto de la etiqueta lblMensaje, "Introduzca un nmero entero ". Private Sub Form_Open(Cancel As Integer) Caption = "Test de nmeros primos" lblmensaje.Caption = "Introduzca un nmero mayor que cero" End Sub Al abrir el formulario quedar as:

Para que el formulario tenga este aspecto, he modificado algunas de sus propiedades: Propiedad Selectores de registro de registro Valor No Botones de desplazamiento No Separadores No Estilo de los bordes Dilogo

Vamos a hacer ahora que tras introducir un nmero en el cuadro de texto, y presionar el botn, nos diga en la etiqueta si el nmero es primo. Volvemos a la hoja de propiedades y seleccionamos Eventos. Teniendo seleccionado el botn, activamos el evento Al hacer clic, pulsamos en el botoncito que aparece con los tres puntos y seleccionamos Generador de cdigo, y a continuacin Aceptar. Vamos a escribir el cdigo: Recuerda que detrs de la comilla simple lo que se escriba es un comentario (lneas en verde). Estas lneas VBA las ignora, sirviendo slo como ayuda al usuario. Tambin recuerda que el espacio en blanco seguido de la barra
SENATI-Computacin e Informtica 195

Microsoft Office

inferior, al final de una lnea, hace que la lnea siguiente se considere como la misma lnea. El dividir as las lneas lo hago como ayuda para la composicin de este texto y para ordenar el cdigo. Private Sub cmdPrimo_Click() Dim strNumero As String Dim lngNumero As Long ' Pasamos a la variable el contenido de txtNumero, sin blancos en las esquinas ' Nz(txtNumero, "") devuelve una cadena vaca si txtNumero contuviera Null ' Trim (Cadena) quita los "Espacios en blanco" de las esquinas de la Cadena strNumero = Trim(Nz(txtNumero, "")) ' IsNumeric(strNumero) devuelve True si strNumero representa a un nmero If IsNumeric(strNumero) Then
' La funcin EsPrimo() funciona con nmeros long positivos entre 1 y 2147483647

If Val(strNumero) > 2147483647# Or Val(strNumero) < 1 Then lblmensaje.Caption = "El nmero est fuera de rango" txtNumero.SetFocus Exit Sub End If lngNumero = Val(strNumero)
'Format(lngNumero, "#,##0") devuelve una cadena con separadores de miles

strNumero = Format(lngNumero, "#,##0") If EsPrimo(lngNumero) Then lblmensaje.Caption = "El nmero " & strNumero & " es primo" Else lblmensaje.Caption = "El nmero " & strNumero & " no es primo" End If Else lblmensaje.Caption = "No ha introducido un nmero" End If 'El mtodo SetFocus hace que el control txtNumero tome el foco txtNumero.SetFocus End Sub Tras presionar el botn cmdPrimo se produce el evento clic, por lo que se ejecuta el procedimiento cmdPrimo_Click()que maneja ese evento Este procedimiento lo primero que hace es declarar dos variables, strNumero de tipo stringy lngNumerode tipo Long. A continuacin asigna el contenido del cuadro de texto txtNumero, procesado primero con la funcin Nz, que devuelve una cadena vaca si tiene el valor Null, y a continuacin le quita los posibles espacios en blanco de los extremos mediante la funcin Trim. Seguidamente pasa por la primera estructura de decisin If , controlando si la cadena strNumero es de tipo numrico. Si no lo fuera muestra en la etiqueta el mensaje "No ha introducido un nmero". Si lo fuera, primero comprueba si la expresin numrica de strNumero est entre 1 y 214748364, rango de valores vlidos en el rango de los Long, para la funcin EsPrimo.

196

SENATI-Computacin e Informtica

c n con VBA i

Si no fuera as, muestra el mensaje " El nmero 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 funcin Val(strNumero) asigna el valor a la variable lngNumero. Como ya no vamos a utilizar la cadena strNumero para ms clculos, para mostrar el nmero, le asignamos el resultado de la funcin Format(lngNumero, "#,##0"). Con esta utilizacin, la funcin Format devuelve una cadena formada por el nmero con los separadores de miles. La funcin Formatt tiene un amplio abanico de posibilidades en la conversin de nmeros y fechas a cadenas de texto. El siguiente paso es comprobar si el nmero lngNumeroes primo, utilizando la funcin EsPrimo que escribimos anteriormente. Si lo fuera, escribiramos en la etiqueta "El nmero " seguido del contenido de la cadena strNumero, y el texto " es primo" . Si no lo fuera, escribiramos lo mismo, pero indicando " no es primo". Terminado todo esto llevamos el cursor al cuadro de texto txtNumeromediante su mtodo SetFocus. Todo muy bien. El cliente est contento y el programa responde a lo que nos peda, pero Casi siempre hay un pero Viendo lo efectivos y rpidos que hemos sido, al cliente se le ocurre que sera muy interesante poner dos botoncitos que al presionarlos, dado un nmero cualquiera, nos muestre el nmero primo inmediatamente mayor menor al nmero que hemos mostrado. Tiene que ser fcil, total ya has hecho lo ms importante y ste es un pequeo detalle adicional, que no te costar prcticamente nada de tiempo y supongo que no tendrs problemas para hacrmelo sin aumentar el importe presupuestado A alguno le suena esta conversacin?. Y adems, aunque ya has terminado lo que te pedan, como hay que aadirle este pequeo detalle no te pagan hasta que no lo termines Decido aadir dos botones con unas flechas en su interior. Al primero, con una flecha hacia arriba lo llamo cmdPrimoSiguiente , y al segundo, con una flecha hacia abajo, cmdPrimoAnterior. Este es el diseo que le doy al formulario:

SENATI-Computacin e Informtica

197

Microsoft Office

Los eventos clic de los dos botones los escribo as: Private Sub cmdPrimoSiguiente_Click() ' La siguiente lnea hace que se ignoren los posibles errores en la ejecucin. On Error Resume Next Dim strNumero As String Dim lngNumero As Long Dim blnPrimo As Boolean strNumero = Trim(Nz(txtNumero, "")) If IsNumeric(strNumero) Then lngNumero = Val(strNumero) ' Si lngNumero est entre 0 y 2147483646 If lngNumero < 2147483647# And lngNumero >= 0 Then
' Mientras blnPrimo no sea Cierto Es decir Mientras lngNumero no sea primo.

Do While Not blnPrimo lngNumero = lngNumero + 1 blnPrimo = EsPrimo(lngNumero) Loop txtNumero = CStr(lngNumero) cmdPrimo_Click Else txtNumero = "1" cmdPrimo_Click End If Else txtNumero = "1" cmdPrimo_Click End If End Sub En el cdigo anterior podemos ver algunas cosas interesantes. Lo primero que nos puede llamar la atencin es la sentencia: On Error Resume Next Esta es la forma ms bsica de efectuar un control de los errores que se puedan originar durante la ejecucin de un programa en VBA. Simplemente se le est indicando a VBA que si se produjera un error en algn punto del procedimiento lo ignore y vaya a la siguiente sentencia del cdigo. El ignorar los errores no es una verdadera forma de control. Aprenderemos en otra entrega diferentes formas de manejar los posibles errores, ya sean generados por el cdigo, por datos inadecuados de los usuarios, etc. Ms adelante nos encontramos con una sentencia If que evala una expresin doble If lngNumero < 2147483647# And lngNumero >= 0 Then Para que esta expresin sea cierta, lo tienen que ser a l vez las dos expresiones unidas por And; es decir lngNumero tiene que ser menor que 2147483647 y simultneamente tiene que ser mayor igual que 0.

198

SENATI-Computacin e Informtica

c n con VBA i

Cuando varias expresiones estn unidas por el Operador Lgico And , para que la expresin total sea cierta, es necesario que lo sean cada una de esas expresiones. Con que haya una falsa, la expresin total ser falsa. Por el contrario, cuando varias expresiones estn unidas por el Operador Lgico Or , para que la expresin total sea cierta, es suficiente con que lo sea una cualquiera de las expresiones que la forman. A continuacin nos encontramos con otro Operador, es el operador negacin Not. Do While Not blnPrimo Not hace que la expresin lgica que le sigue cambie su valor. As si blnPrimo contiene 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 cdigo contenido entre la lnea de Doy la lnea del Loop. Cuando lngNumero sea primo, la funcin EsPrimo asignar True a blnPrimo, con lo que se saldr del bucle, pondr la cadena de texto del nmero txtNumero en el cuadro de texto y ejecutar el procedimiento cmdPrimo_Click, como si se hubiera presionado en el botn [cmdPrimo]. Si el valor de lngNumero no hubiera cumplido con el rango de valores, pone un 1 en el cuadro de texto txtNumero, y ejecuta el procedimiento cmdPrimo_Click. En el procedimiento que maneja la pulsacin de la tecla [cmdPrimoAnterior] aunque tiene una estructura semejante, se introducen unos cambios que considero interesante remarcar. Private Sub cmdPrimoAnterior_Click() ' Ignorar el error On Error Resume Next Dim strNumero As String Dim lngNumero As Long strNumero = Trim(Nz(txtNumero, "")) If IsNumeric(strNumero) Then lngNumero = Val(strNumero) If lngNumero < 2147483648# And lngNumero > 1 Then lngNumero = lngNumero - 1 Do Until EsPrimo(lngNumero) lngNumero = lngNumero - 1 Loop txtNumero = CStr(lngNumero) cmdPrimo_Click Else txtNumero = "2147483647" cmdPrimo_Click

SENATI-Computacin e Informtica

199

Microsoft Office

End If Else txtNumero = 2147483647" cmdPrimo_Click End If End Sub En primer lugar utilizamos una estructura del tipo Do Until, en vez de Do While . Adems, como condicin no utiliza una variable como en el caso anterior, sino que lo compara directamente con el valor devuelto por la funcin EsPrimo, que devuelve True False segn sea el caso: Do Until EsPrimo(lngNumero) Con esto nos evitamos utilizar una variable y una sentencia adicional. Adems el cdigo resulta algo ms claro.. En este caso, si la variable no supera los filtros, pone el valor "2147483647" en el cuadro de texto.

La gestin de los errores en procedimientos A la hora de utilizar el cdigo de un mdulo, hay dos tiempos Tiempo de Diseo. Tiempo de Ejecucin .

El tiempo de diseo transcurre mientras estamos modificando el contenido del cdigo de un mdulo, sea del tipo que sea, o cuando estamos cambiando las propiedades de controles, formularios o informes, en la llamada Vista Diseo, ya sea directamente mediante ejecucin de cdigo. Esto a ms de uno le sorprender: Access permite crear mediante cdigo, formularios por ejemplo utilizando el mtodo CreateForm, que devuelve una referencia a un nuevo formulario, tambin permite aadirle controles mediante el mtodo CreateControl , e incluso asociarle un mdulo, escribiendo dinmicamente todo su contenido. Para esto ltimo tendramos que crear una referencia al objeto Module del formulario, y para insertarle el cdigo utilizar su mtodo InsertText. De forma semejante existe el mtodo CreateReport para la creacin dinmica de informes. Si queremos usarlos posteriormente deberemos guardarlos, por ejemplo con el mtodo Savedel objeto DoCmd.

200

SENATI-Computacin e Informtica

c n con VBA i

El tiempo de ejecucin transcurre cuando hemos creado una instancia de un objeto, formulario, informe, clase o hemos llamado a un procedimiento de un mdulo estndar. En el lenguaje normal podramos decir que estamos en tiempo de ejecucin cuando estamos ejecutando los objetos o el cdigo de Access.

Errores en Tiempo de Diseo


En Tiempo de Diseo podemos cometer una serie de errores, a la hora de escribir el cdigo. Muchos de estos errores sern detectados inmediatamente por el editor de Access. Cuando escribimos una lnea de cdigo, Access realiza un anlisis del texto que estamos escribiendo. En este proceso se realiza fundamentalmente su anlisis sintctico. Tambin comprueba si hay sentencias incompletas, por ejemplo If sin Then. Si encuentra una expresin errnea lanza un mensaje de Error de compilacin e incluso aporta una cierta informacin que nos puede orientar sobre el origen del error.

La lnea de cdigo incorrecta queda marcada en color rojo. Cuando ejecutamos el cdigo, la primera vez que lo hace, no slo realiza un anlisis sintctico, adems va comprobando que todas las constantes y variables, ya sean de tipos estndar, referencias de objetos tipos definidos por el usuario, estn perfectamente declaradas, y los tipos de objeto existan y sean correctos.

Si se detecta algn error se interrumpe la ejecucin del cdigo y se lanza un aviso, marcando la zona del cdigo donde el error se ha producido. Esta depuracin del cdigo se va realizando conforme se efectan llamadas a los diferentes procedimientos.

SENATI-Computacin e Informtica

201

Microsoft Office

Podra ocurrir que tuviramos un procedimiento que slo se usara en determinadas condiciones y que contuviera por ejemplo una variable mal declarada. Si al ejecutar el cdigo no se llega a utilizar ese procedimiento, no se detectara el error que contiene. Para evitar sorpresas posteriores, es aconsejable realizar una pre-compilacin del cdigo. Para realizarla podemos utilizar la opcin de men [Compilar NombreDelFicheroAccess] de la opcin de men [Depuracin]. A esta opcin de men se puede llegar tambin mediante el botn [Compilar] .

Esta pre-compilacin revisa todo el cdigo, e incluso posibles procedimientos que no seran utilizados durante la ejecucin del programa. Esto nos da ms garanta sobre la calidad del cdigo y nos protege frente a ciertos tipos de error que de otra forma no podramos detectar.

Errores en Tiempo de Ejecucin


Hay una serie de errores que se pueden producir durante la ejecucin del cdigo, que no son de sintaxis ni originados por cdigo incompleto o declaraciones inadecuadas. Son, por ejemplo los errores provenientes de valores no previstos por el cdigo pasados ya sea por el propio usuario extrados de tablas, ficheros u otras fuentes de origen. Son los tpicos errores de Tiempo de Ejecucin. Supongamos que tenemos que dividir entre s dos cantidades; si el denominador vale cero, nos dar un error de divisin entre cero. Podra ocurrir que no hayamos previsto que un cuadro de texto contuviera el valor Null. Esto nos podra generar error al intentar asignar este valor a una cadena de texto. Tambin podra ocurrir que en una expresin por la que queremos asignar el resultado de una operacin a una variable, ese resultado superara el rango admisible por el tipo de la variable, con lo que tendramos un error de Desbordamiento. Un programa profesional debe adelantarse a todas estas posibilidades. Por ejemplo, si tenemos que dividir dos nmeros, se debera comprobar que el denominador no contuviese el valor Cero. Si tuviramos que obtener, un elemento de una matriz, coleccin, podramos evitar un error de subndice fuera de intervalo. Hay muchas circunstancias en las que se pueden producir errores en tiempo de ejecucin. VBA nos provee de una herramienta para poder controlarlos una vez que se han producido. Supongamos que tenemos el siguiente procedimiento. Public Sub ErrorDivisionPorCero() Dim n As Byte n=0 Debug.Print 4 / n End Sub - S, ya se que es un cdigo sin mucho sentido; lo pongo slo como ejemplo didctico.
202 SENATI-Computacin e Informtica

c n con VBA i

Si se ejecutara este procedimiento, ya sea llamado desde la ventana Inmediato o desde cualquier punto de la aplicacin se producir el preceptivo error:

Inmediatamente se interrumpir la aplicacin.

Operadores A la hora de construir instrucciones en VBA, que contengan operaciones, no slo manejamos constantes, variable y expresiones, sino que utilizamos unos elementos llamados Operadores, que aplicados a uno varios operandos, generan el resultado de la operacin.

Tipos de Operadores
Aritmticos De Comparacin Se usan para efectuar clculos matemticos Permiten efectuar comparaciones De Concatenacin Combinan cadenas de caracteres Lgicos Realizan operaciones lgicas Operadores aritmticos VBA maneja la mayor parte de los operadores aritmticos habituales en los lenguajes de programacin. Estos operadores son Suma Resta Producto Divisin Elevar a potencia Divisin entera Mdulo Resto + * / ^ \ MOD

En general, el tipo devuelto por el resultado de una operacin, es el del tipo del ms preciso de los operadores, salvo que el resultado supere su rango; en ese caso devolver el siguiente tipo de mayor precisin. Esta regla tiene abundantes excepciones.

SENATI-Computacin e Informtica

203

Microsoft Office

Para ms informacin consulte la ayuda de Access en la que se relata toda la casustica pormenorizada para cada uno de los operadores. Si el resultado de una operacin fuese un dato de coma flotante y se asignara a un tipo entero, se efectuara un redondeo. Si se trata de asignar un resultado fuera del rango de valores de la variable que va a recibir el resultado de la operacin, se generar un error de Desbordamiento y se interrumpir la ejecucin del cdigo, salvo que el error fuera capturado y tratado.

Operador Suma
El operador suma (+), sirve para asignar el resultado de la suma de dos nmeros, en el caso de cadenas, dar como resultado una cadena compuesta por las dos anteriores. La forma de usarlo es resultado = expresin1 +expresin2 Si expresin1 expresin2 tuvieran el valor Null, el resultado sera tambin el valor Null. expresin1 y expresin2 son los operandos, pudiendo ser cualquier valor numrico expresiones que los generen. Al contrario de otros lenguajes, VBA permite utilizar como operadores, tipos numricos distintos. Por ejemplo podemos sumar un tipo Byte con un tipo Long, con un tipo Date. Igualmente la variable resultado no tiene por qu ser del mismo tipo que los operandos. Una de las limitaciones es que el resultado de la operacin no debe sobrepasar la capacidad del tipo correspondiente a la variable que va a recibir el resultado de la misma. Esto es aplicable al resto de los operadores. Por ejemplo Public Sub SumaConError() Dim bytResultado As Byte bytResultado = 10 + 23 Debug.Print bytResultado bytResultado = 150 + 150 Debug.Print bytResultado End Sub Nos imprimir el resultado 33 y a continuacin nos generar el error n 6 Desbordamiento, ya que un tipo Byte slo admite valores que van de 0 a 255. Nos dara ese mismo tipo de error si tratramos de hacer bytResultado = 15 + (-16) Ya que a un Byteno se le pueden asignar valores negativos Lo mismo ocurrira en el siguiente cdigo Dim intResultado As Integer intResultado = 30000 + 30000 ya que un tipo Integermaneja valores entre -32.768y 32.767.

204

SENATI-Computacin e Informtica

c n con VBA i

Como hemos indicado en un punto anterior, si a una variable que maneja nmeros enteros le asignamos el resultado de una suma de nmeros de coma flotante, efectuar un redondeo del resultado al nmero entero ms prximo. Public Sub PruebaSumaComaFlotante() Dim intResultado As Integer intResultado = 3.1416 + 2.5468 Debug.Print intResultado intResultado = -3.1416 + (-2.5468) Debug.Print intResultado End Sub Nos mostrar como resultado los valores 6 y -6. Cuando se utilizan como operandos dos valores de tipos distintos, VBA cambia el menos preciso al tipo del ms preciso. Por ejemplo si vamos a sumar un Integer con un Long, VBA realiza un moldeado de tipo con el Integer, convirtindolo a Long antes de realizar la operacin. Si uno de los operadores fuera del tipo Date , el resultado tambin lo ser. Si desde la ventana Inmediato hacemos ? #3/14/5# + 1 nos mostrar 15/03/2005 (El comando ?es equivalente a Print) En este caso vemos que al sumar 1 a la fecha devuelve la fecha del da siguiente. Como ya hemos comentado el operador Suma permite sumar o concatenar cadenas. Esta facilidad puede en algn momento crearnos ms problemas que ventajas sobre todo cuando manejamos cadenas que contienen posibles valores numricos. Public Sub PruebaSumaCadenas() Dim strResultado As String strResultado = 3 + 4 Debug.Print strResultado strResultado = 3 + "4" Debug.Print strResultado strResultado = "3" + "4" Debug.Print strResultado End Sub Este cdigo nos devolver 7 7 34 Curiosamente 3 + "4"devuelve 7. Adems si tratamos de hacer 101 + " dlmatas" Nos dar el bonito error n 13; No coinciden los tipos. Por ello recomendamos usar el operador & como operador para sumar, unir cadenas, en vez del operador Suma +.

SENATI-Computacin e Informtica

205

Microsoft Office

101 & " dlmatas" 3 & "4" "34"

"101 dlmatas"

Hay otro sumando permitido por VBA que no deja de ser sorprendente. Es el valor Empty (vaco) que si lo usamos con un nmero, consigo mismo, se asimila al Cero. Y con una cadena a la cadena vaca "". Empty + "A" Empty + 3.1416 Empty + Empty "A" 3.1416 0

Esta promiscuidad en el manejo y la asignacin entre tipos diferentes de datos que permite Visual Basic para Aplicaciones, es algo que personalmente no me termina de convencer, pero como deca el castizo, - es lo que hay. VBA no permite los operadores del tipo Pre Post Incremental como seran: Y = ++X Y = X++

Operador Resta
El operador resta (-), sirve para asignar el resultado de la sustraccin entre dos nmeros. Tiene dos formas sintcticas resultado = expresin1 - expresin2 En la primera, la variable resultado recibe el valor resultante de restar expresin2 a expresin1 . En la segunda se cambia el signo al valor numrico de expresin. Si expresin1 expresin2 tuvieran el valor Null, resultado recibir tambin el valor Null. Empty lo considera como valor Cero. Como en el caso de la suma, si uno de los operadores fuera del tipo Date, el resultado tambin lo ser. Si desde la ventana Inmediato hacemos: Print #3/14/5# - 100 nos mostrar 04/12/2004 Para obtener informacin sobre los distintos tipos devueltos, en funcin del de los tipos de los operadores, consulte la ayuda de VBA.

Operador Producto
El operador producto (*), sirve para asignar el resultado del producto de dos nmeros. La forma de usarlo es resultado = expresin1*expresin2 resultado es una variable de tipo numrico y tanto expresin1 como expresin2 pueden ser cualquier expresin que de como resultado un valor numrico.

206

SENATI-Computacin e Informtica

c n con VBA i

El tipo numrico que se suministra a resultado depender de los tipos de expresin1 y expresin2 . Si uno de los operandos es del tipo Single y el otro del tipo Long, resultado recibir un tipo Double. Para ms informacin consultar la ayuda de VBA. Si alguno de los operadores es Null, resultadotomar tambin el valor Null. Si alguno de los operandos es Empty, resultado ser Cero. Ya que considerar que ese operando contiene el valor Cero.

Operador Divisin
El operador divisin (/),asigna el resultado de la divisin de dos nmeros. La forma de usarlo es resultado = expresin1 /expresin2 resultado es una variable de tipo numrico y tanto expresin1 como expresin2 pueden ser cualquier expresin que de como resultado un valor numrico. Si expresin2 fuera el valor Cero, dara el error 11 de Divisin por cero. El tipo numrico que recibe resultado normalmente ser del tipo Double. Esta regla tiene varias excepciones Si los operandos son del tipo Byte, Integer Single, resultadorecibir un Single, a menos que supere el rango de Single en cuyo caso ser del tipo Double. Si uno de los operandos fuera del tipo Decimal, resultado tambin lo ser. Es aplicable lo dicho en los anteriores operadores matemticos respecto a Null y Empty. Para ms informacin consultar la ayuda de VBA.

Operador Elevar a potencia


El operador para elevar a potencia (^),asigna el resultado de elevar la base a la potencia del exponente. La forma de usarlo es resultado = expresin1 ^exponente resultado es una variable de tipo numrico y tanto expresin1 como exponente pueden ser cualquier expresin que de como resultado un valor numrico. Si exponente fuera el valor Cero, dara como resultado 1 , incluso en el caso de que la base tuviera el valor Cero. ???. 45^0 0^0 1 1 (algo no muy correcto matemticamente hablando)

Exponente puede ser un valor fraccionario. As, si quisiramos obtener la raz cbica de 343 podramos hacer 343 ^ (1/3) 7

SENATI-Computacin e Informtica

207

Microsoft Office

Actuaramos igual para la raz cuadrada 16 ^ 0.5 4

Adicionalmente, para obtener la raz cuadrada en VBA existe la funcin Sqr. Sqr(16) 4

Cuando estudibamos matemticas nos contaron que en el campo de los nmeros reales, la raz cuadrada de un nmero negativo no tiene solucin. Por ello se crearon los nmeros imaginarios. Si tratamos de hacer Sqr(-16)nos generar un error 5 en tiempo de ejecucin, indicando que el valor -16 no es correcto para la funcin Sqr . Puede sorprender que esto no ocurra si calculamos la raz cuadrada elevando a 0.5 -16 ^ 0.5 -4

En cambio si hacemos (-16)^0.5, s dar el error. La razn la veremos ms adelante en la prioridad de operadores. El clculo del operador potencia se realiza antes que el del operador de cambio de signo. Tanto en la base como en el exponente admite nmeros de coma flotante. Por ejemplo podramos obtener algo tan extico como el resultado de elevar el nmero e, base de los logaritmos Neperianos, al valor de Pi 2.7182818 ^ 3.1415926 23,1406906315563

Operador Divisin entera


El operador divisin entera (\), realiza dos procesos. Si no tuvieran valores enteros, efectuara el redondeo del numerador y del denominador. A continuacin realiza la divisin de los valores resultantes, devolviendo la parte entera del resultado. La forma de usarlo es resultado = expresin1 \expresin2 resultado recibir un valor entero Byte, Integer Long. 8\3 -8 \ 3 12 \ 3 2 -2 4

Es aplicable lo comentado con anterioridad respecto a Emptyy Null. Null \ 3 Empty \ 3 Null 0

Si al redondear expresin2 diera como resultado el valor Cero, se producira el error 11 de Divisin por cero. 4 \ 0.1
208

Error 11
SENATI-Computacin e Informtica

c n con VBA i

4 \ 0.5 4 \ 0.51 4 \ Empty 4\0

Error 11 4 Error 11 Error 11

Hay que tener un especial cuidado con este operador, y no olvidar que previamente realiza un redondeo a cero decimales, tanto del numerador como del denominador. Este redondeo utiliza el mtodo de redondeo vigente en el sistema bancario americano, que es ligeramente diferente al europeo. De este tema hablaremos cuando veamos la funcin Round.

Operador Mdulo o Resto


El operador mdulo (Mod), Asigna el resto de una divisin entre dos nmeros. Como en el caso de la divisin entera, previamente se realiza un redondeo a cero decimales, tanto del dividendo como del divisor, si stos tuvieran un valor que no fuera entero. Su sintaxis es resultado = expresin1 Mod expresin2 Para el operador Mod, es aplicable lo comentado en el operador Divisin entera sobre el redondeo del numerador y denominador. 8 Mod 7 8.6 Mod 7 8.9 Mod 7.51 Null Mod 7.51 1 2 1 Null

Operadores de Comparacin
En algunos procesos podemos necesitar establecer si un valor es menor, igual mayor que otro, por ejemplo para la toma de una decisin mediante una sentencia If . . . Then. En VBA tenemos 6 tipos de operadores para esta tarea. Estos operadores son < <= > >= = <> < > < Menor que Menor igual que Mayor que Mayor igual que Igual a Distinto de

Vemos que para los operadores menor o igual , mayor o igual y distinto de hay dos posibles formas de escritura. La forma ms usual de uso es la escrita en primer lugar. Su sintaxis es resultado = expresin1 Operador expresin2 resultado es una variable de tipo boleano y tanto expresin1 como expresin2 pueden ser cualquier expresin que de como resultado un valor numrico o de cadena.

SENATI-Computacin e Informtica

209

Microsoft Office

Si expresin1 o expresin2 contuvieran el valor Null devolvera Null. Ejemplos de resultados 8<7 7<8 8 <= 8 8 >= 8 8>7 8=8 8 <> 8 "Avila" < "Barcelona" False True True True True True False True

A la hora de comparar cadenas, hay que tener en cuenta que el resultado puede cambiar en funcin de cmo hayamos establecido la forma de comparacin en Option Compare Por ejemplo, si no hemos establecido, a nivel del mdulo, valor para Option Compare , o hemos puesto Option Compare Binary, las siguiente expresiones darn False. "A"="a" "vila" < "Barcelona" False False

En cambio si tenemos Option Compare Text, las siguientes expresiones darn True. "A"="a" "vila" < "Barcelona" True True

Si utilizamos Option Compare Database , (slo con bases de datos Access) depender de cmo hemos definido la comparacin a nivel local en la base de datos. Todo lo anterior es aplicable para el resto de los operadores de comparacin con cadenas de texto.

Operadores de concatenacin
Los operadores de concatenacin sirven para unir varias cadenas en una sola. Estos operadores son + Suma & Ampersand

Ya he comentado la posibilidad que tiene el operador suma para unir cadenas, al igual que el operador &. Tambin he comentado mi preferencia por el operador & para efectuar estas tareas. La sintaxis para estos operadores es resultado = expresin1 + expresin2 resultado = expresin1 & expresin2

Operadores lgicos
Los operadores lgicos sirven para realizar operaciones lgicas con los operandos. Estos operadores son

210

SENATI-Computacin e Informtica

c n con VBA i

o And o Or o Not

Conjuncin Lgica Disyuncin lgica Negacin lgica

Los ms usados son los cuatro primeros, And, Or, Not . Los seis operadores, adems de trabajar con expresiones de tipo lgico Resultado = ExpresionBooleana Operador ExpresionBooleana permiten realizar comparaciones a nivel de bit con operandos numricos. Los operandos puede tener el valor Null, en cuyo caso el resultado depender de si es el primero, el segundo los dos.

Operador And El operador And, realiza una conjuncin lgica entre dos expresiones operandos. Su sintaxis es resultado = expresin1 And expresin2 Resultado puede ser cualquier variable numrica boleana. resultado tomar el valor True, slo y slo si las dos expresiones son ciertas. Las combinaciones de Nullcon True dan Null. Nullcon Nullda Null Las combinaciones que contengan Falsedan False. Cuadro de resultados del operador And Expresin 1 True True False False Veamos las siguientes expresiones 8 > 4 And 4 >= 3 IsNumeric("1234") And Len("1234") IsNumeric("Pepe") =4 And Len("1234") = 4 True True False Expresin 2 True False True False Resultado True False False False

Las operaciones de And con nmeros se realizan a nivel de Bits. 7 And 13 5

Cmo puede ser esto? 7, en binario es igual a 0111 13 es igual a 1101 El resultado ser 0101 El binario 101equivale en notacin decimal al nmero 5
SENATI-Computacin e Informtica 211

Microsoft Office

And devuelve el bit 1 slo si los dos bits correspondientes de los operandos, valen 1. Este operador es til para poder averiguar si un determinado bit de una expresin est activado (tiene el valor 1). Por ejemplo, si queremos averiguar directamente el valor del tercer bit de un nmero entero M , es suficiente ver el resultado de realizar M And 4. Si el resultado es 4 el tercer bit de M contiene el valor 1, si es 0el tercer bit contendr el valor 0. En general si queremos averiguar el bit N N de una expresin M comprobaremos si el resultado de M And 2^(N-1)es igual a 2^(N-1). Hay determinados dispositivos en los que la configuracin viene determinada por los bits de una determinada propiedad.

Operador Or El operador Or, realiza una Disyuncin lgica entre dos operandos. Su sintaxis es resultado = expresin1 Or expresin2 Resultado puede ser cualquier variable numrica boleana. resultado tomar el valor True, si cualquiera de las dos expresiones es True. Las combinaciones de Falsecon Falseda False . Nullcon False con Null da Null Cuadro de resultados del operador Or Expresin 1 True True False False Expresin 2 True False True False Resultado True True True False

A nivel de bits, en operaciones con nmeros, Or dar 1 salvo en el caso de que ambos bits valgan 0. 5 Or 13 0101 1101 1101 El binario 1101es en notacin decimal el nmero 13 Con el operador And, hemos visto que podemos averiguar qu bit est activado en una expresin. El operador Or nos permite definir el valor de un determinado bit de un valor. Supongamos que tenemos un dispositivo que contiene la propiedad Config de tipo Long, que controla el funcionamiento del mismo. 13

212

SENATI-Computacin e Informtica

c n con VBA i

Por circunstancias de la programacin queremos hacer que el 4 bit, contando por la derecha, de dicha propiedad, tome el valor 1. Para ello utilizaremos el operador Orde la siguiente manera: Dispositivo.Config = Dispositivo.Config Or 2^(3) En general para activar el bit nmero N de un valor M, haremos M = M or 2^(N-1)

Operador Not El operador Not, realiza una Negacin lgica sobre una expresin. Su sintaxis es resultado = Not expresin Resultado puede ser cualquier variable numrica boleana. Tomar el valor True, si expresin es False y a la inversa. Si expresin fuese Null, devolver Null. Cuadro de resultados del operador Not Expresin False Resultado True True False

A nivel de bits tambin se puede utilizar el operador Not. Not 13 13 0000000000001101 -14

Not 13 1111111111110010 El binario 1111111111110010 es el nmero -14

Prioridad de los operadores La prioridad en los operadores sigue estos rdenes para cada tipo de operador Aritmticos Exponenciacin (^ ) Negacin () Multiplicacin y divisin (*, /) Divisin de enteros (\) Mdulo aritmtico (Mod) Adicin y substraccin (+, ) Concatenacin de cadenas (&) De comparacin Igualdad (=) Desigualdad (<>) Menor que (<) Mayor que (> ) Menor o igual que (<= ) Mayor o igual que (>=) Like Is Lgicos Not And Or Xor Eqv Imp

Las multiplicaciones y divisiones se evalan entre s de izquierda a derecha, siguiendo el orden en el que estn escritas. Esto mismo ocurre con la suma y la resta. Los operadores aritmticos se evalan antes que los de comparacin.
SENATI-Computacin e Informtica 213

Microsoft Office

Todo esto lleva a al conveniencia de la utilizacin de parntesis, para tener un perfecto control del orden de interpretacin. En una expresin lo primero que se evala son las subexpresiones contenidas dentro de parntesis, si las hubiera. En el caso del ejemplo, dblD = intA ^ 12 / intC si quisiramos que primero se efectuara la divisin de 12 entre intCdeberamos haber escrito dblD = intA ^ (12 / intC) En el caso de la expresin: 4 Or 19 And 7 Or 13 se evala en este orden 1. 2. 3. 19 And 7 4 Or 3 7 Or 13 3 7 15

Si quisiramos que evaluara primero 4 or 19, 7 or 13 y luego los respectivos resultados mediante And, deberamos haber escrito (4 Or 19) And (7 Or 13) Que nos dar como resultado 7. La utilizacin de parntesis aclara el cdigo y ayuda a evitar errores en el diseo del mismo, muchas veces con resultados inesperados, y de difcil deteccin.

Editando el cdigo de las macros de Access


Cdigo frente a macros
Access posee un potente juego de macros que permiten un alto grado de automatizacin 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 prctica cmo 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 PruebaMacro. Abrimos la ventana macros, haciendo clic en la ficha Crear, Cinta de opciones Otros y en el botn [Macro].

Una vez dentro podremos ver la columna Accin, y si activramos la opcin Condiciones del men Ver nos aparecer la columna Condicin .
214 SENATI-Computacin e Informtica

c n con VBA i

En la primera fila de columna Accin seleccionamos la accin [ AbrirFormulario]. Inmediatamente despus 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 PruebaMacro que acabamos de guardar. Seleccionaremos ese formulario.

Vamos a la fila siguiente de la columna Accin, y seleccionamos la accin [CuadroMsj], y en los cuadros de abajo ponemos: En Mensaje: Formulario abierto, y en Tipo: Informacin . A continuacin presionamos en el botn guardar, asignndole como 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 despus de cargar el archivo. y nos muestra un cuadro de mensaje tipo a los que ya hemos visto con la funcin MsgBox. Hemos comprobado lo siguiente: si a una macro, le ponemos como nombre Autoexec, se ejecutarn sus acciones en el momento de abrir el fichero Access. Este es un comportamiento interesante al que en algn momento podremos sacar partido. Y a cuento de qu viene ahora el hablar de las macros?. No es ir hacia atrs? Las macros ha sido una herramienta muy utilizada por usuarios avanzados de Access que no tenan conocimientos de programacin y que queran dotar a sus aplicativos de cierto grado de automatismo. Lo que quizs algunos de esos usuarios no saban es que Access permite realizar una conversin directa de las macros a cdigo VBA. Las funciones y procedimientos de VBA tienen ms flexibilidad y posibilidades que las macros. Adems

SENATI-Computacin e Informtica

215

Microsoft Office

las macros no pueden realizar tareas como el 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 Luego hacemos clic en el Boton Office, para luego indicarle la opcin Guardar como, luego Guardar objeto como

Tras esto nos aparece una nueva ventana en la que se nos propone cambiar el nombre de la Macro. En el segundo cuadro seleccionamos [Mdulo] y presionamos el botn [Aceptar]. Aparecera otra ventana, no cambiamos esos valores y presionamos el botn [Convertir].

Si ahora nos vamos a la ventana de Mdulos veremos que aparece un nuevo mdulo llamado Macro convertida - Autoexec.

Despues de hacer doble clic sobre esa macros aparecer el cdigo correspondiente

216

SENATI-Computacin e Informtica

c n con VBA i

El proceso de conversin de macros se puede tambin realizar siguiendo estos pasos 1. Seleccione la macro a convertir en el panel de exploracion. 2. Seleccionamos la ficha [Herramientas de base de datos ] Cinta de opciones Macro y dentro de ella el botn [Convertir Macro a Visual Basic ]

3. Nos aparece el cuadro Convertir macro del punto anterior. Se pueden convertir tanto las macros generales como las macros asociadas a formularios o informes. Si abrimos el mdulo generado, podremos ver que contiene el siguiente cdigo. Option Compare Database Function Autoexec() On Error GoTo Autoexec_Err DoCmd.OpenForm "Saludo", acNormal, "", "", , acNormal Autoexec_Exit: Exit Function Autoexec_Err: MsgBox Error$ Resume Autoexec_Exit End Function Vemos que la macro ha sido cambiada por un mdulo que contiene la funcin Autoexec. Quiero suponer que en vez de un procedimiento sub, genera una funcin que no devuelve explcitamente ningn valor, para que pueda ser utilizada directamente desde la pestaa eventos de la ventana de propiedades de un formulario, informe o control. Esta funcin tiene dos partes que se corresponden con las dos acciones de la macro. La accin AbrirFormulario se sustituye por el mtodo OpenForm del objeto DoCmd. La accin CuadroMsj se sustituye por la funcin MsgBoxque ya hemos visto. Las mismas acciones que hemos puesto en la macro Autoexec, podramos haberlas puesto en un mismo archivo de Macro, como dos macros independientes. Para ello vamos a hacer lo siguiente: Desde la ventana de exploracion, ponemos el cursor del ratn encima de la macro Autoexec y presionamos el botn derecho del ratn Nos aparecer un men contextual, una de cuyas opciones es Cambiar nombre. Cambiamos el nombre de la macro Autoexec, por el de MacrosInicio.

SENATI-Computacin e Informtica

217

Microsoft Office

A continuacin pulsamos el botn de Diseo (el de la escuadra, la regla y el lpiz ) y se nos abrir la macro en vista diseo.

Vamos a activar, si no lo estuviera, una columna a la izquierda que contendr el nombre de la macro. Recordemos que hay que hacer visible, en el editor de macros, la columna correspondiente al nombre de macro. Para ello, desde la ficha Diseo, Cinta de Opciones [Mostrar u Ocultar ] activamos la opcin [Nombres de macro].

Tras esto nos aparecer una columna vaca a la izquierda. Por pura cuestin de orden vamos a separar las dos acciones, que se convertirn en macros independientes. Para ello ponemos el cursor a la izquierda de la celda donde aparece CuadroMsj, y pulsamos dos veces en la opcin de la cinta Filas [InsertarFilas]. Ahora nos ponemos a la izquierda de la primera Accin (AbrirFormulario) y escribimos como nombre para esa macro Autoexec. En la celda que est a la izquierda de la accin CuadroMsj escribimos como nombre de la macro algo tan original como Mensaje. Con esto ya tenemos dos macros diferentes escritas en el mismo archivo de macros. En el caso anterior tenamos una nica macro llamada Autoexec que ejecutaba 2 acciones diferentes.

218

SENATI-Computacin e Informtica

c n con VBA i

Ahora, al arrancar el fichero de access se ejecutar la macro Autoexec, que nos abrir el formulario, pero no se ejecutar la accin de la macro Mensaje. Puedes comprobarlo cerrando el fichero access y volvindolo a abrir. Para solventar este problema, podemos llamar a la macro Mensaje desde la macro Autoexec. Lo podemos conseguir mediante la Accin EjecutarMacro. En la columna Accin, nos ponemos debajo de la celda en la que est escrita la accin AbrirFormulario y seleccionamos la accin EjecutarMacro. A continuacin seleccionamos como parmetro la macro MacrosInicio.Mensaje . Guardamos todo y vemos que ahora s que se muestra el cuadro de mensaje para indicarnos la apertura del formulario. Cmo afectara este cambio en las macros al cdigo que se generara con el conversor de macros a cdigo VBA?. La respuesta la podemos obtener de forma inmediata. Guardamos la macro, si es que no lo habamos hecho, y desde la ventana macro, seleccionamos nuestra flamante MacrosInicio y activamos la ficha [Herramientas de base de datos] Cinta de opciones Macro y dentro de ella el botn [Convertir Macro a Visual Basic ] Se nos genera un nuevo mdulo, esta vez con el nombre Macro convertidaMacrosInicio. El cdigo que contiene ese mdulo es el siguiente Option Compare Database Option Explicit '-----------------------------------------------------------' MacrosInicio_Autoexec ''-----------------------------------------------------------Function MacrosInicio_Autoexec() On Error GoTo MacrosInicio_Autoexec_Err DoCmd.OpenForm "PruebaMacro", acNormal, "", "", , acNormal DoCmd.RunMacro "MacrosInicio.Mensaje", , "" MacrosInicio_Autoexec_Exit: Exit Function MacrosInicio_Autoexec_Err: MsgBox Error$ Resume MacrosInicio_Autoexec_Exit End Function '-----------------------------------------------------------' MacrosInicio_Mensaje '-----------------------------------------------------------Function MacrosInicio_Mensaje() On Error GoTo MacrosInicio_Mensaje_Err Beep MsgBox "Formulario abierto", vbOKOnly, "" MacrosInicio_Mensaje_Exit: Exit Function MacrosInicio_Mensaje_Err: MsgBox Error$ Resume MacrosInicio_Mensaje_Exit End Function

SENATI-Computacin e Informtica

219

Microsoft Office

As como la primera vez nos cre un mdulo con una nica funcin, al tener ahora dos macro en un mismo fichero de macros, nos crea un mdulo con dos funciones.

Cundo usar Macros y cundo cdigo VBA? Las macros permiten automatizar, de una forma simple, tareas como Abrir un formulario, cerrar un informe o desplazarnos entre los registros de una tabla. Si acudimos a la ayuda de Access, en el apartado con ttulo semejante vemos que nos recomienda el uso de macros fundamentalmente para realizar asignaciones globales de teclas. Incluso para la realizacin de determinadas acciones al arrancar la base de datos, comenta la posibilidad de utilizar la opcin Inicio del men Herramientas. Para el resto de las acciones recomienda la utilizacin de VBA. La mayor parte de las acciones ejecutables mediante macros, pueden ser realizadas ventajosamente usando VBA mediante los mtodos del objeto DoCmd, que las implementa. Como recordatorio indicar que si por ejemplo quisiramos que al abrir una base de datos se realice una determinada accin podemos usar una macro llamada Autoexec. Como tambin hemos comentado, sta no es la nica opcin, ya que podramos hacer que aparezca un formulario concreto al arrancar la aplicacin, mediante la opcin [Inicio] del men [Herramientas] y efectuar las llamadas a los procedimientos que nos interesen desde el cdigo de ese formulario.

El objeto DoCmd El objeto DoCmd es un objeto especfico de Access, creado para sustituir a las acciones de las Macros. De hecho sustituye con ventaja a casi todas ellas. Hasta Access 97, no exista ese objeto, pero s exista el procedimiento DoCmd. Por tanto el objeto DoCmd empez a existir con Access 97. Los argumentos de la accin sern ahora los argumentos del mtodo de DoCmd . En la accin AbrirFormulario, ponamos como Nombre del formulario PruebaMacro, como vista Formulario y como modo de la ventana Normal. Al mtodo OpenForm, que abre un formulario, le pasamos como nombre del formulario ( FormName) "PruebaMacro" , como vista ( View) acNormal, y como tipo de ventana ( WindowMode)acNormal. Las constante acNormalest definida como una constante enumerada miembro de Access.AcFormView. Su valor numrico es 0. Ya comentamos las Constantes Enumeradas en la entrega 12. Este tipo de constantes van a ir apareciendo con mucha frecuencia conforme vayamos avanzando en VBA. Como habrs podido ver hay un paralelismo total entre la accin de macro y el mtodo correspondiente de DoCmd.

220

SENATI-Computacin e Informtica

c n con VBA i

Pero no todas las Acciones de las macros estn implementadas en los mtodos de DoCmd. Por ejemplo, en la conversin de macros a cdigo VBA hemos visto que CuadroMsj se sustituye por la funcin MsgBox. Otras acciones no implementadas en DoCmd son Accin RunApp RunCode SendKeys SetValue StopAllMacros StopMacro Equivalencia en VBA Funcin Shell Llamada a la subrutina correspondiente Instruccin SendKeys Operador = de asignacin Instrucciones Stop o End Instrucciones Exit Sub o Exit Function

Podemos ver directamente los mtodos implementados en la clase DoCmd, mediante la ventana del Examinador de objetos. Para activar esa ventana pulsaremos la tecla [F2] desde el editor de cdigo. 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 bsqueda se nos posicionar en la clase DoCmd. En la columna de la derecha podremos ver sus mtodos. Se puede comprobar que, al contrario de otras clases, no posee ni propiedades ni eventos.

SENATI-Computacin e Informtica

221

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. Si por ejemplo se aade un botn a un formulario, teniendo activado el asistente para controles, (botn sealado con la flecha roja) veremos que Access nos muestra un formulario en el que nos pide informacin acerca de la accin que queremos que ocurra cuando presionemos en el botn.

En nuestro caso vamos a crear un botn que haga que vayamos al registro siguiente respecto al registro actual. Primero debemos decidir qu categora vamos a utilizar, por lo que seleccionaremos en la izquierda la [Exploracin de registros]. En la ventana de la derecha (acciones) seleccionaremos [Ir al registro siguiente]. Presionamos dos veces las sucesivas teclas [Siguiente] y ponemos como nombre del botn cmdRegistroSiguiente, y presionamos la tecla [Finalizar]. Si hemos seguido estos pasos, nos mostrar en el formulario un botn con una flecha a la derecha. Si abrimos el mdulo de clase del formulario veremos que ha escrito el siguiente cdigo 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
222 SENATI-Computacin e Informtica

Vemos que nos ha generado un procedimiento de evento que define qu debe pasar cuando se presione el botn [cmdRegistroSiguiente]. En concreto vemos que usa el objeto DoCmd con el mtodo GotoRecord, y el parmetro acNext. Esto hace que intente posicionarse en el registro siguiente. Incluso define un sistema para controlar posibles errores que se puedan generar. Sugiero al lector que intente realizar un formulario, conectado a una tabla o consulta y que contenga botones para efectuar las siguientes operaciones: 1. 2. 3. 4. 5. 6. 7. Ir al primer registro Ir al registro anterior Ir al registro siguiente Ir al ltimo registro Agregar nuevo registro Guardar registro Cerrar Formulario

Uso de controles ActiveX


Agregando controles en el Formulario
Formularios De todos los objetos de Access vamos a empezar a trabajar con los formularios. Un formulario es el elemento bsico para la introduccin de datos y su mantenimiento, por parte del usuario final de nuestra aplicacin. Tambin puede servir para mostrar avisos, al estilo de un Cuadro de mensaje, como formulario de inicio de una aplicacin, como formulario del tipo Acerca de o incluso como contenedor de otro subformulario u objetos ActiveX. Ya hemos comentado que el objeto Form, que representa a un formulario, es un elemento de la coleccin Forms. Vemos tambin que un objeto Formcontiene como atributo el objeto Module. El objeto Module representa el mdulo de clase del formulario, en el que podemos, al igual que en una clase normal definir propiedades y mtodos personalizados. Para efectuar las pruebas de cdigo, vamos a crear un formulario sencillo y a trabajar con su cdigo de clase. Para simplificar ms las cosas no lo enlazaremos con ningn origen de datos. Eventos de un formulario Ahora vamos a poner un botn que nos servir para cerrar el formulario, una vez abierto. Usaremos el [ Asistente para Controles]. Compruebe que est activada la Varita mgica
SENATI-Computacin e Informtica 223

Seleccionamos el Botn de Comando y lo dibujamos en la esquina inferior derecha del formulario. Tras esto se nos abre el asistente y nos pregunta qu queremos hacer con el botn: Seleccionamos en la lista izquierda Operaciones con Formularios, y en la derecha Cerrar formulario.

Como imagen seleccionamos Salir (la puerta con la flecha). Tras esto pasan dos cosas: El botn se nos muestra en el formulario, con el grfico de la puerta y la flecha:

Pero, aparte de esta imagen, ms o menos esttica, ha ocurrido algo muy importante en el mdulo de cdigo asociado al formulario. Si teniendo seleccionado el botn, abrimos la Hoja de Propiedades, pulsando el botn [Hoja de Propiedades] de la Cinta Herramientas, seleccionamos la pestaa [Eventos] y en ella podemos ver que el evento Al hacer clic tiene asociado un procedimiento de evento en el cdigo de clase asociado al formulario.

224

SENATI-Computacin e Informtica

Si hacemos clic en la palabra [Macro Incrustada], se nos abre un botn con puntos suspensivos a su derecha. Pulsando en ese botn se nos abrira el diseador de Macros teniendo posicionado el cursor en la Accion correspondiente.

Para ver el cdigo se debe pulsar en el botn [Ver Cdigo] de la Cinta Herramientas:

En la ventana del Explorador de proyectos, vemos que de la carpeta Microsoft Office Objetos de clase, cuelga el objeto Form_Formulario1. Asociado a este objeto podemos ver el cdigo del mdulo de clase del Formulario, en el que ha aparecido el procedimiento

SENATI-Computacin e Informtica

225

Si hacemos clic en el cuadro combinado y elegimos Comando1 Veremos un procedimiento asociado al Boton de Comando Sub Comando1_Click()

Este procedimiento se ejecutar cada vez que presionemos sobre el botn de nombre Comando1. Este botn es el que hemos colocado en el formulario. Nosotros tendremos que colocar el cdigo asociado Private Sub Comando1_Click() On Error GoTo HayError DoCmd.Close Salir: Exit Sub HayError: MsgBox Err.Description Resume Salir End Sub La primera lnea indica la etiqueta de la lnea a la que debe saltar el cdigo si se produjera un error; en este caso a la lnea HayError: Una vez que salte a esa lnea, el cdigo har que le muestre la descripcin del error, tras lo que anular el error y efectuar un salto a la etiqueta Salir:desde donde saldr del procedimiento mediante Exit Sub . Podemos cambiar ese cdigo. Una cosa que no me hace especialmente feliz es el nombre del botn. En general me gustan ms nombres que sean descriptivos, por ejemplo cmdCerrar. por lo que voy a modificar el cdigo para quede as: Private Sub CmdCerrar_Click() On Error GoTo HayError DoCmd.Close Exit Sub

226

SENATI-Computacin e Informtica

HayError: MsgBox Err.Description Resume Salir End Sub Lo primero que he hecho ha sido cambiar el nombre del procedimiento gestor del evento Click del botn. Esto es pas porque quiero que el botn se llame cmdCerrar . cmd indica que es un botn y Cerrar indica el procedimiento que ejecuta, Cerrar el formulario. Nos volvemos al diseo del formulario cerrando la ventana del editor de cdigo, por ejemplo pulsando en el aspa superior derecha de la ventana. Volvemos a abrir la ventana de propiedades, y lo primero que vamos a hacer es cambiar el nombre del botn, cosa que haremos pulsando en la pestaa [Otras] seleccionando la propiedad Nombre y escribiendo cmdCerrar.

A continuacin asignamos el procedimiento cmdCerrar_Click()al evento Al hacer clic del botn, como hemos visto en un prrafo anterior.

SENATI-Computacin e Informtica

227

c n con VBA i

Guardamos los cambios y abrimos el formulario.

No es nada espectacular, pero podemos comprobar que al apretar el botn, el formulario se cierra, que es lo que en principio queramos. 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. Para ello vamos a seleccionar una serie de eventos del formulario y a escribir un pequeo cdigo que indicar en qu orden se han producido estos eventos. Primero creamos, a nivel del mdulo, una variable que se ir incrementando cuando se produzcan determinados eventos. Vamos a seleccionar los siguientes eventos del formulario: Activate Close Current Deactivate GotFocus Load LostFocus Open Resize Unload Al activar Al cerrar Al activar registro Al desactivar Al recibir el foco Al cargar Al perder el foco Al abrir Al cambiar el tamao Al descargar Cuando el formulario pasa a ser ventana activa 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 tamao Al cerrar un formulario, antes de desaparecer

Vamos asociando cada uno de los eventos y escribimos su cdigo El cdigo sera tan simple como ste: Option Compare Database Option Explicit Dim intNumero As Integer Private Sub Form_Activate() End Sub Private Sub Form_Close () End Sub Private Sub Form_Current() End Sub
228

MuestraOrden "Activate"

MuestraOrden "Close"

MuestraOrden "Current"

SENATI-Computacin e Informtica

Private Sub Form_Deactivate () End Sub Private Sub Form_GotFocus() End Sub Private Sub Form_Load() End Sub Private Sub Form_LostFocus() End Sub

MuestraOrden "Deactivate"

MuestraOrden "GotFocus"

MuestraOrden "Load"

MuestraOrden "LostFocus "

Private Sub Form_Open(Cancel As Integer) End Sub Private Sub Form_Resize() End Sub

MuestraOrden "Open"

MuestraOrden "Resize"

Private Sub Form_Unload(Cancel As Integer) End Sub

MuestraOrden "Unload"

Private Sub MuestraOrden(ByVal Evento As String) intNumero = intNumero + 1 Debug.Print 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 Qu hace este cdigo? Cuando se produce cualquiera de los eventos incluidos en el mismo, ste llama al procedimiento MuestraOrden, pasndole como parmetro el nombre del evento. Este procedimiento incrementa la variable intNumero e imprime su valor, junto con el nombre del evento pasado, en la ventana Inmediato. Con este simple procedimiento podemos averiguar en qu orden se van produciendo los eventos. Grabamos, abrimos el formulario y lo cerramos presionando el botn de cierre del formulario cmdCerrar.

SENATI-Computacin e Informtica

229

Microsoft Data Access Objects (DAO)


Representa una forma de contactar con el motor de la base de datos desde VBA. Es una biblioteca orientada a objetos que permite acceder al motor de la base de datos mediante un conjunto de clases de las cuales se pueden crear instancias u objetos. Con DAO se pueden escribir programas en VBA que realicen prcticamente cualquier tarea que un usuario o diseador pueda hacer desde la consola, como por ejemplo crear tablas, ejecutar consultas, modificar el contenido de alguna celda de alguna tabla, etc

Instalacion de una Referencia a DAO Para poder trabajar con DAO es necesario indicarle a Access la biblioteca donde se encuentran las clases ( y mtodos ) adecuados, lo cual se realiza siguiendo los pasos descritos a continuacin:

Abrir el editor de cdigo de la base de datos Una vez en modo edicin de cdigo VBA, debe activarse la opcin Herramientas Referencias en el men superior Cuando se pulsa esta opcin, aparece una ventana que muestra todas las bibliotecas de software disponibles, ordenadas por orden alfabetico. La biblioteca deseada es Microsoft DAO 3.6. Para seleccionarla, basta con pulsar sobre el recuadro blanco situado a su izquierda.

Una vez instaladas las referencias a esta biblioteca, ya se puede desde Access trabajar con DAO.
230 SENATI-Computacin e Informtica

C Clases, Objetos y Colecciones Como ya se ha visto, VBA es un lenguaje orientado a objetos. Por tanto, consta de clases y objetos. Las clases son declaraciones de tipos de datos junto a los mtodos qu e los procesan. Los objetos son instancias de una determinada clase. En VBA casi todos los componentes de la base de datos van a ser objetos de alguna clase. Por ejemplo, una tabla ser un objeto de la clase Tabledef, una consulta ser un objeto de la clase QueryDef, un campo ser un objeto de la clase Field, etc Cada objetotiene una serie de porpiedades o datos internos y una serie de mtodos que pueden invocarse. Por ejemplo, una tabla u objeto de la clase TableDef tiene una propiedad denominada Name, la cual contiene el nombre de la tabla. Por otro lado, tambin tiene un mtodo CreateField, el cual per mite aadir un campo a dicha tabla. En DAO existe tambin el concepto de coleccin. Una coleccin no es sino un conjunto de cero, uno o mas objetos. Habitualmente su nombre es plural, por lo que termina con ss o con es. Por ejemplo, Users es una coleccin de objetos de la clase User Existen varias formas de acceder a los distintos objetos de una coleccin: Coleccin!Objeto: Por ejemplo, Forms!frmFacturas representa el formulario frmFacturas de la coleccin Forms Coleccin( objeto): por ejemplo, Forms( frmFacturas) equivale al ejemplo anterior. En lugar de una tira de caracteres, se puede utilizar una variable. Coleccin(ndice): Por ejemplo, Forms(0) es el primer formulario abierto en la base de datos.

Recuerde que los nombres deben estar entre corchet es en caso de contener blancos. La mejor forma de procesar todos los objetos de una coleccin es mediante la sentencia For Each. El Codigo de Ejemplo siguiente imprime en la ventana inmediato los nombres de todas la tablas de una base de datos:

For Each t In dbCurr.TableDefs Debug.Print t.Name Next

A la hora de accede a un subcomponente de un component, en access existen dos caracteres especiales: el character ! y el carcter . Con una aplicabilidad muy distinta: ! Sirve para indicarsubobjetos de un objeto mayor. El ejemplo siguiente muestra la forma de acceder al cuadro de texto codcli del formulario de facturas : frmFacturas!codcli . Sirve para acceder a las propiedades y mtodos de un objeto. El ejemplo siguiente muestra la forma de acceder a la propiedad Name de un objeto t de la clase TableDef : t.Name

SENATI-Computacin e Informtica

231

El ejemplo siguiente muestra la forma de llamar al mtodo CreateField sobre un objeto t de la clase TableDef: t.CreateField(telfono,dbText, 10 )

El siguiente ejemplo muestra un cdigo VBA que emplea DAO para imprimir en la ventana Inmediato el nombre de la base de datos actual Dim dbcurr As Database Set dbCurr = DBEngine.Workspaces(0).Databases(0) Debug.Print dbCurr.Name

Microsoft Jet Replication Projects (JRO)


Utilice JRO con bases de datos de Microsoft Access (.MDB) si necesita controlar mediante programacin el intercambio de datos e informacin de diseo entre los miembros del conjunto de rplicas. Por ejemplo, puede usar JRO para escribir un procedimiento que sincronice automticamente la rplica de un usuario con las dem s rplicas del conjunto cuando el usuario abra la base de datos. La base de datos debe estar cerrada para que pueda replicarse mediante programacin.

Mtodos Mtodo CreateReplica Mtodo GetObjectReplicability Mtodo MakeReplicable Mtodo SetObjectReplicability Mtodo Synchronize

Propiedades Propiedad ActiveConnection Propiedad ConflictFunction Propiedad ConflictTables Propiedad DesignMasterID Propiedad ReplicaID Propiedad ReplicaType Propiedad RetentionPeriod Propiedad TableName Propiedad Visibility

Mtodos y propiedades disponibles en una rplica parcial Mtodo Append Mtodo Delete Mtodo PopulatePartial Propiedad FilterCriteria Propiedad FilterType Propiedad Priority
232 SENATI-Computacin e Informtica

El siguiente ejemplo muestra los filtros de una replica parcial existente. Para poder utilizar los objetos JRO con sus propiedades y sus mtodos es preciso establecer la referencia a la biblioteca Microsoft Jet and Replication Objects 2.1 Library

Public Sub VerFiltros(RepParcial As String) Dim flt As JRO.Filter Dim rep As New JRO.Replica Dim I As Integer Rep.ActriveConnection = RepParcial Anexa un filtro parcial a una Tabla Imprime todos los filtros For i = 1 To rep.Filters.Count -1 Set flt = rep.Filters.Count 1 Debug.Print flt.TableName, flt.FilterCriteria, flt.FilterType Next i End Sub

Microsoft ActiveX Data Objects (ADO)


ADO define una secuencia de acciones dentro de su modelo para poder accede a los origenes de datos. El modelo proporciona los medios necesarios para realizar dichas acciones mediante los mtodos y propiedades de los objetos, y los eventos informan de si se van produciendo satisfactoriamente o no. Los pasos de esta secuencia son: Conectarse a un Origen de Datos, mediante un objeto Connection. Si se desea realizar una transaccin se deber establecer en este punto.

SENATI-Computacin e Informtica

233

Especificar un comando ( objeto Command ) para tener acceso al origen de datos, opcionalmente con parmetros variables ( objeto Parameter ). Si se desea una instruccin SQL se debern indicar columnas, tablas y valores de la instruccin SQL como parmetros.
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 se desee, y actualizar el origen de datos con los cambios de las filas de la cache, en caso de ser necesario. Como resultado de la conexin o de ejecutar un comando, se proporciona un medio general de deteccin de errores ( objeto Error ) Por ultimo, se ha de finalizar la conexin. En caso de utilizar una transaccin, se deber confirmar o cancelar.

Se pueden utilizar estos pasos en el modelo de programacin, pero ADO permite realizar parte del modelo. Por ejemplo, se podran almacenar los datos a partir de un archivo directamente en una cache de filas y despus utilizar los recursos de ADO simplemente para examinar los datos. Cuando ciertas operaciones estn a punto de suceder o han sucedido, se produc e una notificacin o aviso denominado evento. Los eventos permiten gestionar la aplicacin y actuar en consecuencia segn sea la notificacin. ADO no modeliza los eventos, pero permite tratarlos mediante llamadas a procedimientos del controlador de eventos. Un controlador de eventos es una rutina o mtodo al se le llama antes o despus de que se produzca el evento. Ello da lugar a un modelo de eventos definido por los eventos o avisos que se producen para la s operaciones sncronas ( una operacin sncrona espera a que se produzca el aviso correspondiente para poder continuar ) o asncronas.

Preguntas de Repaso
1. Cmo definira un bucle para iterar a travs de una matriz de 10 enteros? 2. Si desea que el cdigo de un bucle se ejecute al menos una vez Qu bucle elegira? 3. Como se podra asegurar que el cdigo de una instruccin If funcione correctamente? 4. Para que se utiliza la instruccin Exit For? 5. Los comandos como DoCMD tambin pueden usarse en otras aplicaciones de Office? 6. A que se refiere el botn de flechas que se muestra en un Menu?

234

SENATI-Computacin e Informtica

7. Cul es el mejor tipo de datos para representar datos con puntos decimales? 8. Cul es la diferencia entre los operadores de concatennacion + y & 9. Cul es la diferencia entre declarar e inicializar una variable?

Ejercicios Casos Practicos


01. Haz un programa de nombre Prog1, que funcione de la siguiente forma: El programa nos pide que escribamos dos nmeros positivos menores de 57. El programa nos da como resultado el producto de los dos nmeros. Si los nmeros no son positivos o son mayores de 57, 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 Prog2, que nos vaya pidiendo nmeros. Si escribimos el nmero 9999 se acaba; por ltimo, el programa nos da como resultado el nmero de nmeros introducidos, exceptuando el 9999. 03. Escribe un procedimiento de nombre Prog3, que haga lo mismo que el anterior, pero adems nos d la suma de todos los nmeros introducidos, e xceptuando el 9999 04. Escribe un procedimiento de nombre Prog4, que haga lo mismo que el anterior, pero adems nos d el producto de los nmeros introducidos, exceptuando el 9999. 05. Escribe un procedimiento de nombre Prog5, que escriba todos los mltiplos de 23 inferiores a 1000 y por ltimo nos d la suma de todos ellos. 06. Escribe un procedimiento de nombre Prog6, que sirva para hacer una tabla de valores de la funcin y=sen(7x-5) El programa nos pide los dos valores de x (valores mximo y mnimo) El programa nos pide el incremento (variacin) de la x.

07. Escribe un procedimiento de nombre Prog7, que sirva para calcular un cateto de un tringulo rectngulo 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.
235

SENATI-Computacin e Informtica

08. Escribe un procedimiento de nombre Prog8, que escriba los 15 primeros mltiplos de 7, su suma y su producto. El programa ha de tener la posibilidad de volver a empezar. 09. Escribe un procedimiento de nombre Prog9, que sirva para calcular el rea de un tringulo o el rea de un rectngulo o el rea de un crculo. El programa ha de tener la posibilidad de volver a empezar. Utiliza la estructura Case. 10. Escribe un procedimiento de nombre Prog10, que dibuje un rectngulo de asteriscos a partir de la base y la altura. 11. Escribe un procedimiento de nombre Prog11, que dibuje un cuadrado con el carcter que introducimos por teclado, a partir del lado. 12. Escribe un procedimiento de nombre Prog12, que nos pida un nmero y d como resultado la tabla de multiplicar del nmero introducido. 13. Escribe un procedimiento de nombre Prog13, que nos d las opciones: Calcular una suma (crea una function de nombre suma) Calcular una raz cuadrada (crea una function de nombre raizcua) Calcular un logarimo neperiano (crea una function de nombre neperiano).

14. Escribe un procedimiento de nombre Prog14, que nos pida dos sumandos y nos d la suma de sus cuadrados y su diferencia (utiliza las funciones: SumaCuadrado y RestaCuadrado) 15. Escribe un procedimiento de nombre Prog15 que funcione de la siguiente forma: El programa nos pide 10 valores. El programa calcula la media aritmtica (function). El programa calcula las desviaciones respecto a la media. El programa calcula la desviacin media (llamada a la funcin anterior). El programa calcula la varianza (llamada a la funcin anterior). Por ltimo el programa calcula la desviacin tpica.

16. Escribe un procedimiento de nombre Prog16, que calcule los 25 primeros trminos de la sucesin de trmino general: (3n+1) / (2n-1) 17. Crea un formulario de nombre Formulario2 en la B. D. Programas con 5 botones, que permitan ejecutar los programas: Prog8 Prog11 Prog14 Prog15 Prog16 Mltiplos de 7 Dibuja cuadrado Suma y Resta de cuadrados Estadstica Sucesin.

236

SENATI-Computacin e Informtica

También podría gustarte