Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Sobre los componentes Zeos (https://www.clubdelphi.com/foros/showthread.php?t=61867)

chalao 25-11-2008 10:06:11

Sobre los componentes Zeos
 
Saludos foreros.

Iniciandome con los componentes Zeos como posible elección para controlar una base de datos desde Delphi2007 tengo varias dudas, como es normal ya que nunca manejé SQL.

Alguien sabe algún enlace donde pudiera encontrar una ayuda de Zeos similar a la que se incluye en la ayuda de Delphi2007 al instalar por ejemplo los componentes Indy ??? Me ayudaría bastante y ahorraría preguntas tontas en el foro ;)

Mi problema concreto ahora mismo intuyo que es bastante sencillo pero aún no he conseguido encontrar ninguna referencia que me ayude.
Para probar los componentes lo único que me propuse hacer es moostrar los datos de una de mis tablas en un DBGrid. Mediante uno de los dos métodos siguientes:

ZConnection --> ZQuery --> DataSource --> DBGrid
ZConnection --> ZTable --> DataSource --> DBGrid

Tras configurar las propiedades y solucinar algún que otro erro fácil, lo más lejos que llego con cualquiera de los dos caminos es al error: RANGE CHECK ERROR.
Y aún no sé a que se debe.

Agradecería vuestra ayuda.;)

duilioisola 25-11-2008 12:39:42

- Muestranos el código que utilizas, para que podamos ver cómo lo haces (y si es correcto)
- Supongo que la base de datos que quieres utilizar es MySQL (por el grupo en el que está este post). De no ser así debes indicarnoslo.
- También ayudaría que nos comentaras en qué punto da el error
* Puede ser cuando abres la conexión
* Puede ser cuando abres el ZQuery o ZTable
* Puede ser que al mostrar el grid, haya un problema de rangos (algo muy grande que no cabe donde le decimos que lo muestr)
- También deberías mostrarnos la sentencia SQL que utilizas en el ZQuery o ZTable

chalao 01-12-2008 17:59:55

Cita:

Empezado por duilioisola (Mensaje 327832)
- Muestranos el código que utilizas, para que podamos ver cómo lo haces (y si es correcto)
- Supongo que la base de datos que quieres utilizar es MySQL (por el grupo en el que está este post). De no ser así debes indicarnoslo.
- También ayudaría que nos comentaras en qué punto da el error
* Puede ser cuando abres la conexión
* Puede ser cuando abres el ZQuery o ZTable
* Puede ser que al mostrar el grid, haya un problema de rangos (algo muy grande que no cabe donde le decimos que lo muestr)
- También deberías mostrarnos la sentencia SQL que utilizas en el ZQuery o ZTable

La base de datos es MySQL, sí.
Intento hacer el ejemplo más simple posible, sólo establecer los vínculos, conectar y sacar algún dato para ver que funciona bien pero ni eso me funciona.
Con el ZQuery tengo dos tipos de errores:
"Range checking error", que supongo que será pq la DBGrid no tiene las dimensiones correctas, con la sentencia sql (SELECT * FROM eventos;) que selecciona un rango de datos
"Unknown MySQL data type" con la sentencia (SELECT idusuario FROM eventos WHERE idevento=3;) que generaría un sólo dato.
El error me lo da cuando intento poner a True la propiedad Miscellaneous -> Active -> True en el Object inspertor de ZQuery.

La conexión la hace bien. O al menos no arroja error, con el ZConnection.

Muchas gracias a todos

duilioisola 01-12-2008 21:07:57

Trata de ir por partes, para ver el error.
Haz un form que solo contenga el ZConnection y un botón que lo abra.
Ejecuta esto y fíjate si funciona correctamente.

Luego Agrega un ZQuery y otro botón que lo abra.
Ejecuta, presiona el primer botón y luege este último y verifica que no da ningun error.

Agrega un DataSource y un grid y únelos al ZQuery.
Ejecuta el programa, presiona el primer botón para conectar, luego el segundo para abrir el ZQuery y fíjate si da error.

Postea tu código y dinos en qué línea da el error. Con lo que escribes no saco nada en claro.

chalao 02-12-2008 12:07:59

Cita:

Empezado por duilioisola (Mensaje 328985)
Trata de ir por partes, para ver el error.
Haz un form que solo contenga el ZConnection y un botón que lo abra.
Ejecuta esto y fíjate si funciona correctamente.

Luego Agrega un ZQuery y otro botón que lo abra.
Ejecuta, presiona el primer botón y luege este último y verifica que no da ningun error.

Agrega un DataSource y un grid y únelos al ZQuery.
Ejecuta el programa, presiona el primer botón para conectar, luego el segundo para abrir el ZQuery y fíjate si da error.

Postea tu código y dinos en qué línea da el error. Con lo que escribes no saco nada en claro.

OK, Gracias por tu ayuda.

Así lo he repetido, más paso a paso no lo puedo hacer:

Incluyo un ZConnection en un Form. Conectó y compruebo la propiedad connected. Ok
Compruebo varias propiedades más que me deja consultar y mostrarlas por ejemplo en un showmessage. Las únicas que no me deja consultar son ServerVersionStr y ClientVersionStr que arrojan el error de lectura de memoria: "Lectura de 0000000".

Incluyo un ZQuery y lo activo. En las sentencias SQL del ZQuery incluyo algunas como:
Código SQL [-]
INSERT INTO eventos (idevento,idusuario) VALUES (10,5);
SELECT * FROM eventos;
SELECT idusuario FROM eventos;

