Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

16
Access (mdb) : Acceso a una base de datos Microsoft Access desde Microsoft Word Os explicamos en este manual cómo obtener e insertar datos de una tabla de una base de datos Microsoft Access en un documento de Microsoft Word. Explicamos paso a paso cómo agregar una nueva macro y el código Visual Basic for Applications (VBA) necesario para acceder a una base de datos Access (válido para cualquier otro motor de base de datos) y también mostramos cómo crear una tabla en Word mediante código VBA. En realidad simulamos una combinación de correspondencia personalizada. Algunas definiciones iniciales (Access, Word). o Definición Microsoft Access. o Definición Microsoft Word . Escenario de trabajo, fichero Word . Creación de la base de datos Access. Creación del módulo VBA (macro) con el código fuente para acceso a Access. Ejecución de la macro en Word para acceso a base de datos Access. Artículos relacionados. Créditos. Algunas definiciones iniciales (Access, Word) Definición Microsoft Access Microsoft Access es un programa Sistema Gestor de Base de Datos Relacional (SGBDR del inglés Relational DataBase Management System o RDBMS) creado por Microsoft para uso personal de pequeñas organizaciones. Es un componente de la suite Microsoft Office. Es un software de gran difusión entre pequeñas empresas (PYMES) cuyas bases de datos no requieren de excesiva potencia, ya que se integra perfectamente con el resto de aplicaciones de Microsoft y permite crear pequeñas aplicaciones con unos pocos conocimientos del Programa. Microsoft Access permite crear formularios para insertar y modificar datos fácilmente. También tiene un entorno gráfico para ver las relaciones entre las diferentes tablas de la base de datos. Tiene un sistema de seguridad de cifrado bastante primitivo y puede ser la respuesta a proyectos de programación de pequeños y medianos tamaños. Para bases de datos de gran volumen (de datos o de usuarios) es recomendable usar otros SGBDR como MySQL, Microsoft SQL Server, Oracle Database, IBM DB2, Firebird, PostgreSQL, etc. Pues Microsoft Access no está diseñada para soportar un gran volumen de datos o un gran número de usuarios conectados concurrentemente. Tampoco está diseñada para funcionar a través de Internet. Entre sus mayores inconvenientes figuran que no es multiplataforma, sólo está disponible para sistemas operativos de Microsoft. Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos.

description

Excelente manual

Transcript of Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

Page 1: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

Access (mdb): Acceso a una base de datos Microsoft Access desde Microsoft Word

Os explicamos en este manual cómo obtener e insertar datos de una tabla de una base de datos Microsoft Access en un documento de Microsoft Word. Explicamos paso a paso cómo agregar una nueva macro y el código Visual Basic for Applications (VBA) necesario para acceder a una base de datos Access (válido para cualquier otro motor de base de datos) y también mostramos cómo crear una tabla en Word mediante código VBA. En realidad simulamos una combinación de correspondencia personalizada.

Algunas definiciones iniciales (Access, Word). o Definición Microsoft Access.o Definición Microsoft Word .

Escenario de trabajo, fichero Word . Creación de la base de datos Access. Creación del módulo VBA (macro) con el código fuente para acceso a Access. Ejecución de la macro en Word para acceso a base de datos Access. Artículos relacionados. Créditos.

 Algunas definiciones iniciales (Access, Word)Definición Microsoft AccessMicrosoft Access es un programa Sistema Gestor de Base de Datos Relacional (SGBDR del inglés Relational DataBase Management System o RDBMS) creado por Microsoft para uso personal de pequeñas organizaciones. Es un componente de la suite Microsoft Office.

Es un software de gran difusión entre pequeñas empresas (PYMES) cuyas bases de datos no requieren de excesiva potencia, ya que se integra perfectamente con el resto de aplicaciones de Microsoft y permite crear pequeñas aplicaciones con unos pocos conocimientos del Programa. Microsoft Access permite crear formularios para insertar y modificar datos fácilmente. También tiene un entorno gráfico para ver las relaciones entre las diferentes tablas de la base de datos.

