Los componentes Zeos permiten el acceso a diferentes bases de datos en los compiladores de Delphi, C++ Builder y Lazarus. Estos componentes no visuales facilitan todas las operaciones relacionadas con bases de datos de diversos tipos como Oracle, Postgres, Mysql, FireBird, SQLite, etc. casi que de igual manera. De hecho es posible migrar toda una aplicación de una base de datos a otra con solo unos cuantos cambios en las propiedades de los componentes.
Esta página NO pretende brindar una explicación exhaustiva sobre toda la funcionalidad de Zeos, el objetivo de este tutorial es que el usuario pueda rápidamente tener conexión y ejecutar operaciones de INSERT, DELETE y UPDATE. Posteriormente el programador podrá explorar mas opciones de dichos componentes.
La página oficial de los componentes: http://zeos.firmos.at/portal.php
La página de descarga: http://sourceforge.net/projects/zeoslib/
Instalación en Lazarus.
Construyendo una aplicación básica.
A continuación le pondremos de nombre al formulario el nombre "PruebaZeos", para esto usamos la propiedad "Name" del formulario.
Una vez hecho esto, agregamos los siguientes componentes y le cambiamos el nombre por el texto que aparezca dentro del paréntesis:
Pestaña "Zeos Access "
Pestaña "Data Access"
Pestaña "Data Controls"
Acto seguido debemos modificar las opciones de los componentes, para que estos se "entiendan" entre si, para ello cambie las propiedades de acuerdo a las siguientes líneas:
Conexion.Protocol=SQLite3
Conexion.Database=C:\\prueba.sqlite
Query.Connection=Conexion
Tabla.Connection=Conexion
Datos.Dataset=Tabla
Navegador.DataSource=Datos
Grid.DataSource=Datos
Tabla.Tablename=personas
Con lo anterior, ya la aplicación está en capacidad de cargar la base de datos "prueba" y mostrarla en el DBGrid, se preguntarán ¿Como va a cargar una BD que no existe?, pues bien con SQLite la BD es creada si es que no existe.
Vamos a usar el potencial de estos componentes para cargar la BD en tiempo de diseño, para esto vamos al componente "Conexion" y cambiamos la propiedad "Connected" a TRUE.
Tranquilos, todo está en orden. Lo que sucede es que SQLite es una base de datos que trabaja con una dll que se llama "sqlite3.dll" y si no encuentra dicha dll genera el mensaje de error. Para solucionar esto descargamos la dll de este enlace: http://www.4shared.com/file/N_5uBn3r/sqlite3.html aunque también la puede conseguir en la pagina oficial de SQLITE: http://www.sqlite.org/index.html y agregamos la dll a la carpeta del ejecutable y también la copiamos a la carpeta "C:\\Windows\System32"
Hecho lo anterior intentamos conectarnos nuevamente, si hicimos todo correctamente ya no aparecerá la ventana de error, pero tampoco sucede nada en el formulario. Pues bien aun no se han creado tablas, ni registros ni nada, por eso aun no vemos cambios, sin embargo si vamos a nuestro disco duro "C" veremos que el archivo "C:\\prueba.sqlite" ya ha sido creado!
Vamos por buen camino... ya tenemos conectividad con la base de datos, ahora vamos a agregar algo de código en el evento "OnCreate" del formulario:
procedure TForm1.FormCreate(Sender: TObject);
var Cadena_SQL:string; //Cadena del comando SQL a ejecutar
begin
Conexion.Connect; //me conecto a la BD
Cadena_SQL:='CREATE TABLE IF NOT EXISTS "main"."personas" ("nombre" VARCHAR(30), "edad" INTEGER)';
Query.SQL.Clear; //se limpia la cadena SQL existente
Query.SQL.Text:=Cadena_SQL; //cargo el comando SQL a ejecutar
Query.ExecSQL; //Ejecuto el comando
//En este punto la tabla ya esta creada por lo tanto ya se puede abrir
Al control "TlabeledEdit1" le modificamos las siguientes propiedades:
Al control "TlabeledEdit2" le modificamos las siguientes propiedades:
Muy bien, ahora vamos a la parte de la edición, esto va a funcionar de la siguiente manera: Se selecciona un registro a editar haciendo clic directamente sobre el "Grid", posteriormente ingresamos los nuevos datos en los controles de "Nombre" y "Edad" y en ese momento si presionamos el botón de "edición" cuyo código es el siguiente:
procedure TPruebaZeos.BotonEditarClick(Sender: TObject);
begin
Tabla.Edit; //Se pone la tabla en modo de edicion
Tabla.FieldByName('nombre').Text:=TextoNombre.Text; //se carga el valor del nombre
Tabla.FieldByName('edad').Value:=StrToInt(TextoEdad.Text); //se carga el valor de la edad
Tabla.Post; //se ejecuta la edición
end;
Notese que la única diferencia con respecto al código del boton de "agregar" es que la tabla se ponde en modo de edición en vez de insercción.
Para eliminar un registro, primero lo seleccionamos en el "Grid" y luego damos clic en el botón "Eliminar". A continuación tenemos el código de dicho botón:
procedure TPruebaZeos.BotonEliminarClick(Sender: TObject);
begin
Tabla.Delete; //Se borra el registro actualmente seleccionado en el grid
end;
Esta página NO pretende brindar una explicación exhaustiva sobre toda la funcionalidad de Zeos, el objetivo de este tutorial es que el usuario pueda rápidamente tener conexión y ejecutar operaciones de INSERT, DELETE y UPDATE. Posteriormente el programador podrá explorar mas opciones de dichos componentes.
La página oficial de los componentes: http://zeos.firmos.at/portal.php
La página de descarga: http://sourceforge.net/projects/zeoslib/
Instalación en Lazarus.
- Descargue y descomprima el archivo de los componentes Zeos.
- Desde Lazarus vaya a la sección "Paquete" y de clic en "Abrir archivo de paquete (*.lpk)".
- Abra el archivo "Componentes.lpk" que está ubicado en la ruta "\ZEOSDBO-x.x.x-stable\packages\lazarus".
- Clic en "Instalar".
- Cuando se le pregunte si desea recompilar Lazarus, haga clic en "si".
- Al volver a abrir Lazarus encontrará una nueva pestaña con los componenentes Zeos, como se aprecia en la figura:
Pestaña de componentes Zeos, después de la instalación |
Construyendo una aplicación básica.
- Motor de la BD: SQLite
- La base de datos tendrá una sola tabla que se llamará "personas".
- Los datos a ingresar son: Nombre (VarChar[30]) y Edad (Integer).
Nota: Si no conoce SQLite le recomiendo leer primero el post de SQLite.
Primero vamos a comenzar un nuevo proyecto con lazarus: Archivo>>Nuevo>>Aplicación
A continuación le pondremos de nombre al formulario el nombre "PruebaZeos", para esto usamos la propiedad "Name" del formulario.
Posteriormente guardamos el proyecto en alguna ubicación de nuestro PC, Archivo>>Guardar Todo
Una vez hecho esto, agregamos los siguientes componentes y le cambiamos el nombre por el texto que aparezca dentro del paréntesis:
Pestaña "Zeos Access "
- TZconnection (Conexion)
- TZquery (Query)
- Ztable (Tabla)
Pestaña "Data Access"
- Datasource (Datos)
Pestaña "Data Controls"
- TDBGrid (Grid)
- TDBNavigator (Navegador)
En este momento debes tener un formulario similar al de la figura:
Acto seguido debemos modificar las opciones de los componentes, para que estos se "entiendan" entre si, para ello cambie las propiedades de acuerdo a las siguientes líneas:
Conexion.Protocol=SQLite3
Conexion.Database=C:\\prueba.sqlite
Query.Connection=Conexion
Tabla.Connection=Conexion
Datos.Dataset=Tabla
Navegador.DataSource=Datos
Grid.DataSource=Datos
Tabla.Tablename=personas
Con lo anterior, ya la aplicación está en capacidad de cargar la base de datos "prueba" y mostrarla en el DBGrid, se preguntarán ¿Como va a cargar una BD que no existe?, pues bien con SQLite la BD es creada si es que no existe.
Vamos a usar el potencial de estos componentes para cargar la BD en tiempo de diseño, para esto vamos al componente "Conexion" y cambiamos la propiedad "Connected" a TRUE.
¿QUE PASÓ? .... Obtuvimos el siguiente mensaje.......
Tranquilos, todo está en orden. Lo que sucede es que SQLite es una base de datos que trabaja con una dll que se llama "sqlite3.dll" y si no encuentra dicha dll genera el mensaje de error. Para solucionar esto descargamos la dll de este enlace: http://www.4shared.com/file/N_5uBn3r/sqlite3.html aunque también la puede conseguir en la pagina oficial de SQLITE: http://www.sqlite.org/index.html y agregamos la dll a la carpeta del ejecutable y también la copiamos a la carpeta "C:\\Windows\System32"
Hecho lo anterior intentamos conectarnos nuevamente, si hicimos todo correctamente ya no aparecerá la ventana de error, pero tampoco sucede nada en el formulario. Pues bien aun no se han creado tablas, ni registros ni nada, por eso aun no vemos cambios, sin embargo si vamos a nuestro disco duro "C" veremos que el archivo "C:\\prueba.sqlite" ya ha sido creado!
Vamos por buen camino... ya tenemos conectividad con la base de datos, ahora vamos a agregar algo de código en el evento "OnCreate" del formulario:
procedure TForm1.FormCreate(Sender: TObject);
var Cadena_SQL:string; //Cadena del comando SQL a ejecutar
begin
Conexion.Connect; //me conecto a la BD
Cadena_SQL:='CREATE TABLE IF NOT EXISTS "main"."personas" ("nombre" VARCHAR(30), "edad" INTEGER)';
Query.SQL.Clear; //se limpia la cadena SQL existente
Query.SQL.Text:=Cadena_SQL; //cargo el comando SQL a ejecutar
Query.ExecSQL; //Ejecuto el comando
//En este punto la tabla ya esta creada por lo tanto ya se puede abrir
//el componente de TABLA
Tabla.Open;
//Ajustamos el ancho de las columnas para que se vean mejor
Grid.Columns[0].Width:=80;
Grid.Columns[1].Width:=80;
end; En seguida ejecutamos el programa, y si todo los hemos hecho correctamente podremos hacer lo que el siguiente video nos muestra:
Nuestra aplicación ya está conectada a la BD y funcionando!
Ahora le recomiendo que use el "DBNavigator" (La barrita con botones que está debajo del grid) para agregar, editar y eliminar registros y de esta forma examine las posibilidades de manejar de esta forma una BD sencilla.
Ahora vamos a hacer algo un poco mas complejo, vamos a usar nuestros propios controles para la manipulación de la BD. Para esto volvemos a Lazarus y de la pestaña "Adittional" arrastramos 2 controles "TlabeledEdit". Nuestro formulario debe quedar así:
Formulario con 2 controles "Tlabelededit" añadidos |
Al control "TlabeledEdit1" le modificamos las siguientes propiedades:
"Name"=TextoNombre
"EditLabel.Caption"=Nombre
"EditLabel.Caption"=Nombre
Al control "TlabeledEdit2" le modificamos las siguientes propiedades:
"Name"=TextoEdad
"EditLabel.Caption"=Edad
"EditLabel.Caption"=Edad
Ahora vamos a la pestaña "Standard" y agregamos 3 componentes "Tbutton"
Al control "Tbutton1" le modificamos las siguientes propiedades:
"Name"=BotonAgregar
"Caption"=Agregar
"Caption"=Agregar
Al control "Tbutton2" le modificamos las siguientes propiedades:
"Name"=BotonEditar
"Caption"=Editar
Al control "Tbutton3" le modificamos las siguientes propiedades:
"Name"=BotonEliminar
"Caption"=Eliminar
Con todos estos cambios, nuestro formulario debe quedar así:
Ahora vamos al evento "Onclic" del boton AGREGAR, lo cual se puede hacer haciendo doble clic sobre el boton en tiempo de diseño; y agregamos el código como se muestra a continuación:
procedure TPruebaZeos.BotonAgregarClick(Sender: TObject);
begin
Tabla.Insert; //Se pone la tabla en modo de inserccion
Tabla.FieldByName('nombre').Text:=TextoNombre.Text; //se carga el valor del nombre
Tabla.FieldByName('edad').Value:=StrToInt(TextoEdad.Text); //se carga el valor de la edad
Tabla.Post; //se ejecuta la inserccion
end;
begin
Tabla.Insert; //Se pone la tabla en modo de inserccion
Tabla.FieldByName('nombre').Text:=TextoNombre.Text; //se carga el valor del nombre
Tabla.FieldByName('edad').Value:=StrToInt(TextoEdad.Text); //se carga el valor de la edad
Tabla.Post; //se ejecuta la inserccion
end;
Ejecutamos el programa y probamos la insercción de registros:
Muy bien, ahora vamos a la parte de la edición, esto va a funcionar de la siguiente manera: Se selecciona un registro a editar haciendo clic directamente sobre el "Grid", posteriormente ingresamos los nuevos datos en los controles de "Nombre" y "Edad" y en ese momento si presionamos el botón de "edición" cuyo código es el siguiente:
procedure TPruebaZeos.BotonEditarClick(Sender: TObject);
begin
Tabla.Edit; //Se pone la tabla en modo de edicion
Tabla.FieldByName('nombre').Text:=TextoNombre.Text; //se carga el valor del nombre
Tabla.FieldByName('edad').Value:=StrToInt(TextoEdad.Text); //se carga el valor de la edad
Tabla.Post; //se ejecuta la edición
end;
Notese que la única diferencia con respecto al código del boton de "agregar" es que la tabla se ponde en modo de edición en vez de insercción.
Para eliminar un registro, primero lo seleccionamos en el "Grid" y luego damos clic en el botón "Eliminar". A continuación tenemos el código de dicho botón:
procedure TPruebaZeos.BotonEliminarClick(Sender: TObject);
begin
Tabla.Delete; //Se borra el registro actualmente seleccionado en el grid
end;
Descarga del proyecto: http://www.4shared.com/file/ZmtBTzyw/Ejemplo_Zeos_Lazarus.html
http://hispalazarus.mi-web.es/foro/
http://hispalazarus.mi-web.es/foro/