Y aparecen errores varios:
Con INSERT --> "Can not open a result set", supongo que será porque no lo muestro. Inserta los valores correctamente en la tabla. Lo miro usando SQLyog.
Con SELECT --> "Range check error"

Otro error aparece cuando intento poner más de una línea en las sentencias SQL de ZQuery, "Syntax error"

Prácticamente no hay código, pero por si acaso:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ZAbstractRODataset, ZAbstractDataset,
  ZAbstractTable, ZDataset, ZConnection, StdCtrls, Mask, DBCtrls, zdbcmysqlutils;

type
  TForm1 = class(TForm)
    ZConnection1: TZConnection;
    ZConnection: TButton;
    ZQuery1: TZQuery;
    ZQuery: TButton;
    procedure ZConnectionClick(Sender: TObject);
    procedure ZQueryClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ZConnectionClick(Sender: TObject);
begin
  zconnection1.Connect;
  if zconnection1.Connected then showmessage('Conectado a la base de datos ' + zconnection1.Database);
end;

procedure TForm1.ZQueryClick(Sender: TObject);
begin
  ZQuery1.Active := true;
end;

end.

De nuevo gracias por la ayuda

santiago14 02-12-2008 14:44:38

Cita:

Empezado por chalao (Mensaje 329055)

Así lo he repetido, más paso a paso no lo puedo hacer:

Incluyo un ZConnection en un Form. Conectó y compruebo la propiedad connected. Ok
Compruebo varias propiedades más que me deja consultar y mostrarlas por ejemplo en un showmessage. Las únicas que no me deja consultar son ServerVersionStr y ClientVersionStr que arrojan el error de lectura de memoria: "Lectura de 0000000".

Incluyo un ZQuery y lo activo. En las sentencias SQL del ZQuery incluyo algunas como:
Código SQL [-]
INSERT INTO eventos (idevento,idusuario) VALUES (10,5);
SELECT * FROM eventos;
SELECT idusuario FROM eventos;

Y aparecen errores varios:
Con INSERT --> "Can not open a result set", supongo que será porque no lo muestro. Inserta los valores correctamente en la tabla. Lo miro usando SQLyog.
Con SELECT --> "Range check error"

De nuevo gracias por la ayuda

Bueno, al parecer hay un error en la nueva versión de ZEOS. Yo descargué la versión 6.6.4 stable y al intentar "select * from tabla" me sale "Range check error"
Tengo MySQL 5.0.27 y delphi 7; tuve innumerables inconvenientes con el ZEOS nuevo y opté por lo sano, me instalé una versión mas vieja: ZEOS 6.1.5 y se acabó el "range check error", eso si, tuve que hacer que MYSql trabaje con la encriptación vieja de la siguiente manera:

Código SQL [-]
GRANT ALL PRIVILEGES ON *.* TO root@'hostname' IDENTIFIED BY 'root-password'

SET PASSWORD FOR 'root'@'hostname' = OLD_PASSWORD('contraseña')

Si quieres el ZEOS viejo avisame que lo subo al hilo.

Saludos.

Santiago

chalao 02-12-2008 17:16:55

:eek: me acabo de quedar loco, no me digas que es porque los Zeos están mal? Es seguro eso? a alguien más le pasó? Quisiera estar seguro antes de quitar y poner componentes...

luisgutierrezb 02-12-2008 18:25:26

Algo lei de que utiliza nuevas dll's para el mysql, y hay que quitar las viejitas pero no recuerdo ni donde lo lei, a lo mejor es por eso

santiago14 03-12-2008 00:47:23

zeos
 
Bueno, tal vez estemos exagerando un poco, no sabemos si en realidad funcionan tan mal. Lo que si sabemos es que por alguna razón no podemos hacer que funcionen bien.
La última versión que hay no trae las dll's necesarias y lo aclara en su reporte de instalación, eso dificulta la cosa pues no estamos seguros de que librerías son las correctas.

Para ir redondeando, estuve tres días intentando hacer andar el ZEOS nuevo y nada, corregía un error y me salía otro. Lo estaba probando con una aplicación que había desarrollado hace unos años y en ese entonces todo iba de maravillas. Claro era MySQL 4, ahora tengo el 5.

Yo creo que hay que investigar un poco mas, hasta que le encontremos la vuelta al nuevo es mejor usar una versión mas viejita así no retrasamos nuestros proyectos y darnos un tiempito para analizar la versión nueva.

Bueno, saludos para todos.

Santiago.

chalao 03-12-2008 09:36:53

Visto lo visto cambiaré a una versión más antigua de Zeos de momento. El problema ahora es que tengo Delphi2007 y MySQL 5, los Zeos 6.1.5 funcionarían? Creo que no tiran con MySQL 5 no? Ni con D2007
Cual sería la combinación de versiones idónea para que todo vaya perfecto? No me importaría cambiar de MySQL pero me quedo con Delphi2007

Saludos y gracias

chalao 03-12-2008 11:00:04

Yo mismo.

En mi enésimo repaso a todas las cuestiones sobre Zeos que trata el foro, en el post http://www.clubdelphi.com/foros/show...161#post329161
, tocomi propone descargar la versión 6.6.0 y utilizar los dlls de ésta para la versión 6.6.3. Y voilà! todo funciona correcto a la primera.
PD. Seguiré entonces con D2007, MySQL5 y Zeos663

Saludos

santiago14 03-12-2008 20:33:28

Zeos
 
Interesante teoría:
ZEOS 663 con librerías de la 6.6.0, D2007 ó D7 en mi caso, MySQL 5. Y todo de maravillas.

Probaré....

Saludos.

Santiago.


La franja horaria es GMT +2. Ahora son las 01:51:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi