Cargando

Por Alfonso Ricaño Bringas Es muy común que cuando alguien comienza a hacer programas con Delphi que utilicen bases de datos, comienze utilizando el formato de Paradox (.db), el cual es manejado por el driver Standard de la BDE.

Paradox ofrece muy buenas características de integridad de datos en su calidad de manejador de archivos, pero también tiene algunas deficiencias sobre todo cuando se utiliza en un sistema con muchos usuarios accediendo un servidor de archivos donde reside la base de datos. Tomando como referencia mi propia experiencia, voy a hacer una breve lista de los problemas que tuve cuando utilicé tablas de Paradox. * Corrupción de índices * Bloqueo de registros que dejaron de ser utilizados * Pérdida de datos * Mensajes de tabla de detalle abierta (detail table open) Algunos problemas pueden ser corregidos con la utilización de programas que hacen uso de la librería de funciones TUTILITY.DLL que ayuda a reparar tablas, otros también se corrigen borrando el archivo PDOXUSRS.NET, y cambiando algunas configuraciones en el sistema, pero cuando me decidí a dejar el formato de Paradox fue cuando perdí datos, y buscando en la internet, me encontré con una página donde indicaba que la manera de minimizar los errores con tablas de Paradox era una lista de 50 cosas que había que configurar y modificar, desde verificar la versión de algunos archivos del sistema operativo, hasta ejecutar el procedimiento dbiSaveChanges de la API de la BDE cada vez que se guardaban los datos. Así que comenzó mi búsqueda por un formato de base de datos confiable, rápido y seguro, y encontré la solución en el mismo CD de Delphi: InterBase. InterBase me brindó mucha seguridad, rapidez y confiabilidad, pero tuve que aprender algunos conceptos de desarrollo de sistemas cliente-servidor, y también tuve que aprender y dominar bien el lenguaje SQL. Este artículo trata de lo que tiene que aprender y hacer un programador que use Delphi y tablas de Paradox para pasar a usar InterBase como su manejador de base de datos. Acceso a InterBase Hay varias formas de acceder a InterBase desde un programa hecho en Delphi. La más común hasta hace algún tiempo era utilizando el SQL Link que viene con la BDE en las versiones Professional y Enterprise de Delphi. La otra es utilizando los componentes IBX que vienen con las versiones de Delphi 5 Prof. y Enterprise. Dado que los IBX ofrecen un acceso más directo a InterBase, son los que utilizo por razones de velocidad y control sobre las conexiones. Cabe aclarar que los FIB pueden ser utilizados en lugar de los IBX, en las versiones de Delphi que no cuenten con IBX (3 y 4), ya que de alguna manera los FIB son los antecesores de los IBX. Al final de este artículo están las diferencias que hay entre los FIB y los IBX. Pasando de Paradox a InterBase Lo primero que hay que hacer es instalar InterBase. InterBase puede ser instalado en la misma computadora donde desarrollamos, o en alguna otra que esté en la misma red local. Como este artículo es introductorio, utilizará la primera opción. Para obtener más detalles sobre la instalación de InterBase, consulta la sección Instalar InterBase. Una vez instalado InterBase, deberemos primero que nada crear una base de datos. Aquí es donde necesitamos una herramienta de administración de InterBase. InterBase incluye el IBConsole, que es una herramienta de administración, aunque en este artículo utilizaré el WISQL hecho por Jason Wharton, dado que es el que he utilizado desde hace algunos meses, ya que el IBConsole ha tenido algunos problemas de mal funcionamiento que están siendo corregidos poco a poco. El WISQL puede ser descargado desde esta dirección. En un artículo próximo trataré el tema del IBConsole. Si estás utilizando Windows 95/98, entonces te debe de aparecer un icono como este en la parte derecha de la barra de tareas. Si estás utilizando Windows NT, no te saldrá el icono, ya que InterBase correrá como un servicio, así que debes de verificar que el servicio de InterBase esté activo. Esto se hace entrando al panel de control y seleccionando el icono de Services. Ahí deben de aparecer dos servicios: el InterBase Guardian y el InterBase Server. Una vez que estamos seguros de que InterBase está corriendo, entonces podemos crear una base de datos. Abrimos el WISQL y tendremos una ventana como esta: En mi caso, ya tengo varios Layouts creados. Un Layout es una conexión a una base de datos específica. Sirve para no tener que volver a dar la ruta y las propiedades de cada conexión, es decir, son como "memorias". Aquí conviene que se cree un nuevo Layout, oprimiendo el botón Create Layout y dándole un nombre. Yo crearé un Layout llamado Mi_base_IB: A continuación, pasemos a la parte de Connection. La ventana pasa a ser así: Aquí es donde se especifican los datos de la conexión. En primer lugar, hay que decirle cómo se va a llamar el archivo de nuestra base de datos. Esto se hace en el campo de texto rotulado "Database". Ahí escribimos la ruta y el nombre de nuestra base de datos. Como va a ser una base de datos local (en nuestra misma máquina) solamente hay que especificar ruta y nombre. Pondré mi base de datos en: c:\mis documentos\mi_base_ib.gdb A continuación debemos de especificar el nombre y password del administrador de base de datos, por default, tenemos el nombre SYSDBA y el password masterkey. Cabe señalar que el administrador de base de datos se debe de llamar siempre SYSDBA, aunque el password de puede cambiar, y esto se hace a nivel de servidor, no a nivel de archivo. Si queremos que cada vez que seleccionemos este Layout el WISQL nos ponga automáticamente el password, entonces hay que seleccionar la casilla marcada "Remember?". Abajo de la casilla "Remember?" es donde se selecciona el dialecto de SQL que utilizaremos para nuestra base de datos. Los dialectos SQL fueron creados para dar lugar a nuevas características de IB6, sin perder compatibilidad de los clientes con versiones anteriores de InterBase. El dialecto 1 provee compatibilidad con tipos de datos y características de las versiones anteriores a IB6, mientras que el dialecto 3 da pleno acceso a las nuevas características de IB6, aunque para poder tener acceso desde Delphi a las características de IB6 necesitamos utilizar IBX o InterBase Objects, ya que ni la BDE ni los FIB proveen acceso mediante dialecto 3. La tabla siguiente aclara este tema:

Método de accesoDialecto a utilizar
BDESQL Dialect 1
FIBSQL Dialect 1
IBXSQL Dialect 3
Interbase ObjectsSQL Dialect 3
Para mayor información sobre los dialectos, puedes consultar este artículo, que está escrito en inglés: http://www.ibphoenix.com/ibp_60_dialect.html Por el momento, es todo lo que necesitamos hacer para poder crear nuestra base de datos. Para crearla debemos de hacer click sobre el primer botón: Luego, el WISQL nos preguntará si estamos seguros de crear la base de datos y también asegurarnos que no exista una base de datos con el mismo nombre. Una vez confirmados estos puntos, la base de datos será creada.