Sign in Join
Wiki copytemporary

Zeos tutorial/es

Deutsch · English · Español · Français · Português · Русский · 中文(中国)

Descripción

Este tutorial trata acerca de como obtener, instalar y utilizar Zeoslib con Lazarus y FPC.\

El equipo de Zeos tiene su propio foro. Es el mejor sitio para obtener más información acerca de ZeosLib y para hacer/responder cuestiones sobre su utilización y reporte de errores. Podéis acceder al mismo a través de foro sobre ZeosLib..

Gracias al equipo de ZeosDBO y colaboradores por hacer posible que este paquete esté disponible también para Lazarus / FPC. Han realizado un magnífico trabajo. Si alguno de ellos quiere contribuir a documentar en más profundidad el uso de este paquete o aportar ejemplos sencillos para su uso con diferentes bases de datos ayudaría a los que estamos empezando.

Adicionalmente existe un interesante tuorial en este sitio, tiene la opción de traducción al idioma del visitante:

http://serge-girard.developpez.com/tutoriels/temp/ZeosDBO/

Obteniendo Zeos

Zeos ha sido portado a Lazarus y se puede descargar desde Sourceforge.netaunque también hay releases que pueden obtenerse fácilmente desde su SVN siguiendo los pasos siguientes:

Windows

Linux/BSD

Instalando los componentes