Tiene un sistema de seguridad de cifrado bastante primitivo y puede ser la respuesta a proyectos de programación de pequeños y medianos tamaños.

Para bases de datos de gran volumen (de datos o de usuarios) es recomendable usar otros SGBDR como MySQL, Microsoft SQL Server, Oracle Database, IBM DB2, Firebird, PostgreSQL, etc. Pues Microsoft Access no está diseñada para soportar un gran volumen de datos o un gran número de usuarios conectados concurrentemente. Tampoco está diseñada para funcionar a través de Internet.

Entre sus mayores inconvenientes figuran que no es multiplataforma, sólo está disponible para sistemas operativos de Microsoft. Su uso es inadecuado para grandes proyectos de software que requieren tiempos de respuesta críticos.

Microsoft Access es "similar" a otros motores de base de datos SGBDR de escritorio como SQLite, Paradox (de Borland), DBASE, FoxPro, etc.

A continuación os mostramos las extensiones típicas de los archivos que componen una base de datos Access:

.mdb: base de datos de Access (versión 2003 y anteriores). .mde: base de datos de Access protegida ("compilada") (versión 2003 y anteriores).

Page 2: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

.mdz: extensión de plantillas de Access. .accdb: base de datos de Access (versión 2007). .accde: base de datos de Access protegida ("compilada") (versión 2007). .ldb, .laccdb: son usados para determinar qué registros están bloqueados y por quien, en una base de

datos compartida. Es un archivo temporal, se destruye automáticamente cuando no hay usuarios conectados a la base de datos Access.

.accdc: es un archivo comprimido que contiene un archivo de Access (.accdb o .accde) y un certificado digital.

.mam: macro de Access. .maq: consulta de Access. .mar: informe de Access. .mat: tabla de Access. .maf: formulario de Access. .adp: proyecto de Access. .adn: plantilla de proyecto de Access.

 

Definición Microsoft WordMicrosoft Word es un procesador de textos. Desarrollado por la empresa Microsoft. Actualmente viene integrado en la suite ofimática Microsoft Office.

Microsoft Word utiliza un formato nativo cerrado habitualmente llamado DOC (extensión de archivo .doc). Por la amplísima difusión del Microsoft Word, este formato se ha convertido en estándar de facto con el que pueden transferirse textos con formato o sin formato, o hasta imágenes, siendo preferido por muchos usuarios antes que otras opciones como el texto plano para el texto sin formato, o JPG para gráficos; sin embargo, este formato posee la desventaja de tener un mayor tamaño comparado con algunos otros. Por otro lado, la Organización Internacional para la Estandarización ha elegido el formato OpenDocument como estándar para el intercambio de texto con formato, lo cual ha supuesto una desventaja para el formato .doc. Ahora, en el Word 2007, se maneja un nuevo formato, docx. Es más avanzado y comprime aún más el documento.

 

Escenario de trabajo, fichero WordSupongamos el caso en el que queremos insertar en un documento de Word una lista de todos los clientes de nuestro programa de Facturación (con base de datos Microsoft Access). Estamos realizando un informe en Word en el que hemos de incluir una tabla con todos los clientes y su correspondiente DNI. Lógicamente, si no disponemos de este método, tendremos que insertarlos manualmente.

Por ejemplo, supongamos que disponemos de este documento de Word:

Page 3: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

Y en la parte final queremos incluir dicha lista de clientes.

Para realizar este proceso automático necesitaremos dos cosas:

1. La base de datos Access (aunque el procedimiento que explicamos aquí es válido para cualquier otro motor de base de datos).

2. El módulo con el macro que realizará la conexión a la base de datos Access, obtendrá los clientes (en nuestro ejemplo) y creará una tabla en Word con dos columnas, en una insertará el nombre de cada cliente y en la otra el DNI correspondiente.

 

