Cómo acceder a bases de datos Microsoft Access mediante Delphi y ODBC, sin utilizar código fuente.

Este artículo muestra paso a paso cómo conectar con bases de datos Microsoft Access desde Borland Delphi 6, sin necesidad de utilizar código fuente ni componentes adicionales. Para ello utilizaremos ODBC (Open Database Connectivity) y BDE (Borland Database Engine).

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

En primer lugar necesitaremos disponer del Driver ODBC para acceso a Microsoft Access, disponible en la web www.microsoft.es. Si se dispone de Windows XP no será necesario. Crearemos la Base de Datos Microsoft Access (mdb). Añadiremos el Driver ODBC para acceso a la BD creada, desde «Inicio» – «Configuración» «Panel de control» – «Herramientas administrativas» – «Orígenes de datos (ODBC)», en la pestaña «DNS de sistema» pulsaremos en «Agregar», seleccionaremos «Microsoft Access Driver (*.mdb), pulsaremos en «Finalizar» y rellenaremos los siguientes datos:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Nombre del origen de datos: será el nombre que utilizaremos en Delphi para enlazar el ODBC creado con el Database, en nuestro caso BDAccessInventario.

Descripción: comentario informativo.

A continuación pulsaremos en el botón «Seleccionar» para especificar la base de datos Access a la que nos conectaremos.

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Abrimos Delphi y pulsamos en «File» – «New» – «Application». Añadiremos un módulo de datos (data module) para colocar los componentes necesarios para el acceso a Access, para ello pulsaremos en «File» – «New» – «Data Module». A continuación añadiremos al módulo de datos los siguientes componentes para acceso a Bases de Datos. En la paleta de componentes, en la pestaña «BDE», seleccionaremos «Database» y lo añadiremos al módulo de datos. Este componente será el encargado de enlazar nuestra aplicación con el Driver ODBC creado anteriormente. Para ello haremos doble clic sobre el «Database»:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

En «Alias name» seleccionaremos el ODBC creado anteriormente (BDAccessInventario) y pulsaremos el botón «Defaults» para que nos añada automáticamente los parámetros necesarios para la conexión:

DATABASE NAME=
USER NAME=
ODBC DSN=BDAccessInventario
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
SQLQRYMODE=
LANGDRIVER=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
PASSWORD=

Por supuesto estos parámetros pueden ser modificados por código, pero, una vez más, nuestro objetivo es no utilizar código fuente.

Desmarcaremos la opción «Login prompt» (para que no nos aparezca la ventana de Usuario y Contraseña cada vez que nos conectemos, deberemos activar esta opción si hemos añadido usuarios a la BD Access). Pulsaremos en «OK».

Ahora mostraremos las propiedades del Database, lo seleccionamos y pulsamos F11 (o Intro), deberemos introducir un nombre a la Base de Datos (que será el que se utilice en Delphi), para ello lo escribiremos en la propiedad «DatabaseName», en nuestro caso «bdInventario»:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Para probar la conexión cambiaremos la propiedad «Connected» a «True», si nos deja cambiarla significará que la conexión ha sido satisfactoria en caso contrario mostrará un mensaje con el error.

En la paleta de componentes, en la pestaña «BDE», seleccionaremos «Table» y lo añadiremos al módulo de datos. Este componente será el encargado de enlazar con el Database y será el que nos proporcione los datos que necesitemos de la tabla que especifiquemos. Las propiedades que cambiaremos para que funcione serán:

DatabaseName: nombre que hemos dado a la propiedad «DatabaseName» del Database creado anteriormente.

TableName: si no ha habido errores y la conexión se ha establecido correctamente con la BD Access, podremos pulsar en el desplegable de «TableName» y seleccionar la tabla de la BD Access a la que queramos acceder.

Active: si ponemos a «True» esta propiedad abriremos la tabla seleccionada en «TableName».

Por último añadiremos un «DataSource», ubicado en la pestaña «Data Access». Este componente es sólo necesario si vamos a utilizar componentes visuales para mostrar o modificar los datos. Con lo cual se utiliza para enlazar el Table con los componentes visuales. La única propiedad imprescindible de éste es:

DataSet: pulsaremos en en desplegable y seleccionaremos el Table añadido anteriormente, en nuestro caso, puesto que no hemos modificado la propiedad «Name», se llama «Table1».

Tras añadir estos tres componentes no visuales en el Módulo de Datos, ahora añadiremos en el formulario un par de componentes visuales para poder mostrar y manipular los datos de la Base de Datos Access. Para ello mostramos el formulario, pulsando «Mayúsculas + F12» o el menú «View» – «Forms» y seleccionamos el formulario que se crea automáticamente al crear el proyecto:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Antes de añadir los componentes visuales, puesto que estos necesitarán estar enlazados con el componente «DataSource» del módulo de datos, deberos colocar el módulo de datos en la clausula USES del formulario, para ello es suficiente con pulsar en «File» – «Use Unit» y seleccionar el módulo de datos («Unit2» si lo hemos guardado con este nombre):

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Desde la paleta de componentes, pestaña «Data Controls» seleccionaremos «DBGrid», lo añadiremos al formulario y modificaremos la propiedad «DataSource». En el desplegable de la misma nos aparecerá «DataModule2.DataSource1» (en nuestro caso). Tras seleccionar el «DataSource» ya tendremos enlazado el componente visual con su origen de datos (el DataSource, a su vez enlazado con el Table que a su vez está enlazado con el Database que a su vez está «enlazado» con el ODBC creado al principio).

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Añadiremos un componente más que muestra automáticamente los botones de añadir, modificar, eliminar, refrescar, editar, validad, … registros. Este componente visual está en la pestaña «Data Controls» y se llama «DBNavigator» que también irá enlazado por la propiedad «DataSource» al «DataSource1» del módulo de datos (DataModule2).

Una vez añadidos todos los componentes y comprobado que las propiedades «Connected» (del «Database») y «Active» (del Table») están a «True» compilaremos la aplicación pulsando en F9 o en el menú «Run» – «Run». Si no ha habido errores nos aparecerá una ventana como la siguiente:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

y utilizando el DBGrid podremos añadir, modificar, eliminar y visualizar los registros de la tabla.

Por supuesto, debido a que no hemos añadido los campos (fields) al DBGrid no tenemos un control sobre las propiedades de los mismos para, por ejemplo, especificar el ancho de la columna o el título de la misma. Para realizar esto es suficiente con hacer doble clic sobre el DBGrid (obviamente en tiempo de diseño), pulsaremos el botón derecho del ratón sobre la ventana que aparece y seleccionaremos «Add All Fields»:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

de esta forma se nos añadirán automáticamente todos los campos de la tabla enlazada con el DBGrid. Para ver las propiedades de cualquier campo lo seleccionaremos y pulsaremos en «F11»:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Existe una forma más eficiente de tener un control exaustivo sobre las propiedades de los campos que queramos mostrar, se realiza desde el componente no visual «Table» (ubicado en el módulo de datos), haciendo doble clic sobre el mismo y pulsando en el botón derecho, a continuación en el menú que aparece seleccionaremos «Add all fields»:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

De esta forma tendremos los campos de la tabla y todas sus propiedades en el Table para que cuando lo enlacemos con un DataSource a un componente visual (como un DBGrid) éste muestre los campos tal y como los hayamos configurado en el Table:

Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente

Desde aquí podremos modificar propiedades como «DisplayLabel» (texto que describe al campo y que será el que el usuario vea), «DisplayWidth» (tamaño horizontal del campo, en un DBGrid será el ancho de la columna), …

Por supuesto, esta no es la mejor manera para acceder a una Base de Datos Access, pero la ventaja con respeto a otras es que no necesita prácticamente código fuente (en este ejemplo se demuestra que no hemos añadido ni una sola línea de código) y no necesita componentes adicionales (de terceros, normalmente de pago). La desventaja es que utiliza ODBC, con lo cual los accesos serán más lentos que si accediésemos de forma nativa (directamente de Delphi a Microsoft Access sin pasar por ODBC ni por el BDE).