Esta es una parte complicada por lo que debes tener un poco de paciencia y leer este apartado cuidadosamente.

  1. Pulsar en Paquete/Abrir archivo de paquete (.lpk) desde el menú principal.
  2. Ve a .\ZEOSDBO-7.0.3-stable\packages\lazarus y abre zcomponent.lpk
  3. Presiona [Compilar] solamente si no necesitas instalar los componentes en el IDE.
  4. Presiona [Usar >>] para ver las opciones que ofrece.
  5. Selecciona Agregar al Proyecto si no quieres añadirlo al IDE o bien Instalar para que se añada a la solapa del IDE de Lazarus
  6. Pregunta si necesitas recompilar Lazarus, en concreto con el mensaje emergente '''El paquete "zcomponent 7.0" se marcó para instalar. Actualmente lazarus solo soporta paquetes enlazados estáticamente. La instalación completa necesita reconstruir y reiniciar Lazarus ¿Desea reconstruir ahora Lazarus?

Si se presenta el error "Cannot find unit ZClasses" o algo similar, entonces hay que chequear cuidadósamente como están escritos los nombres de fichero (en cuanto a mayúsculas/minúsculas) en sus ficheros de código fuente.

Si lo anterior falla, tal como se explica en el foro de ZeosLib es conveniente ir compilando cada uno de los paquetes siguiendo el siguiente orden:

  - 1º. zcore.lpk

  - 2º. zparsesql.lpk

  - 3º. zplain.lpk

  - 4º. zdbc.lpk

  - 5º. zcomponent.lpk 

Si el resultado de la compilación individual de todos es correcto, entonces ya estaríamos en condiciones de escoger el paquete Zcomponent y con la opción de Usar >>> y a continuación Instalar tenerlo en nuestro IDE como una solapa más de componentes visuales.

pascal
  
  { Este fichero ha sido generado automáticamente por Lazarus. ¡No se debe editar!
    Esta fuente solo se utiliza para compilar e instalar el paquete.
  }
  unit Zcore; 
  interface
  uses
    Zclasses, Zcollections, Zcompatibility, Zexprparser, Zexprtoken, Zexpression, 
    Zfunctions, Zmatchpattern, Zmessages, Zsysutils, Ztokenizer, Zvariables, 
    Zvariant; 
  implementation
  end.

 rename -v 'y/A-Z/a-z/' *

Descripción de la paleta de componentes ZeosDBO

La descripción detallada de cada uno de los componentes de la paleta es:

Componente TZConnection (ZConnection):

Componente TZConnection (ZConnection) ===>Componente TZConnection (ZConnection):

Nos va a permitir conectar con la base de datos (BBDD). Tiene una serie de propiedades (disponibles también en el inspector de objetos) como son:

:* cCP_UTF16

:* cCP_UTF8

:* cGET_ACP

:*AutoEncodeStrings=ON

:*codepage=Spanish_Spain.1252

:* ASA: ASA12 / ASA7 / ASA8 / ASA9

:* firebird-x.x: firebird-1.0 / firebird-1.5 / firebird-2.0 / firebird-2.1 / firebird-2.5

:* firebirdd-x.x: firebirdd-1.5 / firebirdd-2.0 / firebirdd-2.1 / firebirdd-2.5

:* FreeTDS_MsSQL: FreeTDS_MsSQL<=6.5 / FreeTDS_MsSQL>=2005 / FreeTDS_MsSQL-2000 / FreeTDS_MsSQL-7

:* FreeTDS_Sybase: FreeTDS_Sybase<10 / FreeTDS_Sybase-10+

:* interbase-6

:* MariaDB-5

:* mssql

:* mysql: mysql / mysql-4.1 / mysql-5 / mysqld-4.1 / mysqld-5

:* oracle

:* oracle-9i

:* pooled.*

:* postgresql: postgresql / postgresql-7 / postgresql-8 / postgresql-9

:* sqlite: sqlite / sqlite-3

:* sybase

:* tiNone

:* tiReadCommitted

:* tiReadUnCommitted

:* tiRepeatableRead

:* tiSerializable

Componente TZReadOnlyQuery (ZDataSet)

Componente TZReadOnlyQuery (ZDataSet) ===> Componente TZReadOnlyQuery (ZDataSet)

Nos va a permitir realizar una consulta (query) en modo solo lectura. Tiene una serie de propiedades (disponibles también en el inspector de objetos) como son:

doAlwaysDetailResync: boolean (true/false).

doCalcDefaults: boolean (true/false).

donDontSortOnPost: boolean (true/false).

doOemTraslate: boolean (true/false).

doPreferPrepared: boolean (true/false).

doSmartOpen: boolean (true/false).

doUpdateMasterFirst: boolean (true/false).

stAscending: orden ascendente.

stDescending: orden descendente.

stIgnored: se ignora el orden.

Componente TZQuery (ZDataSet)

Componente TZQuery ===> Componente TZQuery (ZDataSet)

Nos va a permitir realizar una consulta (query) en modo lectura-escritura. Tiene una serie de propiedades (disponibles también en el inspector de objetos) como son:

doAlwaysDetailResync: boolean (true/false).

doCalcDefaults: boolean (true/false).

donDontSortOnPost: boolean (true/false).

doOemTraslate: boolean (true/false).

doPreferPrepared: boolean (true/false).

doSmartOpen: boolean (true/false).

doUpdateMasterFirst: boolean (true/false).

usDeleted: boolean (true/false).

usInserted: boolean (true/false).

usModified: boolean (true/false).

usUnmodified: boolean (true/false).

stAscending: orden ascendente.

stDescending: orden descendente.

stIgnored: se ignora el orden.

umUpdateChanged: modo de actualización únicamente del contenido modificado.

umUpdateAll: modo de actualización de todo el contenido.

wmWhereKeyOnly

wmWhereAll

Componente TZTable (ZDataSEt)

Componente TZTable ===> Componente TZTable (ZDataSEt)

doAlwaysDetailResync: boolean (true/false). Por defecto establecido a false.

doCalcDefaults: boolean (true/false). Por defecto establecido a true.

doDontSortOnPost: boolean (true/false). Por defecto establecido a false.

doOemTranslate: boolean (true/false). Por defecto establecido a false.

doPreferPrepared: boolean (true/false). Por defecto establecido a false.

doSmartOpen: boolean (true/false). Por defecto establecido a false.

doUpdateMasterFirst: boolean (true/false). Por defecto establecido a false.

umUpdateChanged.

umUpdateAll.

wmWhereKeyOnly.

wmWhereAll.

Componente TZUpdateSQL ===> Componente TZUpdateSQL (ZSqlUpdate)

Componente TZConnectionGroup ===> Componente TZConnectionGroup (ZConnectionGroup)

Componente TZGroupedConnection ===> Componente TZGroupedConnection (ZGroupedConnection)

Componente TZStoredProc ===> Componente TZStoredProc (ZStoredProcedure)

Componente TZSQLMetadata ===> Componente TZSQLMetadata (ZSqlMetadata)

Componente TZSQLProcessor ===> Componente TZSQLProcessor (ZSqlProcessor)

Componente TZSQLMonitor ===> Componente TZSQLMonitor (ZSQLMonitor)

Componente TZSecuence ===> Componente TZSecuence (ZSecuence)

Componente TZIBEventAlerter ===> Componente TZIBEventAlerter (ZIBEventAlerter)

Componente TZPgEventAlerter ===> Componente TZPgEventAlerter (ZPgEventAlerter)

Las entradas añadidas aquí sobre componentes de ZeosDBO son para animar a otros a completar la explicación sobre los mismos, no soy un experto y hay componentes de los cuales no tengo conocimiento sobre su uso. Las pruebas que he realizado son utilizando Lazarus 1.4.0 y PostgreSQL 9.2 en local y me ha permitido establecer conexiones con BBDD y sus correspondientes tablas de una manera fluida incluyendo tipos BLOB definidos en la parte de postgres como bytea, sin problemas. Animo a que gente con más conocimiento complete las entradas. Por mi parte en la medida que tenga tiempo y vaya aprendiendo más trataré de plasmarlo aquí.

Comentarios

En el momento actual Zeos CVS para Lazarus tiene paquetes rotos. Algunos comentarios de IgD:

Utilizando una instalación limpia de Lazarus 0.9.12 (última versión estable) fuí capaz de instalar ZeosLib (13 Octubre 2005). Primero corrige los siguientes errores en ZeosLib:

<Item22>
  <Filename Value="../../src/plain/ZPlainPostgreSql81.pas"/>
  <UnitName Value="ZPlainPostgreSql8x"/>
</Item22>\

a. Remove extra "/" from "build/" (remove the one that is inside the quotes)

<SearchPaths>
  <OtherUnitFiles Value="../../src/dbc/"/>
  <UnitOutputDirectory Value="build/"/>
</SearchPaths>\

b. Add missing quote to unitname value

<Item43>
  <Filename Value="../../src/dbc/ZDbcASA.pas"/>
  <UnitName Value="ZDbcASA/>
</Item43>

Ahora, aquí están las instrucciones de instalación:

Antes de la versión 0.9.13 de Lazarus era necesario abrir cada uno de los paquetes de Zeos a través de Paquetes/Abrir Paquete en el siguiente orden:

  1. zcore.lpk
  2. zparsesql.lpk
  3. zplain.lpk
  4. zdbc.lpk

Entonces finalmente abre zcomponent.lpk para compilarlo e instalarlo. En Lazarus 0.9.13 > solamente puede abrir zcomponent.lpk. El IDE abrirá el resto automáticamente.

Nota: los cuatro primeros paquetes solamente necesitan ser compilados y no pueden ser instalados.

--Forest 17:41, 2 Nov 2005 (CET)

Entonces se puede hacer:

Dentro del fichero Zeos.Inc reemplazar, en la sección "// Settings for Debug mode": {$R-} a {$R+}

--Junior 19:48, 15 Apr 2006 (GMT)

Si aún así después de mostrar un error no recuperable que permita arrancar Lazarus, nos queda la alternativa de buscar el fichero ejecutable tal como estaba antes de compilar todo y que figura como lazarus.old.exe

Hacer la primera aplicación Zeos

Las propiedades elementales necesarias para una aplicación simple funcional que se describen aquí se han marcado como referencia en los componentes de arriba como ( * ) para que esté más claro.

Más información sobre como trabajar con Zeos

En los siguientes enlaces se pueden encontrar artículos realmente útiles explicando el uso de Zeos y su uso interno, alguno de los cuales además tratan además sobre materias específicas de Delphi pero que pueden ser utilizadas con Lazarus también.\

Por favor completar esto :)

Posibles fallos e incidencias

-    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; virtual;                                                      
-    function _AddRef: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};                                                                                                                                                 
-    function _Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};                                                                                                                                                
+    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND}; virtual;
+    function _AddRef: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};
+    function _Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};
  public
    constructor Create(const Controller: IInterface);
    property Controller: IInterface read GetController;
@@ -89,7 +93,8 @@
  TContainedObject = class(TAggregatedObject, IInterface)
  protected
-    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; override;
+    function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj): HResult; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND}; override;
  end;
  {$ENDIF}
@@ -221,7 +226,8 @@
  Result := IInterface(FController)._AddRef;
end;
-function TAggregatedObject._Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
+function TAggregatedObject._Release: Integer; {$IF (not defined(WINDOWS)) AND (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};

+  {$DEFINE FPC2_5UP}
+  {$DEFINE FPC2_4UP}
+  {$DEFINE FPC2_3UP}
+  {$DEFINE FPC2_2UP}
+  {$DEFINE FPC2_1UP}
+  {$DEFINE FPC2_UP}
+
   {$IFDEF VER2_5}
     {$DEFINE FPC2_5UP}


From the Free Pascal wiki, page "Zeos tutorial/es", as it stood on 2020-03-03 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.