Microsoft Access 2000 Instructivo Introducción Tema I: Tablas Tema II: Consultas Tema III: Formularios Tema IV: Reportes Tema V: Macros Tema VI: DAO: Objeto de Acceso a Datos Tema VII: Distribución de la Aplicación Temas Avanzados: API, DCOM, Cliente-Servidor Instructivo de Access 2000 2 de 36 Introducción Lo nuevo para los programadores Microsoft Access 2000 ofrece muchas características nuevas y mejoradas para ayudar a crear eficaces aplicaciones de bases de datos. Nuevos objetos, propiedades, métodos y otros elementos del lenguaje Acceso a Internet o a una intranet desde su aplicación Crear objetos personalizados con módulos de clase Personalizar menús y barras de herramientas en su aplicación Quitar el código fuente de su aplicación Réplica sólo de una parte especificada de la base de datos Trabajar con la versión 3.6 del motor de base de datos Microsoft Jet Utilizar las nuevas características de la ventana Módulo Utilizar el Examinador de objetos como referencia para objetos y sus miembros Utilizar DAO para tener acceso a bases de datos ODBC sin cargar el motor de base de datos Microsoft Jet Crear un cuadro de diálogo con fichas o un formulario con múltiples páginas con el control ficha Lo nuevo en operaciones con datos Ahora integra reparación y compactación en una sola operación Bloqueo (candados) a nivel registro Microsoft ActiveX Data Objects (ADO) Barras de menús, barras de herramientas y menús contextuales Puede personalizar los menús y herramientas con los comandos que requiera, Access ajusta menús y barras de herramientas para trabajar con los comandos más utilizados; expanda el menú para mostrar todos los comandos disponibles. Haga clic en “More bottons” o más botones si no hay espacio en la barra de herramientas (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 3 de 36 Introducción Bases de datos: Qué son y cómo funcionan Una base de datos es un conjunto de información relacionada con un asunto o con una finalidad, tal como el seguimiento de los pedidos de clientes o una colección de música. Si la base de datos no está almacenada en una máquina, o sólo lo está parte de la misma, es posible que necesite controlar información de varias fuentes distintas que tiene que organizar y coordinar usted mismo. Si utiliza Microsoft Access, puede administrar toda la información desde un único archivo de base de datos. Dentro de este archivo, divida los datos en contenedores de almacenamiento separados denominados tablas; vea, agregue y actualice los datos en las tablas mediante formularios en línea; busque y recupere solamente los datos que necesite mediante consultas; y analice o imprima los datos con el esquema deseado mediante informes. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 (c) Septiembre 2000, Antonio Ortíz R. 4 de 36 Instructivo de Access 2000 5 de 36 Para trabajar con los objetos contenidos en una base de datos de Microsoft Access, utilice la ventana “Database” o Base de Datos. Bajo “Objects”, haga clic en el tipo de objetos que desea, la ventana Base de Datos mostrará una lista de objetos de este tipo. Utilice el boton New de la ventana Base de Datos para crear nuevos objetos, use el botón Design para modificar objetos existentes. Especificaciones de bases de datos Atributo Tamaño de archivo de base de datos (.mdb) Máximo 1 gigabyte. Sin embargo, debido a que la base de datos puede incluir tablas de otros archivos, su tamaño total sólo está limitado por la capacidad de almacenamiento disponible Número de objetos en una base de datos 32.768 Módulos (incluyendo formularios e informes con la 1024 propiedad TieneUnMóduloAsociado (HasModule) establecida a True) Número de caracteres en un nombre de objeto 64 Número de caracteres en una contraseña 14 Número de caracteres en un nombre de usuario o de 20 grupo Número de usuarios que pueden tener acceso a la vez 255 (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 6 de 36 Introducción Acerca de cómo diseñar una base de datos Antes de utilizar Microsoft Access para crear las tablas, los formularios y los demás objetos que formarán la base de datos, es importante invertir algún tiempo en diseñar la base de datos. Un buen diseño de la base de datos es la pieza clave para crear una base de datos que realice las operaciones que desee de una forma efectiva, precisa y eficaz. Éstos son los pasos básicos para diseñar una base de datos: 1 2 3 4 5 6 7 8 Determinar la finalidad de la base de datos. Determinar las tablas que se necesitan en la base de datos. Determinar los campos que se necesitan en las tablas. Identificar los campos con valores exclusivos. Determinar las relaciones entre las tablas. Precisar el diseño. Agregar datos y crear otros objetos de la base de datos. Utilizar las herramientas de análisis de Microsoft Access. 1 Determinar la finalidad de la base de datos El primer paso para diseñar una base de datos de Microsoft Access es determinar la finalidad de la base de datos y cómo se utiliza. Debe saber qué información desea obtener de la base de datos. A partir de ahí, puede determinar sobre qué asuntos necesita almacenar hechos (las tablas) y qué hechos necesita almacenar sobre cada asunto (los campos de las tablas). Hable con los demás usuarios que utilizarán la base de datos. Piense detenidamente en las preguntas que desea que responda la base de datos. Realice bocetos de los informes que desea que produzca. Reúna los formularios que utiliza actualmente para registrar los datos. Examine bases de datos bien diseñadas similares a la que va a diseñar. 2 Determinar las tablas que se necesitan Determinar las tablas puede ser el paso más complicado del proceso de diseño de la base de datos. Esto se debe a que los resultados que desea obtener de la base de datos (los informes que desea imprimir, los formularios que desea utilizar, las preguntas para las que desea respuestas) no proporcionan pistas necesariamente acerca de la estructura de las tablas que los producen. No es necesario que diseñe las tablas mediante Microsoft Access. De hecho, posiblemente sea más conveniente realizar un boceto en papel de la base de datos y trabajar sobre el diseño primero. Al diseñar las tablas, divida la información teniendo en cuenta los siguientes principios de diseño fundamentales: (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 7 de 36 Una tabla no debe contener información duplicada y la información no debe duplicarse entre las tablas. Cuando cada elemento de información está almacenado en una tabla, se actualiza en un solo lugar. Esto resulta más eficiente y elimina la posibilidad de que existan entradas duplicadas que contengan información diferente. Por ejemplo, probablemente desee almacenar la dirección y el número de teléfono de cada cliente una sola vez en una sola tabla. Cada tabla debe contener información sobre un asunto. Cuando cada tabla contiene hechos sólo sobre un asunto, puede mantener la información acerca de cada asunto independientemente de otros asuntos. Por ejemplo, puede almacenar las direcciones de los clientes en una tabla diferente de los pedidos de los clientes, de modo que pueda eliminar un pedido y conservar a la vez la información sobre el cliente. 3 Determinar los campos que se necesitan Cada tabla contiene información acerca del mismo asunto, y cada campo de una tabla contiene hechos individuales sobre el asunto de la tabla. Por ejemplo, la tabla de Clientes puede incluir los campos del nombre de la compañía, la dirección, la ciudad, el país y el número de teléfono. Al realizar bocetos de los campos para cada tabla, tenga en cuenta estas sugerencias: Relacione cada campo directamente con el asunto de la tabla. No incluya datos derivados ni calculados (datos que son el resultado de una expresión). Incluya toda la información que necesite. Almacene información en sus partes lógicas más pequeñas (por ejemplo, Nombre y Apellidos, en lugar del Nombre completo). 4 Identificar los campos con valores exclusivos Para que Microsoft Access conecte información almacenada en tablas independientes (por ejemplo, para conectar a un cliente con todos los pedidos del cliente), cada tabla de la base de datos debe incluir un campo o un conjunto de campos que identifiquen de forma exclusiva cada registro individual de la tabla. Este campo o conjunto de campos se denomina clave principal. 5 Determinar las relaciones entre las tablas Ahora que ha dividido la información en tablas y que ha identificado los campos de clave principal, necesita una forma de indicar a Microsoft Access cómo volver a reunir toda la información relacionada de un modo significativo. Para ello, debe definir relaciones entre las tablas. Puede resultar útil ver las relaciones de una base de datos bien diseñada existente. 6 Precisar el diseño (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 8 de 36 Una vez diseñadas las tablas, los campos y las relaciones que necesita, es el momento de estudiar el diseño y detectar los posibles fallos que puedan quedar. Es más sencillo cambiar el diseño de la base de datos ahora que una vez que haya rellenado las tablas con datos. Utilice Microsoft Access para crear las tablas, especificar relaciones entre las tablas e introducir algunos registros de datos en cada tabla. Observe si puede utilizar la base de datos para obtener las respuestas que desee. Cree bocetos de los formularios e informes y compruebe si muestran los datos que desea. Busque duplicaciones de datos innecesarias y elimínelas. 7 Introducir datos y crear otros objetos de la base de datos Cuando considere que la estructura de las tablas cumple los objetivos de diseño descritos anteriormente, es el momento de comenzar a agregar los datos existentes a las tablas. A continuación, puede crear las consultas, formularios, informes, macros y módulos que desee. 8 Utilizar las herramientas de análisis de Microsoft Access Microsoft Access incluye dos herramientas que pueden ayudarle a precisar el diseño de la base de datos. El Asistente para analizar tablas puede analizar el diseño de una tabla, proponer nuevas estructuras de tablas y relaciones si es conveniente y reestructurar una tabla en nuevas tablas relacionadas si es necesario. El Analizador de rendimiento puede analizar la base de datos completa y realizar recomendaciones y sugerencias para mejorarla. El asistente también puede implantar estas recomendaciones y sugerencias. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 9 de 36 Tema I: Tablas Para almacenar los datos, cree una tabla para cada tipo de datos de información. Defina relaciones entre las tablas para recuperar datos de varias tablas en una consulta, formulario o informe. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 10 de 36 En la vista Diseño, puede crear una tabla completa a partir de cero, o agregar, eliminar o personalizar campos de una tabla existente. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 11 de 36 Tema II: Consultas Cree una consulta para buscar y recuperar exactamente aquellos datos que cumplen unas determinadas condiciones que usted mismo especifica. Una consulta también puede actualizar o eliminar múltiples registros al mismo tiempo, así como realizar sobre los datos diversos cálculos incorporados o personalizados. Consultas: Qué son y cómo funcionan Las consultas se usan para ver, cambiar y analizar datos de distintas maneras. También se pueden usar como origen de registros para formularios e informes. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 12 de 36 El tipo de consulta más común es la consulta de selección. Una consulta de selección recupera datos de una o más tablas usando los criterios que especifique y, a continuación, los muestra en el orden deseado. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 13 de 36 Modos de especificar múltiples criterios en una consulta Tipos de combinaciones y cómo afectan al resultado de una consulta (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 (c) Septiembre 2000, Antonio Ortíz R. 14 de 36 Instructivo de Access 2000 (c) Septiembre 2000, Antonio Ortíz R. 15 de 36 Instructivo de Access 2000 16 de 36 Tema III: Formularios Cree un formulario para ver, introducir o cambiar datos directamente en una tabla de una manera sencilla. Cuando abre un formulario, Microsoft Access recupera los datos de una o más tablas y los muestra en la pantalla usando el esquema que eligió en el Asistente para formularios o usando un esquema que creó desde el principio. Cree un informe para analizar los datos o presentarlos de una determinada manera al imprimirlos. Por ejemplo, podría imprimir un informe que agrupe datos y calcule totales, y otro informe con distintos datos en un formato para imprimir etiquetas de correo. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 17 de 36 Puede usar los formularios para diversos propósitos. La mayor parte de la información de un formulario proviene de un origen de registros base. Otra información del formulario está almacenada en el diseño del mismo. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 18 de 36 El vínculo entre un formulario y su origen de registros se crea usando objetos gráficos denominados controles. El tipo más común de control que se usa para mostrar datos es un TextBox (también denominado cuadro de texto). (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 19 de 36 Tema IV: Reportes: Un reporte o informe es una forma efectiva de presentar los datos en formato impreso. Como tiene control sobre el tamaño y el aspecto de todos los elementos de un informe, puede presentar la información en la forma que desee verla. La mayor parte de la información en un informe proviene de una tabla, consulta o instrucción SQL base, que es el origen de los datos del informe. Otra información del informe se almacena en el diseño del informe. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 (c) Septiembre 2000, Antonio Ortíz R. 20 de 36 Instructivo de Access 2000 Modos de personalizar un informe (c) Septiembre 2000, Antonio Ortíz R. 21 de 36 Instructivo de Access 2000 (c) Septiembre 2000, Antonio Ortíz R. 22 de 36 Instructivo de Access 2000 (c) Septiembre 2000, Antonio Ortíz R. 23 de 36 Instructivo de Access 2000 24 de 36 Tema V: Macros Una macro es un conjunto de una o más acciones que cada una realiza una operación determinada, tal como abrir un formulario o imprimir un informe. Las macros pueden ayudar a automatizar las tareas comunes. Por ejemplo, puede ejecutar una macro que imprima un informe cuando el usuario haga clic en un botón de comando. Una macro puede ser una macro compuesta de una secuencia de acciones, o puede ser un grupo de macros. También se puede usar una expresión condicional para determinar si se llevará a cabo una acción en algunos casos cuando se ejecute la macro. Una secuencia de acciones La siguiente macro está compuesta de una serie de acciones. Microsoft Access lleva a cabo estas acciones cada vez que se ejecuta la macro. Para ejecutar esta macro se hace referencia al nombre de la macro Revisar Productos. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 25 de 36 Un grupo de macros Si tiene numerosas macros, agrupar las macros relacionadas en grupos de macros puede ayudar a administrar la base de datos más fácilmente. Para mostrar los nombres de las macros de un grupo de macros, haga clic en Nombres de macros en el menú Ver en la ventana Macro. Por ejemplo, el siguiente grupo de macros, llamado Botones, está compuesto de tres macros relacionadas: Empleados, Productos, y Representantes. Cada macro lleva a cabo la acción AbrirFormulario, y la macro Productos lleva también a cabo la acción DesplazarTamaño. El nombre en la columna Nombre de macro identifica a cada macro. Cuando se ejecuta una macro en un grupo de macros, Microsoft Access lleva a cabo la acción de la columna acción y cualquier otra acción que siga inmediatamente, cuya columna Nombre de macro esté en blanco. Para ejecutar una macro en un grupo de macros, utilice el nombre del grupo de macros seguido de un punto y a continuación el nombre de macro. En el ejemplo anterior, para hacer referencia a la macro Empleados en el grupo de macros Botones, escribiría Botones.Empleados. Acciones condicionales Para mostrar la columna Condición, haga clic en Condiciones en el menú Ver en la ventana Macro. La siguiente macro ejecuta las acciones CuadroMsj y DetenerMacro sólo cuando la expresión en la columna Condición sea verdadera (cuando hay un valor Nulo en el campo IdProveedor). Ejecutar una macro Cuando ejecuta una macro, Microsoft Access comienza desde el principio de la macro y lleva a cabo todas las acciones en la macro hasta que alcanza o bien otra macro (si la macro se encuentra en un grupo de macros) o el fin de la macro. Una macro puede ser ejecutada directamente, desde otra macro o un procedimiento de evento, o como respuesta a un evento que se produce en un formulario, informe o control. Por ejemplo, puede agregar una macro a un botón de comando de forma que la macro se ejecute cuando el usuario presiona el botón. También puede crear un comando de menú personalizado o un botón de la barra de herramientas que ejecute una macro, asignar una macro a una combinación de teclas, o ejecutar automáticamente una macro al abrir una base de datos. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 26 de 36 Tema VI: DAO: Objeto de Acceso a Datos Los objetos de acceso a datos (DAO) le habilitan para utilizar un lenguaje de programación para tener acceso y manipular datos en bases de datos locales o remotas y administrar bases de datos, los objetos y la estructura. Modelos de objeto El DAO admite dos entornos diferentes de bases de datos o "espacios de trabajo." Los espacios de trabajo Microsoft Jet permiten tener acceso a datos en bases de datos Microsoft Jet, bases de datos Microsoft conectadas a ODBC y orígenes de datos ISAM instalable en otros formatos, como Paradox o Lotus 1-2-3. Los espacios de trabajo ODBCDirect permiten tener acceso servidores de bases de datos mediante ODBC, sin cargar el motor de base de datos Microsoft Jet. Utilice el espacio de trabajo Microsoft Jet cuando abra una base de datos Microsoft Jet (archivo .mdb) u otra base de datos de escritorio ISAM o cuando necesite aprovecharse de la características particulares de Microsoft Jet, como la posibilidad de unir datos de diferentes formatos de base de datos. El espacio de trabajo ODBCDirect proporciona una alternativa cuando sólo necesita ejecutar consultas o procedimientos almacenados en un servidor, como Microsoft SQL Server o cuando la aplicación cliente necesita las capacidades específicas de ODBC, como las actualizaciones por lotes o la ejecución de una consulta asíncrona. Objeto DBEngine El objeto DBEngine es el objeto de nivel más alto en el modelo de objeto DAO. DBEngine contiene y controla todos los otros objetos en la jerarquía de los objetos del DAO. No puede crear objetos DBEngine adicionales y el objeto DBEngine no es un elemento de ninguna colección. * Cuando hace referencia a un origen de datos ODBC directamente mediante DAO, se denomina " espacio de trabajo ODBCDirect." Para distinguirlo de un origen de datos ODBC al que hace referencia indirectamente mediante el motor de base de datos Microsoft Jet, utilizando un "espacio de trabajo Microsoft Jet". Cada método de acceso a datos ODBC necesita dos tipos de objetos Workspace; puede establecer la propiedad DefaultType para elegir el tipo predeterminado de objeto Workspace que creará en el objeto DBEngine. El tipo de Workspace y el origen de datos asociado determina qué objetos, métodos y propiedades del DAO puede utilizar. Con cualquier tipo de base de datos o conexión, puede: (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 27 de 36 Utilizar la propiedad Version para obtener el número de versión del DAO. Utilizar la propiedad LoginTimeout para obtener o establecer el tiempo de espera de registro de ODBC y el método RegisterDatabase para proporcionar información de ODBC al motor de base de datos Microsoft Jet Puede utilizar estas características del mismo modo, sin tener en cuenta si está conectado a un origen de datos ODBC mediante Microsoft Jet o mediante un espacio de trabajo ODBCDirect. Utilizar la propiedad DefaultType para establecer el tipo predeterminado de conexión de base de datos que utilizarán a continuación los objetos Workspace creados - tanto Microsoft Jet como ODBCDirect. Utilizar las propiedades DefaultPassword y DefaultUser para establecer la identificación de usuario y contraseña para el objeto Workspace predeterminado. Utilizar el método CreateWorkspace para crear un objeto Workspace nuevo. Puede utilizar argumentos opcionales para sobrescribir los valores de las propiedades DefaultType, DefaultPassword y DefaultUser. Utilizar el método OpenDatabase para abrir una base de datos en el Workspace predeterminado y utilizar los métodos BeginTrans, Commit y Rollback para controlar transacciones en el Workspace predeterminado. Utilizar la colección Workspaces para hacer referencia a objetos Workspace específicos. Utilizar la colección Errors para examinar detalles sobre los errores de acceso a datos. Otras propiedades y métodos sólo están disponibles cuando utiliza DAO con el motor de base de datos Microsoft Jet. Puede utilizarlos para controlar el motor de base de datos Microsoft Jet, manipular sus propiedades y ejecutar tareas en objetos temporales que no son elementos de colecciones. Por ejemplo, puede: Utilizar el método CreateDatabase para crear un nuevo objeto Microsoft Jet Database. Utilizar el método Idle para activar el motor de base de datos Microsoft Jet y completar las tareas pendientes. Utilice los métodos CompactDatabase y RepairDatabase para mantener los archivos de base de datos. Utilizar las propiedades IniPath y SystemDB para especificar la ubicación de la información de Registro de Windows de Microsoft Jet y el archivo de información de grupo de trabajo Microsoft Jet, respectivamente. El método SetOption le permite sobrescribir los valores del Registro de Windows para el motor de base de datos Microsoft Jet. * Después de cambiar los valores de la propiedad DefaultType e IniPath, sólo los objetos Workspace subsiguientes reflejarán estos cambios. Para hacer referencia a una colección que pertenezca al objeto DBEngine, a un método o a una propiedad que se aplique a este objeto, utilice la siguiente sintaxis: [DBEngine.][colección | método | propiedad] Objetos DAO (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 28 de 36 Hay 17 tipos diferentes de objetos DAO. Puede declarar nuevas variables de objeto DAO para cualquier tipo de objeto. Por ejemplo, el siguiente código Visual Basic for Applications (VBA) crea variables de objeto para un objeto Database, un objeto Recordset de tipo Dynaset y un objeto Field: Dim dbsEjemplo As Database Dim rstEjemplo As Recordset Dim fldEjemplo As Field Set dbsEjemplo = OpenDatabase("Editores.mdb") Set rstEjemplo = dbsEjemplo.OpenRecordset("Autores", _dbOpenDynaset) Set fldEjemplo = rstEjemplo.Fields("IdAutor") Colecciones DAO Cada tipo de objeto DAO distinto de DBEngine también tiene una colección correspondiente. Una colección incluye todos los objetos existentes de ese tipo. Por ejemplo, la colección Recordsets contiene todos los objetos Recordset abiertos. Cada colección es "propiedad" de otro objeto en el siguiente nivel superior de la jerarquía. Un objeto Database "es propiedad" de una colección Recordsets. Excepto para los objetos Connection y Error, cada objeto DAO tiene una colección Properties. La mayoría de los objetos DAO tienen colecciones y propiedades predeterminadas. Por ejemplo, la colección predeterminada de un objeto Recordset es la colección Fields y la propiedad predeterminada de un objeto Field es la propiedad Value. Puede simplificar el código aprovechándose de estas predeterminaciones. Por ejemplo, el siguiente código de ejemplo establece el valor del campo IdEditor en el registro activo: rstEjemplo!IdEditor=99 Objetos DBEngine y Workspace Todos los objetos DAO se derivan del objeto DBEngine. Puede establecer la propiedad DefaultType en el objeto DBEngine para determinar el tipo de espacio de trabajo (Microsoft Jet u ODBCDirect) para crear en las llamadas al método CreateWorkspace siguiente o puede sobrescribir esta propiedad con el argumento tipo en el mismo método CreateWorkspace. Cuando la aplicación crea un espacio de trabajo, la biblioteca adecuada - el motor de base de datos Microsoft Jet u ODBC - se carga en memoria en este momento. Puede abrir objetos Workspace adicionales si los necesita. Cada objeto Workspace tiene un Id de usuario y una contraseña asociada. Uso del espacio de trabajo Microsoft Jet Abrir una base de datos (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 29 de 36 Para abrir una base de dato, simplemente abra un objeto Database existente o cree uno nuevo. Este objeto puede representar una base de datos Microsoft Jet (archivo .mdb), una base de datos ISAM (por ejemplo, Paradox) o una base de datos ODBC conectada mediante el motor de base de datos Microsoft Jet (también conocido como una "base de datos ODBC conectada a Microsoft Jet"). Lenguaje de definición de datos (DDL) Puede utilizar variables de objeto y otras características DDL para modificar la estructura de la base de datos. Por ejemplo, puede agregar un nuevo objeto Field a una tabla existente con el siguiente código: Dim dbs As Database, tdf As TableDef, fld As Field ' Abre una base de datos. Set dbs = OpenDatabase("Editores.mdb") ' Open a TableDef. Set tdf = dbs.TableDefs("Autores") ' Crea un nuevo campo. Set fld = tdf.CreateField("Dirección", dbText, 20) ' Anexa el campo a la colección Fields del objeto TableDef. tdf.Fields.Append fld Este código crea un nueva variable de objeto para un objeto Field y la agrega a un objeto TableDef con el método Append. Ya que un objeto TableDef contiene la definición de una tabla, la tabla tiene ahora un campo llamado Dirección para escribir datos. Del mismo modo, puede crear nuevas tablas e índices. Manipulación de datos El DAO proporciona un excelente conjunto de herramientas de manipulación de datos. Puede crear un objeto Recordset para consultar convenientemente una base de datos y manipular el conjunto de registros resultante. El método OpenRecordset acepta una cadena SQL o un nombre de un objeto QueryDef (consulta almacenada) como un argumento de origen de datos, o se puede abrir desde un objeto QueryDef o un objeto TableDef, utilizando este objeto como el origen de datos. El objeto Recordset resultante presenta un conjunto extremadamente rico de propiedades y métodos con el que examinar y modificar datos. El objeto Recordset está disponible en cuatro tipos diferentes: Table, Dynaset, Forward-only y Snapshot. Transacciones Todos los objetos Database abiertos a través de un objeto Workspace comparten un alcance de transacción común. Esto quiere decir que cuando utiliza el método BeginTrans en un objeto Workspace, se aplica a todas las bases de datos abiertas con ese objeto Workspace. Del mismo modo, cuando utiliza el método CommitTrans a través del objeto Workspace, se aplica a todas las bases de datos abiertas en el objeto Workspace. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 30 de 36 Réplicas Puede utilizar la réplica de base de datos para crear y mantener réplicas de una base de datos modelo de Microsoft Jet utilizando el método Synchronize para actualizar periódicamente todas o parte de las réplicas o para copiar datos nuevos de una réplica a otra. También pude restringir la actualización a sólo los registros seleccionados, utilizando la propiedad ReplicaFilter y después sincronizar esos registros con el método PopulatePartial. Seguridad Puede restringir el acceso a una o más bases de datos .mdb o a las tablas utilizando los valores de seguridad establecidos y administrados por el motor de base de datos Microsoft Jet. En el código, puede establecer los objetos Group y User para definir el alcance y nivel de permisos disponibles a usuarios individuales en una base objeto a objeto. Por ejemplo, puede establecer permisos para un usuario específico para proporcionar acceso de sólo lectura a una tabla y acceso total a otra. Uso del Modelo de objetos ODBCDirect Conexión a una base de datos Un objeto Connection es parecido a un objeto Database. De hecho, un objeto Connection y un objeto Database representan referencias diferentes al mismo objeto y propiedades en cada uno de los dos tipos de objeto que le permiten obtener una referencia al otro objeto correspondiente, que simplifica la tarea de convertir las aplicaciones cliente ODBC que utilizan Microsoft Jet para utilizar en vez de ello ODBCDirect. Utilice el método OpenConnection para conectarse a un origen de datos ODBC. El objeto Connection resultante contiene información acerca de la conexión, como el nombre del servidor y el nombre del origen de datos. Consultas Aunque el DAO no admite consulta almacenadas en un espacio de trabajo ODBCDirect, se puede crear una consulta compilada como un objeto QueryDef y se puede utilizar para ejecutar consultas de acción y también para ejecutar procedimientos almacenados en el servidor. La propiedad Prepare le permite decidir si crear un procedimiento almacenado temporal y privado en el servidor de un QueryDef antes de ejecutar la consulta actual. Las consultas de parámetros también se pueden transferir al servidor, utilizando objetos Parameter en el QueryDef. La propiedad Direction le permite especificar un Parameter como entrada, salida o ambos o aceptar un valor de un procedimiento almacenado. Manipulación de datos Crear un objeto Recordset es una forma oportuna de consultar una base de datos y manipular el conjunto de registros resultante. El método OpenRecordset acepta una cadena SQL o un objeto QueryDef (consulta almacenada) como un argumento de origen de datos. El objeto (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 31 de 36 Recordset resultante presenta un conjunto extremadamente rico de propiedades y métodos con el que examinar y modificar datos. El objeto Recordset está disponible en cuatro tipos diferentes: Table, Dynaset, Forward-only y Snapshot - que corresponden a los tipos de cursores ODBC: Dynamic, Keyset, Forward-only y Static. Está disponible una biblioteca de cursor de actualización por lotes para aplicaciones cliente que necesitan trabajar con un cursor sin mantener bloqueos en el servidor o sin emitir las peticiones de actualización de un registro al mismo tiempo. En cambio, el cliente almacena la información de actualización de muchos registros en un búfer local (o "por lotes") y después envía una actualización por lotes. Ejecución de método asícrono Los métodos Execute, MoveLast, OpenConnection y OpenRecordset presentan la opción dbRunAsync. Esto permite a la aplicación cliente realizar otras tareas (como, por ejemplo, cargar formularios) mientras se está ejecutando el método. Puede comprobar la propiedad StillExecuting para ver si la tarea se completó y para terminar una tarea asíncrona con el método Cancel. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 32 de 36 Tema VII: Distribución de la Aplicación Después de que haya conocido Microsoft Access y haya aprendido cómo crear tablas, consultas, formularios, informes, barras de comandos personalizadas, etc., puede agregar macros y código de Visual Basic para aplicaciones para unir todos estos objetos en una aplicación. Una aplicación organiza tareas relacionadas para que el usuario pueda centrarse en su trabajo, no en cómo trabaja la aplicación o en el programa usado para desarrollar la aplicación. Estableciendo opciones en el cuadro de diálogo Inicio (menú Herramientas), puede controlar el aspecto y el comportamiento de su aplicación al iniciarse. Por ejemplo, puede indicar qué barra de menús y qué formulario mostrará la aplicación al inicio o puede especificar el texto que aparecerá en la barra de título mientras se está ejecutando la aplicación. Si tiene pensado distribuir su aplicación a otros usuarios, podría establecer seguridad para proteger los objetos que ha creado, así como los datos de las tablas. Después de distribuir su aplicación, utilice las herramientas de mantenimiento proporcionadas por Microsoft Access para compactar y reparar la base de datos periódicamente. Nota: Además de las herramientas e información proporcionadas por Microsoft Access para ayudarle en el desarrollo de aplicaciones, Microsoft Office 2000, edición Developer proporciona herramientas para ayudarle a programar aplicaciones compatibles con Microsoft Windows y Office. Proteger una base de datos Microsoft Access ofrece dos métodos tradicionales para proteger una base de datos: habilitando una contraseña para abrir una base de datos o mediante seguridad a nivel de usuario, que puede ser utilizada para limitar a qué parte de la base de datos el usuario tiene acceso y puede cambiar. Además de estos métodos, puede eliminar código modificable de Visual Basic de la base de datos y así proteger el diseño de formularios, informes y módulos de la base de datos de posibles modificaciones guardándolo como un archivo MDE. Habilitar una contraseña El método más simple es habilitar una contraseña para abrir la base de datos. Una vez que se haya habilitado la contraseña, se mostrará un cuadro de diálogo que pida la contraseña cada vez que se abra la base de datos. Sólo los usuarios que escriban la contraseña correcta podrán abrir la base de datos. Este método es seguro (Microsoft Access codifica la contraseña de forma que no se pueda tener acceso leyendo directamente el archivo de base de datos), pero sólo es aplicable para abrir una base de datos. Una vez que se ha abierto una base de datos, todos los objetos están disponibles para el usuario (a menos que se haya definido la seguridad a nivel de usuario, como se describe posteriormente en este tema). Para una base de datos que esté compartida entre un pequeño grupo de usuarios o sobre un sólo equipo, la habilitación de una contraseña es todo lo que se requiere. Precaución No utilice una contraseña de base de datos si va a replicar una base de datos. Las bases de datos replicadas no se pueden sincronizar si se definen contraseñas para ellas. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 33 de 36 Seguridad a nivel de usuario El método más flexible y extendido de proteger una base de datos se llama seguridad a nivel de usuario. Esta forma de seguridad es similar a los métodos usados en la mayoría de los sistemas de red. Los usuarios son obligados a identificarse y escribir una contraseña cuando inician Microsoft Access. Dentro del archivo de información de grupo de trabajo, están identificados como miembros de un grupo. Microsoft Access ofrece dos grupos predeterminados: Administradores (llamados el grupo de Administradores) y Usuarios (llamados el grupo de Usuarios), aunque se pueden definir grupos adicionales. Los permisos se conceden a los grupos y usuarios para regular cómo se les permite trabajar con cada objeto en una base de datos. Por ejemplo, a los miembros del grupo Usuarios puede que se les permita visualizar, introducir o modificar datos en una tabla Clientes, pero no se les permita cambiar el diseño de esa tabla. Al grupo Usuarios se le podría permitir que sólo examinaran los datos de una tabla que contenga datos de pedidos y se les negara totalmente el acceso a una tabla Nóminas. Los miembros del grupo de Administradores tienen todos los permisos sobre todos los objetos de una base de datos. Se pueden instalar controles más ajustados creando sus propias cuentas de grupo, asignando los permisos adecuados a esos grupos y después agregando usuarios a esos grupos. Las tres razones principales para utilizar la seguridad a nivel de usuario son las siguientes: Proteger la propiedad intelectual de su código. Impedir que los usuarios cambien o inutilicen inadvertidamente una aplicación cambiando código de objetos de los que depende la aplicación. Proteger los datos sensibles de la base de datos. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 34 de 36 Que es un API? API significa “Interface para Programacion de Aplicaciones”. Un API es simplemente un conjunto de funciones que el el programador puede usar para trabajar con un componente, aplicación o sistema operativo. Normalmente un API consiste de uno o mas DLLs que proveen alguna funcionalidad especifica. DLLs, son archivos que contienen funciones que pueden ser llamadas desde cualquier aplicación ejecutando sobre Windows. En tiempo de ejecución, una funcion contenida en un DLL es ligada dinámicamente en la aplicación que la llama. No hay forma de saber cuantas aplicaciones llaman una funcion contenida en un DLL, esta funcion existe en un solo archivo en disco, y el DLL es creado solo una vez en memoria. El API que se menciona mas frecuentemente es el API de Windows, que incluye los DLLs que hacen trabajar el sistema operativo Windows. Cada aplicación de Windows interactua con el API de Windows directa o indirectamente. El API de Windows asegura que todas las aplicaciones ejecutando bajo Windows lo hagan de una manera consistente. Note que el sistema operativo Windows ha evolucionado, varias versiones del API de Windows han sido publicadas. Windows 3.1 usa el API Win16. Las plataformas Windows NT, Windows 95 y Windows 98 usan el API Win32. Existen otros APIs disponibles que han sido publicados ademas del API de Windows. Por ejemplo, el “Mail Application Programming Interface” (MAPI) es un conjunto de DLLs que pueden ser usados para escribir aplicaciones de e-mail. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 35 de 36 Arquitecturas de Base de Datos Sistemas Cliente / Servidor Los sistemas cliente / servidor son construidos para que la base de datos pueda residir en una computadora central, conocida como “Servidor”, y es compartida por varios usuarios. Los usuarios acceden al servidor a través de una aplicación cliente o servidor: El mantener y manejar los datos en una localidad central ofrece ciertas ventajas: Cada elemento de dato es guardado en una localidad central donde todos los usuarios pueden trabajarlos, no se guardan copias separadas de este elemento en cada cliente, lo cual elimina los problemas con usuarios, asegurando que trabajen con la misma información. Un servidor de base de datos relacional optimiza el trafico en la red al regresar solo aquellos datos que la aplicación requiere. Los costos en hardware se minimizan Las tareas de mantenimiento como respaldo y restauración de datos se simplifican debido a que se realizan en un servidor central. Redes Punto a Punto Microsoft Jet soporta la mayoría de servidores de archivos y redes punto a punto que trabajan en PC’s. El rendimiento de un sistema de base de datos multiusuario ejecutando en una red punto a punto puede caer, dependiendo de cómo se está utilizando la computadora que funciona como servidor de archivos. Si una estación de trabajo que contiene la base de datos compartida esta siendo usada para ejecutar aplicaciones, estas incrementaran el acceso a disco y el trafico en la red, lo cual afecta el rendimiento. Además, si un usuario ejecuta otra aplicación que bloquea el sistema, todos los usuarios compartiendo la base de datos perderán su conexión a la base de datos. Todo esto puede comprometer la integridad de la base de datos. Para un mejor rendimiento y estabilidad en una red punto a punto, asegúrese de que la estación conteniendo una base de datos compartida esté dedicado a un solo propósito. (c) Septiembre 2000, Antonio Ortíz R. Instructivo de Access 2000 36 de 36 Glosario: Base de Datos: un conjunto de datos relacionados a un propósito en particular. Una base de datos nativa del “Jet Engine” contiene tablas y también puede contener consultas o vistas (Queries), tablas, índices, relaciones de tablas, criterios de validación de campos, y ligas a fuentes de datos externas. Base de Datos Externa: Cualquier base de datos accesada a través de ODBC, como SQL Server que reside en un servidor remoto, o una base de datos externa como dBASE, FoxPro, Paradox, Btrieve, Microsoft Excel o Microsoft Access. Microsoft Jet DataBase Engine: Un sistema para manipular datos que guarda y recupera información en bases de datos del usuario y del sistema. DAO: Data Access Object, un objeto que es definido por Microsoft Jet Database Engine para manipular datos. Bound Control: Controles que permiten el acceso a un campo específico de una base de datos a través de un data control. Un control de este tipo puede ser relacionado a un data control a traves de sus propiedades DataSource y DataControl. Cuando un data control cambia de un registro a otro, todos los “bound controls” conectados a él son actualizados automáticamente para mostrar los campos del registro actual. Cuando los usuarios cambian datos en un bound control y luego se mueven a un registro diferente, los cambios son salvados en la base de datos automáticamente. RecordSet: Un objeto recordset representa todos los registros en una tabla base o el resultado de ejecutar una consulta (vista o query), existen tres tipos de objetos recordset; “recordset tipo tabla”, “recordset tipo dynaset” y “recordset tipo snapshot” Recordset tipo tabla: una representación en código de una tabla base, en la que se puede agregar, cambiar o borrar registros de una sola tabla; “ Recordset tipo snapshot: copia estática de un conjunto de registros que se puede utilizar para buscar registros o generar reportes, un recordset tipo snapshot puede contener campos de una o mas tablas en una base de datos pero no pueden ser modificados. ODBC: Open DataBase Connectivity, un protocolo estandar que permite conectarse a una variedad de servidores de bases de datos o archivos externos. Driver ODBC: Un DLL específico usado para conectar una fuente de datos a otra aplicación. ISAM: Acrónimo de Indexed Sequential Access Method. El Jet instala (carga) estos driver’s ISAM cuando se hace referencia a ellos desde la aplicación. Ejemplos de esta tecnologia son Fox, Btrieve, Paradox. (c) Septiembre 2000, Antonio Ortíz R.