27
Ediciones ENI VBA Access 2013 Programar en Access Colección Recursos Informáticos Contenido

VBA Access 2013 - Ediciones ENI · Ediciones ENI VBA Access 2013 Programar en Access Colección Recursos Informáticos Contenido

  • Upload
    others

  • View
    70

  • Download
    6

Embed Size (px)

Citation preview

  • Ediciones ENI

    VBA Access 2013Programar en Access

    Colección Recursos Informáticos

    Contenido

  • 1Contenido

    Introducción

    1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2. Objetivos del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    Capítulo 1Generalidades

    1. Revisión de conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    2. Principios fundamentales de VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3. Conversión de macros a VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1 Conversión de las macros en un formulario o en un informe . . 223.2 Conversión de macros globales . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    4. Seguridad de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1 Modificación de los parámetros de seguridad

    de una base de datos Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 Modificación de los parámetros de seguridad por defecto . . . . . 254.3 Descripción de las diferentes opciones de seguridad . . . . . . . . . 254.4 Documentos confiables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.5 Ubicaciones de confianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.6 Editores de confianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    5. Publicar una base de datos Access mediante un paquete firmado. . . 295.1 Obtener un certificado digital . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2 Crear y firmar un paquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Podrá descargar algunos elementos de este libro en la página web de Ediciones ENI: http:www.ediciones-eni.com.

    Escriba la referencia ENI del libro RIT13ACCV en la zona de búsqueda y valide. Haga clic en el título y después en el botón de descarga.

  • 2Programar en Access

    VBA Access 2013

    6. El entorno de desarrollo IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.2 Ventanas del entorno IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    7. Configuración del editor VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.1 Configuración de los colores del editor . . . . . . . . . . . . . . . . . . . . 357.2 Configuración de la presentación del código . . . . . . . . . . . . . . . 36

    8. Referencia a los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    9. Creación de un procedimiento en VBA. . . . . . . . . . . . . . . . . . . . . . . . 37

    10. Consejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    Capítulo 2El lenguaje Visual Basic

    1. Los módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    2. Los procedimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.1 Los procedimientos Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.2 Los procedimientos Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.3 Declaración de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . 472.4 Alcance de los procedimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . 482.5 Argumentos de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . 492.6 Los argumentos con nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.7 Llamada a un procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.8 Ejemplos de procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.9 La función MsgBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    3. Las variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.1 Los tipos de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.2 Las declaraciones de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.3 El alcance de las variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.4 Las matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.5 Las constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

  • 3Contenido

    4. Las estructuras de decisión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.1 La instrucción IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2 La instrucción Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.3 La función IIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5. Las estructuras en bucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.1 La instrucción Do...Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.2 La instrucción While...Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.3 La instrucción For...Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.4 La instrucción For Each...Next. . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    6. Los operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.1 Los operadores aritméticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.2 Los operadores de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . 766.3 Los operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.4 El operador de concatenación . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.5 Prioridad de los operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    7. Las reglas de escritura del código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797.1 Los comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797.2 El carácter de continuación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.3 La indentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.4 Los nombres de procedimientos, variables y constantes . . . . . . 81

    8. Las convenciones de llamada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.1 Convención de llamada de las variables . . . . . . . . . . . . . . . . . . . 818.2 Convención de llamada de los controles . . . . . . . . . . . . . . . . . . . 828.3 Convención de llamada de los objetos . . . . . . . . . . . . . . . . . . . . 83

    Capítulo 3Objetos y colecciones

    1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    2. El modelo de objetos de Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872.1 Principales colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.2 Objetos del Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

  • 4Programar en Access

    VBA Access 2013

    3. Principios de utilización de los objetos y de las colecciones . . . . . . . 903.1 Las propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.2 Propiedades que representan objetos. . . . . . . . . . . . . . . . . . . . . . 903.3 Los métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.4 Los eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.5 Las colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943.6 Presentación automática de instrucciones . . . . . . . . . . . . . . . . . 96

    4. Instrucciones utilizadas con los objetos . . . . . . . . . . . . . . . . . . . . . . . 994.1 La instrucción With . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.2 La instrucción For each...Next . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.3 La instrucción If TypeOf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.4 La instrucción Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    5. Las clases de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.1 Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.2 Los módulos de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.3 Ejemplo de módulos de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    6. El examinador de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126.2 Búsqueda en el examinador de objetos . . . . . . . . . . . . . . . . . . . 114

    7. Propiedades y métodos de objetos de Access . . . . . . . . . . . . . . . . . . 1157.1 El objeto Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157.2 El objeto DoCmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237.3 El objeto Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307.4 La colección References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.5 La colección Printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

  • 5Contenido

    Capítulo 4Objetos de acceso a datos

    1. Objetos de acceso a datos DAO y ADO . . . . . . . . . . . . . . . . . . . . . . 137

    2. El modelo de acceso a datos DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382.2 Jerarquía de los objetos DAO. . . . . . . . . . . . . . . . . . . . . . . . . . . 1392.3 Descripción de las colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . 1402.4 El objeto DBEngine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1422.5 Los objetos Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1432.6 Les objetos Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1452.7 Los objetos Recordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1472.8 Los objetos Tabledef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532.9 Los objetos Field e Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

    2.9.1 Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1552.9.2 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

    2.10 Los objetos QueryDef y Parameter . . . . . . . . . . . . . . . . . . . . . . 1582.10.1QueryDef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.10.2Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    2.11 Los objetos Relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612.12 Los objetos Container y Document . . . . . . . . . . . . . . . . . . . . . 163

    2.12.1Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1632.12.2Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    2.13 Los objetos Group y User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652.13.1User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652.13.2Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

    2.14 El objeto Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1672.15 Los objetos Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    3. El modelo de acceso a datos ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703.2 ADO y OLE DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703.3 Jerarquía de los objetos ADO. . . . . . . . . . . . . . . . . . . . . . . . . . . 1723.4 Modelo de base de programación ADO . . . . . . . . . . . . . . . . . . 173

  • 6Programar en Access

    VBA Access 2013

    3.5 Descripción de los objetos ADO . . . . . . . . . . . . . . . . . . . . . . . . 1743.6 Las colecciones ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753.7 Los objetos Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753.8 Los objetos Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783.9 Los objetos Recordset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793.10 La colección Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853.11 Los objetos Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853.12 La colección Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1863.13 Los objetos Parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1873.14 La colección Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.15 Los objetos Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.16 La colección Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.17 Los objetos Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    Capítulo 5El lenguaje SQL

    1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    2. Lenguaje SQL y VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    3. Descripción del lenguaje SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1943.1 La instrucción SELECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1943.2 La cláusula FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1953.3 La cláusula WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973.4 La cláusula GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973.5 La cláusula HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.6 La cláusula ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.7 La instrucción UPDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1993.8 La instrucción DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1993.9 La instrucción INSERT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . 2003.10 Otras instrucciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

  • 7Contenido

    4. Ejemplos de utilización de consultas SQL. . . . . . . . . . . . . . . . . . . . . 2024.1 Actualización de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2034.2 Carga de una lista desplegable . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    Capítulo 6Gestión de los eventos

    1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2071.1 Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2071.2 Asociación de código VBA a un evento . . . . . . . . . . . . . . . . . . . 208

    2. Categorías de eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092.1 Eventos de tipo Ventana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092.2 Eventos de tipo Enfoque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2102.3 Eventos de tipo Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112.4 Eventos de tipo Ratón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132.5 Eventos de tipo Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132.6 Eventos de tipo Impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2152.7 Eventos de tipo Filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162.8 Eventos de tipo Error y Cronómetro . . . . . . . . . . . . . . . . . . . . . 216

    3. Cancelación de un evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

    4. Secuencias de tipos de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    5. Los eventos de actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    Capítulo 7Depuración y gestión de errores

    1. Los distintos tipos de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2211.1 Los errores de sintaxis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2211.2 Los errores de compilación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2221.3 Los errores de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2231.4 Los errores de lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

  • 8Programar en Access

    VBA Access 2013

    2. Depuración con VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2252.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2252.2 La barra de herramientas Depuración . . . . . . . . . . . . . . . . . . . . 2252.3 El objeto Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    3. Gestión de errores con VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2273.1 Principios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2273.2 El procedimiento de evento Error . . . . . . . . . . . . . . . . . . . . . . . 2283.3 La instrucción On Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2283.4 El objeto Err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    Capítulo 8Personalizar formularios e informes

    1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    2. Personalización de los formularios . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.2 Propiedades disponibles en vista Diseño . . . . . . . . . . . . . . . . . . 235

    2.2.1 Propiedades de la ficha Formato . . . . . . . . . . . . . . . . . . . 2362.2.2 Propiedades de la ficha Datos . . . . . . . . . . . . . . . . . . . . . 2392.2.3 Propiedades de la ficha Eventos . . . . . . . . . . . . . . . . . . . . 2412.2.4 Propiedades de la ficha Otras . . . . . . . . . . . . . . . . . . . . . . 245

    2.3 Propiedades no disponibles en modo Diseño . . . . . . . . . . . . . . 2462.3.1 Propiedades relativas al modo de ver el formulario . . . . 2462.3.2 Propiedades relativas a los registros

    y a su actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2462.3.3 Propiedades relativas a la presentación del formulario . 2472.3.4 Propiedades que devuelven un objeto . . . . . . . . . . . . . . . 2492.3.5 Propiedades relativas a la impresión del formulario . . . . 249

    2.4 Métodos del objeto Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

  • 9Contenido

    3. Personalización de los informes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513.2 Propiedades disponibles en vista Diseño . . . . . . . . . . . . . . . . . . 252

    3.2.1 Propiedades de la ficha Formato . . . . . . . . . . . . . . . . . . . 2523.2.2 Propiedades de la ficha Datos . . . . . . . . . . . . . . . . . . . . . 2553.2.3 Propiedades de la ficha Eventos . . . . . . . . . . . . . . . . . . . . 2563.2.4 Propiedades de la ficha Otras . . . . . . . . . . . . . . . . . . . . . . 258

    3.3 Propiedades no disponibles en modo Diseño . . . . . . . . . . . . . . 2593.3.1 Propiedades relativas al modo de ver el informe. . . . . . . 2593.3.2 Propiedades relativas a los registros

    y a su actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2593.3.3 Propiedades relativas a la presentación del informe . . . . 2603.3.4 Propiedades que devuelven un objeto . . . . . . . . . . . . . . . 2613.3.5 Propiedades relativas a la impresión del informe . . . . . . 2623.3.6 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    3.4 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    4. Los objetos Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2644.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2644.2 Propiedades comunes de la mayoría de los controles . . . . . . . . 265

    4.2.1 Propiedades que devuelvan objetos . . . . . . . . . . . . . . . . . 2654.2.2 Otras propiedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

    4.3 Métodos comunes a la mayoría de los controles . . . . . . . . . . . 2654.4 El método Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

    5. Los controles de Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2665.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2665.2 Lista de los controles Access . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

  • 10Programar en Access

    VBA Access 2013

    Capítulo 9Mejoras de la interfaz de usuario

    1. Las opciones de inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

    2. Personalización de la cinta de opciones. . . . . . . . . . . . . . . . . . . . . . . 2712.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2712.2 Configuración de Access para la personalización

    de la cinta de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2722.2.1 Mostrar las tablas del sistema

    en el panel de navegación. . . . . . . . . . . . . . . . . . . . . . . . . 2722.2.2 Mostrar mensajes de error contenidos

    en el código XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2722.3 Creación de una tabla del sistema USysRibbons . . . . . . . . . . . 2732.4 Adición de código XML de personalización

    a la tabla USysRibbons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2742.5 Asociación de la cinta de opciones a la aplicación activa . . . . . 2752.6 Asociación de la cinta de opciones a un formulario

    o a un informe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

    3. Presentación del lenguaje XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.1 El lenguaje XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.2 Elementos XML utilizados para personalizar

    la cinta de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2773.2.1 Principales marcas activas XML utilizadas

    en el código XML de una cinta de opciones . . . . . . . . . . 2773.2.2 Propiedades asociadas a los objetos

    de una cinta de opciones . . . . . . . . . . . . . . . . . . . . . . . . . 278

    4. Ejemplo de cinta de opciones personalizada . . . . . . . . . . . . . . . . . . . 2794.1 Código XML de la cinta de opciones personalizada . . . . . . . . . 2794.2 Código VBA llamado por los comandos

    de la cinta de opciones personalizada . . . . . . . . . . . . . . . . . . . . 283

    5. Imágenes de la galería de iconos de Microsoft Office . . . . . . . . . . . 284

  • 11Contenido

    Capítulo 10Comunicación con aplicaciones 2013

    1. La tecnología Automatización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2871.1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2871.2 Utilización de la tecnología Automatización . . . . . . . . . . . . . . 289

    2. Controlar Word desde Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.1 El modelo Objeto Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.2 Principales colecciones del modelo de objetos Word . . . . . . . . 2912.3 Principales objetos del modelo objeto de Word . . . . . . . . . . . . 2922.4 La colección Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2932.5 Los objetos Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

    3. Controlar Excel desde Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2973.1 El modelo Objeto Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2973.2 Principales colecciones de la aplicación Excel . . . . . . . . . . . . . . 2983.3 La colección Workbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.4 Los objetos Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

    3.4.1 Principales métodos del objeto Workbook . . . . . . . . . . . 2993.4.2 Las principales colecciones asociadas

    al objeto Workbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3003.5 Escritura de datos en celdas Excel . . . . . . . . . . . . . . . . . . . . . . . 300

    4. Controlar Outlook desde Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.1 El modelo Objeto Outlook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.2 Ejemplo: mostrar los contactos de Outlook . . . . . . . . . . . . . . . 303

    Capítulo 11Programación en Internet

    1. Importación y exportación de datos en formato XML . . . . . . . . . . 3051.1 El método ExportXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3061.2 El método ImportXML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3081.3 Ejemplo de importación/exportación XML . . . . . . . . . . . . . . . 308

    2. Ejemplo de creación de un archivo HTML . . . . . . . . . . . . . . . . . . . . 312

  • 12Programar en Access

    VBA Access 2013

    Capítulo 12Programación en Windows

    1. Presentación de las API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

    2. Llamada a una función de la API Windows . . . . . . . . . . . . . . . . . . . 3162.1 Sintaxis de la instrucción Declare . . . . . . . . . . . . . . . . . . . . . . . 3162.2 Paso de argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    3. Lista de funciones de la API Windows . . . . . . . . . . . . . . . . . . . . . . . 319

    4. Ejemplos de utilización de funciones de la API Windows . . . . . . . . 3204.1 Recuperación del directorio de Windows . . . . . . . . . . . . . . . . . 3204.2 Inicio de la aplicación Excel si no está activa . . . . . . . . . . . . . . 3214.3 Recuperación de un valor en un archivo .ini. . . . . . . . . . . . . . . 322

    5. El objeto FileSystemObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3245.1 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3245.2 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3255.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

    Capítulo 13Código de una mini-aplicación

    1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3271.1 Enunciado del problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3271.2 Base de datos Cursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3281.3 Modelo relacional de la base . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

    2. Formulario "Cursos" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3292.1 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3302.2 Código VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3312.3 Subformulario "SF Participantes". . . . . . . . . . . . . . . . . . . . . . . . 3352.4 Código VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

  • 13Contenido

    3. Formulario "Buscar" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3373.1 Lista de controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3383.2 Código VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3383.3 Subformulario "SF Cursos". . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3413.4 Informe "Cursos". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    Anexos1. Funciones e instrucciones VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

    1.1 Manipulación de cadenas de caracteres. . . . . . . . . . . . . . . . . . . 3451.2 Control del funcionamiento del programa . . . . . . . . . . . . . . . . 3461.3 Conversión de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3481.4 Fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3491.5 Declaración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3501.6 Dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3511.7 Intercambio dinámico de datos . . . . . . . . . . . . . . . . . . . . . . . . . 3511.8 Entrada y salida de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3521.9 Financieras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3541.10 Gestión de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3551.11 Gráficos en los informes impresos . . . . . . . . . . . . . . . . . . . . . . . 3551.12 Vinculación e incrustación de objetos. . . . . . . . . . . . . . . . . . . . 3561.13 Manipulación de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3561.14 Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3561.15 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3571.16 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3581.17 Control de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3581.18 Funciones e instrucciones diversas . . . . . . . . . . . . . . . . . . . . . . 3591.19 Códigos de error interceptables . . . . . . . . . . . . . . . . . . . . . . . . . 360

  • 14Programar en Access

    VBA Access 2013

    2. Constantes VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.1 Constantes de color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.2 Constantes de fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.3 Constantes de teclas teclado alfanumérico. . . . . . . . . . . . . . . . 3672.4 Constantes de teclas de función . . . . . . . . . . . . . . . . . . . . . . . . 3672.5 Constantes de teclas diversas. . . . . . . . . . . . . . . . . . . . . . . . . . . 368

    3. Métodos abreviados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

    Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

  • Ediciones ENI

    VBA Access 2013 Creación de aplicaciones profesionales:

    ejercicios y correcciones

    Colección Prácticas Técnicas

    Contenido

  • Introducción

    Audiencia del libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Objetivo del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Uso del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Apoyo para la realización de trabajos prácticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    Enunciados

    Capítulo 1: Crear procedimientos y funciones

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Enunciado 1.1 Crear y ejecutar un procedimiento público . . . . . . . . . . . . . . . . . . . . . 43Enunciado 1.2 Crear y ejecutar un procedimiento privado . . . . . . . . . . . . . . . . . . . . . 44Enunciado 1.3 Llamar a un procedimiento desde un procedimiento . . . . . . . . . . . . . . 44Enunciado 1.4 Modificar el ámbito de un procedimiento . . . . . . . . . . . . . . . . . . . . . . 45Enunciado 1.5 Dialogar con el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Enunciado 1.6 Utilizar una función en un procedimiento . . . . . . . . . . . . . . . . . . . . . . 46Enunciado 1.7 Utilizar procedimientos de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    Capítulo 2: Crear variables y constantes

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Enunciado 2.1 Declarar y utilizar variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Enunciado 2.2 Declarar y utilizar constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Enunciado 2.3 Utilizar un tipo definido por el usuario . . . . . . . . . . . . . . . . . . . . . . . . 58Enunciado 2.4 Manipular datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Enunciado 2.5 Utilizar una tabla de una dimensión . . . . . . . . . . . . . . . . . . . . . . . . . 60

    Capítulo 3: Uso de operadores

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Enunciado 3.1 Dividir dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Enunciado 3.2 Obtener el resto de una división entera . . . . . . . . . . . . . . . . . . . . . . . 64Enunciado 3.3 Encontrar el menor de dos números . . . . . . . . . . . . . . . . . . . . . . . . . 65Enunciado 3.4 Devolver el resultado de elevar a N un número . . . . . . . . . . . . . . . . . . 66Enunciado 3.5 Generar números aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Enunciado 3.6 Calcular el porcentaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Enunciado 3.7 Calcular la comisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Enunciado 3.8 Calcular la anualidad constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

  • 2

    Enunciado 3.9 Contar el número de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Enunciado 3.10 Comparar dos cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . 70Enunciado 3.11 Formatear una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Enunciado 3.12 Buscar una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Enunciado 3.13 Extraer un dato de una cadena de caracteres. . . . . . . . . . . . . . . . . . . 72

    Capítulo 4: Estructuras de control

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Enunciado 4.1 Controlar la entrada de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Enunciado 4.2 Decir adiós . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Enunciado 4.3 Identificar si es consonante o vocal . . . . . . . . . . . . . . . . . . . . . . . . . 78Enunciado 4.4 Responder en función de la edad . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Enunciado 4.5 Decir hola N veces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81Enunciado 4.6 Contar de N en N hasta M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81Enunciado 4.7 Obligar a introducir datos y controlar la salida . . . . . . . . . . . . . . . . . . 83Enunciado 4.8 Escribir palabras al revés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Enunciado 4.9 Encontrar números primos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Enunciado 4.10 Contar el número de ocurrencias de un número . . . . . . . . . . . . . . . . . 85

    Capítulo 5: Tablas

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Enunciado 5.1 Declarar y utilizar una tabla accesible

    por todos los procedimientos del proyecto . . . . . . . . . . . . . . . . . . . . . 89Enunciado 5.2 Declarar y utilizar una tabla accesible

    sólo desde los procedimientos de su módulo . . . . . . . . . . . . . . . . . . . 89Enunciado 5.3 Mostrar los límites de una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Enunciado 5.4 Utilizar una tabla a nivel de módulo . . . . . . . . . . . . . . . . . . . . . . . . . 90Enunciado 5.5 Inicializar una tabla con valores aleatorios. . . . . . . . . . . . . . . . . . . . . 91Enunciado 5.6 Declarar y utilizar una tabla de dos dimensiones . . . . . . . . . . . . . . . . 92Enunciado 5.7 Utilizar una tabla de más de dos dimensiones . . . . . . . . . . . . . . . . . . 92Enunciado 5.8 Declarar y utilizar una tabla dinámica. . . . . . . . . . . . . . . . . . . . . . . . 93Enunciado 5.9 Agrandar una tabla dinámica conservando los valores iniciales . . . . . . 93Enunciado 5.10 Mostrar las tablas de multiplicar . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Enunciado 5.11 Mostrar una tabla en una lista desplegable . . . . . . . . . . . . . . . . . . . . 95

  • 3

    Capítulo 6: Programación con objetos

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Enunciado 6.1 Acceder a un objeto y modificar sus propiedades . . . . . . . . . . . . . . . 100Enunciado 6.2 Gestionar colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Enunciado 6.3 Crear una clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Enunciado 6.4 Utilizar la clase creada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Enunciado 6.5 Crear y utilizar sus colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Enunciado 6.6 Utilizar un método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    Capítulo 7: Cuadros de diálogo

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Enunciado 7.1 Mostrar un mensaje simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Enunciado 7.2 Solicitar una entrada de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Enunciado 7.3 Controlar la entrada de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Enunciado 7.4 Elegir los botones para los cuadros de diálogo . . . . . . . . . . . . . . . . . 113Enunciado 7.5 Realizar una acción según la elección del usuario . . . . . . . . . . . . . . . 114Enunciado 7.6 Realizar un tratamiento una vez que el usuario ha introducido datos . . 115

    Capítulo 8: Formularios de datos

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Enunciado 8.1 Abrir y cerrar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Enunciado 8.2 Mostrar un formulario en modo sólo lectura . . . . . . . . . . . . . . . . . . . 122Enunciado 8.3 Identificar el contenido de un formulario . . . . . . . . . . . . . . . . . . . . . 122Enunciado 8.4 Trabajar con un subformulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Enunciado 8.5 Mostrar una imagen de fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Enunciado 8.6 Duplicar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Enunciado 8.7 Gestionar el desplazamiento del ratón por el formulario . . . . . . . . . . . 125Enunciado 8.8 Gestionar el doble clic del ratón en el formulario . . . . . . . . . . . . . . . . 126

    Capítulo 9: Controles

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Enunciado 9.1 Seleccionar un control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Enunciado 9.2 Ocultar y mostrar controles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Enunciado 9.3 Hacer un control dependiente de otro . . . . . . . . . . . . . . . . . . . . . . . 131Enunciado 9.4 Provocar la reacción de los controles con el ratón . . . . . . . . . . . . . . . 132

  • 4

    Enunciado 9.5 Provocar la reacción de los controles con el teclado . . . . . . . . . . . . . 132Enunciado 9.6 Cambiar la imagen de los botones . . . . . . . . . . . . . . . . . . . . . . . . . 133Enunciado 9.7 Calcular una comisión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Enunciado 9.8 Gestionar una lista simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Enunciado 9.9 Añadir un valor en la lista modificable . . . . . . . . . . . . . . . . . . . . . . 141Enunciado 9.10 Relacionar las listas con las tablas . . . . . . . . . . . . . . . . . . . . . . . . . 142Enunciado 9.11 Utilizar botones de opción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Enunciado 9.12 Utilizar casillas de activación asociadas a imágenes . . . . . . . . . . . . . 144Enunciado 9.13 Gestionar imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    Capítulo 10: Consultas

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Enunciado 10.1 Mostrar todos los registros de una tabla . . . . . . . . . . . . . . . . . . . . . 150Enunciado 10.2 Mostrar algunos campos de una tabla. . . . . . . . . . . . . . . . . . . . . . . 150Enunciado 10.3 Seleccionar e imprimir registros . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Enunciado 10.4 Realizar una búsqueda parametrizada . . . . . . . . . . . . . . . . . . . . . . 152Enunciado 10.5 Realizar una búsqueda a partir de un desplegable . . . . . . . . . . . . . . 153Enunciado 10.6 Limitar los valores de un desplegable . . . . . . . . . . . . . . . . . . . . . . . 153Enunciado 10.7 Realizar una búsqueda multicriterio . . . . . . . . . . . . . . . . . . . . . . . . 154Enunciado 10.8 Actualizar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Enunciado 10.9 Eliminar un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Enunciado 10.10 Utilizar una consulta con Union . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Enunciado 10.11 Crear un ranking de ventas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

    Capítulo 11: Objetos de datos

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Enunciado 11.1 Crear una referencia a la base de datos actual . . . . . . . . . . . . . . . . . 163Enunciado 11.2 Realizar una operación en la base de datos actual . . . . . . . . . . . . . . 163Enunciado 11.3 Consultar la base de datos actual . . . . . . . . . . . . . . . . . . . . . . . . . . 164Enunciado 11.4 Rellenar una tabla temporal asociada . . . . . . . . . . . . . . . . . . . . . . . 164Enunciado 11.5 Buscar un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Enunciado 11.6 Crear una referencia a una base de datos externa Access . . . . . . . . . 165Enunciado 11.7 Operar con una base de datos externa Access . . . . . . . . . . . . . . . . . 166Enunciado 11.8 Configurar un origen de datos ODBC. . . . . . . . . . . . . . . . . . . . . . . . 167Enunciado 11.9 Crear una referencia a una base de datos

    externa mediante un origen de datos ODBC. . . . . . . . . . . . . . . . . . . 168Enunciado 11.10 Gestionar una base de datos externa

    mediante un origen de datos ODBC . . . . . . . . . . . . . . . . . . . . . . . . 169

  • 5

    Enunciado 11.11 Crear un cuadro de mando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    Capítulo 12: Informes

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Enunciado 12.1 Abrir un informe en modo vista previa . . . . . . . . . . . . . . . . . . . . . . . 175Enunciado 12.2 Imprimir directamente un informe . . . . . . . . . . . . . . . . . . . . . . . . . . 175Enunciado 12.3 Listar todos los productos en función de una entrada del usuario . . . . 176Enunciado 12.4 Editar todos los productos agotados . . . . . . . . . . . . . . . . . . . . . . . . 177Enunciado 12.5 Implementar un formato condicional dinámico . . . . . . . . . . . . . . . . . 178Enunciado 12.6 Imprimir un informe parametrizado . . . . . . . . . . . . . . . . . . . . . . . . . 179Enunciado 12.7 Extraer los datos de un informe. . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Enunciado 12.8 Elegir las opciones de impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

    Capítulo 13: Interacciones con el Pack Office/API Windows

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Enunciado 13.1 Iniciar una aplicación Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . 186Enunciado 13.2 Abrir un libro Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Enunciado 13.3 Copiar datos Access a aplicaciones Microsoft . . . . . . . . . . . . . . . . . . 188Enunciado 13.4 Realizar un envío de correos con Word . . . . . . . . . . . . . . . . . . . . . . 189Enunciado 13.5 Exportar una consulta a Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Enunciado 13.6 Generar una presentación PowerPoint . . . . . . . . . . . . . . . . . . . . . . . 191Enunciado 13.7 Enviar un mail con Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Enunciado 13.8 Iniciar la calculadora en Windows Vista/Windows 7 . . . . . . . . . . . . . 194Enunciado 13.9 Utilizar funciones de Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Enunciado 13.10 Importar a una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    Capítulo 14: Optimizar la aplicación VBA Access

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Enunciado 14.1 Modificar las opciones de inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Enunciado 14.2 Compactar una base de datos Access . . . . . . . . . . . . . . . . . . . . . . . 202Enunciado 14.3 Personalizar las barras de herramientas . . . . . . . . . . . . . . . . . . . . . . 203Enunciado 14.4 Acelerar el uso de formularios y listas . . . . . . . . . . . . . . . . . . . . . . . 205Enunciado 14.5 Generar la matrícula de los empleados . . . . . . . . . . . . . . . . . . . . . . 205Enunciado 14.6 Ejecutar instrucciones VBA simultáneamente . . . . . . . . . . . . . . . . . . 206

  • 6

    Capítulo 15: Proteger la aplicación VBA Access

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Enunciado 15.1 Realizar seguimiento de las acciones del usuario . . . . . . . . . . . . . . . 210Enunciado 15.2 Crear un sistema de mensajería interna. . . . . . . . . . . . . . . . . . . . . . 211Enunciado 15.3 Utilizar los derechos de acceso del usuario . . . . . . . . . . . . . . . . . . . 212Enunciado 15.4 Crear una base de datos de copia de seguridad . . . . . . . . . . . . . . . . 214

    Soluciones

    Capítulo 1: Crear procedimientos y funciones

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Solución 1.1 Crear y ejecutar un procedimiento público. . . . . . . . . . . . . . . . . . . . 218Solución 1.2 Crear y ejecutar un procedimiento privado. . . . . . . . . . . . . . . . . . . . 219Solución 1.3 Llamar a un procedimiento desde un procedimiento . . . . . . . . . . . . . 219Solución 1.4 Modificar el ámbito de un procedimiento. . . . . . . . . . . . . . . . . . . . . 220Solución 1.5 Dialogar con el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Solución 1.6 Utilizar una función en un procedimiento . . . . . . . . . . . . . . . . . . . . 221Solución 1.7 Utilizar procedimientos de evento. . . . . . . . . . . . . . . . . . . . . . . . . . 222

    Capítulo 2: Crear variables y constantes

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Solución 2.1 Declarar y utilizar variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Solución 2.2 Declarar y utilizar constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228Solución 2.3 Utilizar un tipo definido por el usuario . . . . . . . . . . . . . . . . . . . . . . 229Solución 2.4 Manipular datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230Solución 2.5 Utilizar una tabla de una dimensión . . . . . . . . . . . . . . . . . . . . . . . . 231

    Capítulo 3: Uso de operadores

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Solución 3.1 Dividir dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Solución 3.2 Obtener el resto de una división entera . . . . . . . . . . . . . . . . . . . . . . 234Solución 3.3 Encontrar el menor de dos números . . . . . . . . . . . . . . . . . . . . . . . . 235Solución 3.4 Devolver el resultado de elevar a N un número . . . . . . . . . . . . . . . . 235Solución 3.5 Generar números aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Solución 3.6 Calcular el porcentaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Solución 3.7 Calcular la comisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

  • 7

    Solución 3.8 Calcular la anualidad constante . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Solución 3.9 Contar el número de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Solución 3.10 Comparar dos cadenas de caracteres. . . . . . . . . . . . . . . . . . . . . . . . 239Solución 3.11 Formatear una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Solución 3.12 Buscar una palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Solución 3.13 Extraer un dato de una cadena de caracteres . . . . . . . . . . . . . . . . . . 240

    Capítulo 4: Estructuras de control

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Solución 4.1 Controlar la entrada de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Solución 4.2 Decir adiós. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Solución 4.3 Identificar si es consonante o vocal . . . . . . . . . . . . . . . . . . . . . . . . . 244Solución 4.4 Responder en función de la edad . . . . . . . . . . . . . . . . . . . . . . . . . . 245Solución 4.5 Decir hola N veces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Solución 4.6 Contar de N en N hasta M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Solución 4.7 Obligar a introducir datos y controlar la salida . . . . . . . . . . . . . . . . . 249Solución 4.8 Escribir palabras al revés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Solución 4.9 Encontrar números primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251Solución 4.10 Contar el número de ocurrencias de un número . . . . . . . . . . . . . . . . 252

    Capítulo 5: Tablas

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Solución 5.1 Declarar y utilizar una tabla accesible

    por todos los procedimientos del proyecto . . . . . . . . . . . . . . . . . . . . 254Solución 5.2 Declarar y utilizar una tabla accesible

    sólo desde los procedimientos de su módulo . . . . . . . . . . . . . . . . . . 254Solución 5.3 Mostrar los límites de una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Solución 5.4 Utilizar una tabla a nivel de módulo . . . . . . . . . . . . . . . . . . . . . . . . 256Solución 5.5 Inicializar una tabla con valores aleatorios . . . . . . . . . . . . . . . . . . . . 256Solución 5.6 Declarar y utilizar una tabla de dos dimensiones. . . . . . . . . . . . . . . . 257Solución 5.7 Utilizar una tabla de más de dos dimensiones . . . . . . . . . . . . . . . . . 258Solución 5.8 Declarar y utilizar una tabla dinámica . . . . . . . . . . . . . . . . . . . . . . . 259Solución 5.9 Agrandar una tabla dinámica conservando los valores iniciales . . . . . . 260Solución 5.10 Mostrar las tablas de multiplicar . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Solución 5.11 Mostrar una tabla en una lista desplegable. . . . . . . . . . . . . . . . . . . . 261

  • 8

    Capítulo 6: Programación con objetos

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263Solución 6.1 Acceder a un objeto y modificar sus propiedades . . . . . . . . . . . . . . . 264Solución 6.2 Gestionar colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268Solución 6.3 Crear una clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Solución 6.4 Utilizar la clase creada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Solución 6.5 Crear y utilizar sus colecciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Solución 6.6 Utilizar un método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

    Capítulo 7: Cuadros de diálogo

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Solución 7.1 Mostrar un mensaje simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Solución 7.2 Solicitar una entrada de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Solución 7.3 Controlar la entrada de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Solución 7.4 Elegir los botones para los cuadros de diálogo . . . . . . . . . . . . . . . . . 275Solución 7.5 Realizar una acción según la elección del usuario. . . . . . . . . . . . . . . 276Solución 7.6 Realizar un tratamiento una vez que el usuario ha introducido datos . 277

    Capítulo 8: Formularios de datos

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279Solución 8.1 Abrir y cerrar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Solución 8.2 Mostrar un formulario en modo sólo lectura. . . . . . . . . . . . . . . . . . . 283Solución 8.3 Identificar el contenido de un formulario . . . . . . . . . . . . . . . . . . . . . 283Solución 8.4 Trabajar con un subformulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.5 Mostrar una imagen de fondo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Solución 8.6 Duplicar un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Solución 8.7 Gestionar el desplazamiento del ratón por el formulario . . . . . . . . . . 286Solución 8.8 Gestionar el doble clic del ratón en el formulario . . . . . . . . . . . . . . . 286

    Capítulo 9: Controles

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287Solución 9.1 Seleccionar un control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Solución 9.2 Ocultar y mostrar controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Solución 9.3 Hacer un control dependiente de otro . . . . . . . . . . . . . . . . . . . . . . . 289Solución 9.4 Provocar la reacción de los controles con el ratón. . . . . . . . . . . . . . . 290

  • 9

    Solución 9.5 Provocar la reacción de los controles con el teclado. . . . . . . . . . . . . . 290Solución 9.6 Cambiar la imagen de los botones. . . . . . . . . . . . . . . . . . . . . . . . . . 291Solución 9.7 Calcular una comisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291Solución 9.8 Gestionar una lista simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293Solución 9.9 Añadir un valor en la lista modificable . . . . . . . . . . . . . . . . . . . . . . . 297Solución 9.10 Relacionar las listas con las tablas . . . . . . . . . . . . . . . . . . . . . . . . . 297Solución 9.11 Utilizar botones de opción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Solución 9.12 Utilizar casillas de activación asociadas a imágenes . . . . . . . . . . . . . 299Solución 9.13 Gestionar imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

    Capítulo 10: Consultas

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301Solución 10.1 Mostrar todos los registros de una tabla . . . . . . . . . . . . . . . . . . . . . . 302Solución 10.2 Mostrar algunos campos de una tabla . . . . . . . . . . . . . . . . . . . . . . . 302Solución 10.3 Seleccionar e imprimir registros . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Solución 10.4 Realizar una búsqueda parametrizada . . . . . . . . . . . . . . . . . . . . . . . 303Solución 10.5 Realizar una búsqueda a partir de un desplegable. . . . . . . . . . . . . . . 303Solución 10.6 Limitar los valores de un desplegable . . . . . . . . . . . . . . . . . . . . . . . 304Solución 10.7 Realizar una búsqueda multicriterio. . . . . . . . . . . . . . . . . . . . . . . . . 305Solución 10.8 Actualizar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Solución 10.9 Eliminar un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309Solución 10.10 Utilizar una consulta con Union . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Solución 10.11 Crear un ranking de ventas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    Capítulo 11: Objetos de datos

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313Solución 11.1 Crear una referencia a la base de datos actual . . . . . . . . . . . . . . . . . 314Solución 11.2 Realizar una operación en la base de datos actual . . . . . . . . . . . . . . 314Solución 11.3 Consultar la base de datos actual . . . . . . . . . . . . . . . . . . . . . . . . . . 315Solución 11.4 Rellenar una tabla temporal asociada . . . . . . . . . . . . . . . . . . . . . . . 315Solución 11.5 Buscar un registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317Solución 11.6 Crear una referencia a una base de datos externa Access . . . . . . . . . . 319Solución 11.7 Operar con una base de datos externa Access. . . . . . . . . . . . . . . . . . 319Solución 11.8 Configurar un origen de datos ODBC . . . . . . . . . . . . . . . . . . . . . . . . 321Solución 11.9 Crear una referencia a una base de datos externa

    mediante un origen de datos ODBC. . . . . . . . . . . . . . . . . . . . . . . . . 322Solución 11.10 Gestionar una base de datos externa mediante

    un origen de datos ODBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

  • 10

    Solución 11.11 Crear un cuadro de mando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

    Capítulo 12: Informes

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Solución 12.1 Abrir un informe en modo vista previa. . . . . . . . . . . . . . . . . . . . . . . 328Solución 12.2 Imprimir directamente un informe . . . . . . . . . . . . . . . . . . . . . . . . . 328Solución 12.3 Listar todos los productos en función de una entrada del usuario . . . . 328Solución 12.4 Editar todos los productos agotados . . . . . . . . . . . . . . . . . . . . . . . . 329Solución 12.5 Implementar un formato condicional dinámico. . . . . . . . . . . . . . . . . 329Solución 12.6 Imprimir un informe parametrizado . . . . . . . . . . . . . . . . . . . . . . . . 330Solución 12.7 Extraer los datos de un informe . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Solución 12.8 Elegir las opciones de impresión . . . . . . . . . . . . . . . . . . . . . . . . . . 331

    Capítulo 13: Interacciones con el Pack Office/API Windows

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Solución 13.1 Iniciar una aplicación Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Solución 13.2 Abrir un libro Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Solución 13.3 Copiar datos Access en aplicaciones Microsoft . . . . . . . . . . . . . . . . . 336Solución 13.4 Realizar un envío de correos con Word . . . . . . . . . . . . . . . . . . . . . . 337Solución 13.5 Exportar una consulta a Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338Solución 13.6 Generar una presentación PowerPoint. . . . . . . . . . . . . . . . . . . . . . . 338Solución 13.7 Enviar un mail con Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Solución 13.8 Iniciar la calculadora en Windows Vista/Windows 7 . . . . . . . . . . . . . 340Solución 13.9 Utilizar funciones Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Solución 13.10 Importar a una tabla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    Capítulo 14: Optimizar la aplicación VBA Access

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Solución 14.1 Modificar las opciones de inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Solución 14.2 Compactar una base de datos Access . . . . . . . . . . . . . . . . . . . . . . . 345Solución 14.3 Personalizar las barras de herramientas . . . . . . . . . . . . . . . . . . . . . 346Solución 14.4 Acelerar el uso de formularios y de listas. . . . . . . . . . . . . . . . . . . . . 347Solución 14.5 Generar la matrícula de los empleados . . . . . . . . . . . . . . . . . . . . . . 348Solución 14.6 Ejecutar instrucciones VBA simultáneamente. . . . . . . . . . . . . . . . . . 349

  • 11

    Capítulo 15: Proteger la aplicación VBA Access

    Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Solución 15.1 Realizar seguimiento de las acciones del usuario . . . . . . . . . . . . . . . 352Solución 15.2 Crear un sistema de mensajería interna . . . . . . . . . . . . . . . . . . . . . . 354Solución 15.3 Utilizar los derechos de acceso del usuario. . . . . . . . . . . . . . . . . . . . 355Solución 15.4 Crear una base de datos de copia de seguridad. . . . . . . . . . . . . . . . . 356

    Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359