Creación de la base de datos Microsoft Access 97 (mdb) Abriremos Access o bien accederemos a la carpeta donde queramos crear la base de datos access y pulsaremos

Page 4: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

con el botón derecho del ratón, seleccionando "Nuevo" - "Base de datos de Microsoft Access":

Introduciremos el nombre del fichero mdb de la base de datos, por ejemplo "bdajpdsoft", pulsaremos en "Crear":

En la ventana de Base de datos, en la pestaña "Tablas", pulsaremos "Nuevo":

Page 5: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

En la ventana de Nueva tabla seleccionaremos "Vista Diseño":

Añadiremos los campos que queramos para la tabla, por ejemplo:

codigo: de tipo Autonumérico. nombre: de tipo Texto con 100 caracteres. dni: de tipo Texto con 25 caractes.

Page 6: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

Estableceremos una clave principal (primary key o clave primaria) para la tabla, pulsando con el botón derecho del ratón sobre el campo "codigo" y seleccionando "Clave principal":

Cerraremos la ventana anterior, nos pedirá si queremos guardar los cambios, pulsaremos "Sí":

Introduciremos el nombre de la tabla, por ejemplo "clientes":

Page 7: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

Ya tendremos creada la tabla, ahora podremos añadirle datos pulsando en "Abrir":

En la lista podremos añadir, eliminar y modificar registros:

 

 

Creación del módulo VBA en Word 97 con el código para acceso a AccessDesde el documento de Word que queramos utilizar como "plantilla" pulsaremos en el menú "Herramientas" -

Page 8: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

"Macro" - "Macros...":

Introduciremos en "Nombre de la macro" el nombre que tendrá la macro para diferenciarla de otras, por ejemplo "obtencionDatosMDB", pulsaremos "Crear":

Pegaremos el código fuente de abajo en la ventana de la macro:

Page 9: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

El código fuente VBA del macro para realizar al conexión con microsoft Access, obtener los datos de los clientes y crear la tabla en Word con la lista de clientes:

Dim db As DatabaseDim rsDatos As Recordset

Sub obtencionDatosMDB() Dim sql As String Dim resultadoMsg On Error GoTo cError resultadoMsg = MsgBox("Se va a realizar la conexión con la " & _ "base de datos para obtener los datos a partir " & _ "del punto actual del documento Word ¿desea " & _ "continuar?", vbQuestion + vbOKCancel, "Acceso a mdb desde Word") If resultadoMsg = vbOK Then

Page 10: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

'Accedemos a Access (mdb) desde Word Set db = opendatabase("C:bdajpdsoft.mdb") sql = "SELECT nombre, dni FROM clientes" sql = sql & " WHERE nombre is not null" sql = sql & " ORDER by nombre" Set rsDatos = db.OpenRecordset(sql, dbOpenSnapshot) 'Insertar una línea en blanco en el documento Selection.MoveDown Unit:=wdLine, Count:=1 Selection.TypeParagraph Selection.TypeParagraph 'Tipo de letra para el título Selection.Font.Size = 12 Selection.Font.Bold = True Selection.TypeText Text:="CLIENTES" Selection.TypeParagraph Selection.Font.Size = 11 'Insertamos una tabla con dos columnas ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=2 Selection.Tables(1).Columns(1).SetWidth ColumnWidth:=300, RulerStyle:=wdAdjustNone Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=100, RulerStyle:=wdAdjustNone Selection.Tables(1).Rows.Alignment = wdAlignRowCenter 'Texto de la cabecera de la tabla sValor = "Nombre" Selection.TypeText Text:=sValor Selection.MoveRight Unit:=wdCell sValor = "DNI/CIF" Selection.TypeText Text:=sValor Selection.MoveRight Unit:=wdCell 'Sombreamos la primera fila (encabezado) Selection.Tables(1).Rows(1).Select Selection.Cells.Shading.Texture = wdTexture20Percent Selection.Font.Size = 10 Selection.Font.Bold = True Selection.EndKey Unit:=wdLine Selection.MoveRight Unit:=wdCell 'Recorremos la tabla de clientes Do While (Not rsDatos.EOF) Selection.Font.Size = 9 Selection.Font.Bold = False 'Insertamos el nombre del cliente en la tabla sValor = "" & rsDatos("nombre") Selection.TypeText Text:=sValor

Page 11: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

'Movemos a la siguiente columna Selection.MoveRight Unit:=wdCell Selection.Font.Size = 9 Selection.Font.Bold = False 'Insertamos el DNI del cliente en la segunda columna sValor = "" & rsDatos("dni") Selection.TypeText Text:=sValor Selection.MoveRight Unit:=wdCell rsDatos.MoveNext Loop rsDatos.Close End If cSalir: Exit Sub

cError: MsgBox Err.Description, vbExclamation + vbOKOnly GoTo cSalirEnd SubAñadiremos la referencia a Microsoft DAO 3.6 Object Library desde el menú "Herramientas" - "Referencias..." del editor de Visual Basic de Word:

Marcaremos "Microsoft DAO 3.6 Object Library" y pulsaremos "Aceptar":

Page 12: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

 Ejecución de la macro en Word para acceso a base de datos AccessUna vez creada la macro en Word que accede a una base de datos Microsoft Access, obtiene los clientes de una tabla y añade una tabla de Word con los datos obtenidos de la mdb, podremos ejecutarla en el documento de Word.

Para ejecutar la macro nos posicionaremos (con el cursor) en la parte del documento donde queramos insertar la tabla con los datos de Access y pulsaremos en el menú "Herramientas" - "Macro" - "Macros...":

Page 13: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

Seleccionaremos la macro creada, en nuestro caso "obtencionDatosMDB" y pulsaremos "Ejecutar":

Puesto que en el código VBA hemos añadido un aviso, nos lo mostrará antes de ejecutar la macro:

Y la macro accederá a la base de datos Access (mdb) indicada en el código VBA, obtendrá los clientes y su DNI de

Page 14: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

la tabla "clientes" y creará una tabla en Word con los datos obtenidos:

Como se puede observar es una alternativa a utilizar la combinación de correspondencia de Word que, a veces, puede ser un poco laboriosa. La ventaja de utilizar este método es que podremos personalizar cualquier cosa, desde las columnas a mostrar hasta los filtros a realizar en la consulta que obtiene los datos de Access (mediante la cláusula where en el SQL).

 

Artículos relacionados Cómo compilar un fichero Access (de MDB a MDE). Consultas e informes desde Microsoft Access a Excel. Artículos del Proyecto AjpdSoft sobre Microsoft Access. Exportar una tabla Microsoft Access a MySQL. Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente. Instalar y realizar aplicación web con Oracle Application Express. Instalación y configuración de Windows XP Service Pack 3. AjpdSoft Administración Bases de Datos (ejemplo de acceso con Delphi a Access mediante ODBC, Open

Source). AjpdSoft Control aula libre acceso (ejemplo de acceso nativo con Delphi a Access, Open Source). AjpdSoft Inventario PCs (ejemplo de acceso nativo con Delphi a Access, Open Source). AjpdSoft Mostrar Clave Access 97.

Page 15: Access Mdb Acceso a Una Base de Datos Microsoft Access Desde Microsoft Word

AjpdSoft Usuarios Conectados a MDB. Realizar aplicación en Delphi con tablas Paradox en Red. Cómo conectar Oracle Database con Access mediante Oracle Transparent Gateway. Foros del Proyecto AjpdSoft sobre Microsoft Access con trucos y dudas resueltas. Definición ODBC. Definición SQL.

CréditosArtículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.