Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Zeos y MySQL (https://www.clubdelphi.com/foros/showthread.php?t=77473)

armadillo 30-01-2012 19:22:49

Zeos y MySQL
 
Hola compañer@s!!!

Despues de un tiempo bastante pero bastante largo sin aparecer aqui vuelvo y esta vez con lazarus.
Debo de hacer una consulta.
Uso lazarus 0.9.30, zeos 6.6.6 y fedora 16

Solo 1 formulario y un datamodule
en el formulario un DataGrid, un ZQuery y un DataSource, en el DataModule solo un ZConnection
Los 4 componentes perfectamente bien configurados para funcionar, ya que en modo diseño me muestra la informacion en el datagrid perfectamente sin ningun tipo de error. El problema viene cuando ejecuto. En modo runtime me tira el siguiente error:

"Database connection component is not assigned."

Lo "extraño" es que si pongo en el ZConnection en el form con el resto de los componentes todo va a la perfeccion!!!

LLevo una semana dando vuelta con esto y no encuentro nada por ahi... solo he visto este tread en ingles pero no me aclaro
Alguien puede darme una mano o alguna idea?

Desde ya muchas gracias

Caral 30-01-2012 19:30:06

Hola
Me parece que el programa arranca desde el form 1 y el datamodule posteriormente, cuando deberia de ser al reves.
Por eso en diseño funciona pero no en ejecucion.
Cambia el orden de inicio del programa y veras la diferencia.

PD: En la unit del project veras algo asi:

Código Delphi [-]
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1); //primero
  Application.CreateForm(TDataModule1, DataModule1); // segundo
  Application.Run;
end.

Cambia el orden asi:

Código Delphi [-]
begin
  Application.Initialize;
  Application.CreateForm(TDataModule1, DataModule1); //primero
  Application.CreateForm(TForm1, Form1); // segundo
  Application.Run;
end.

Saludos

armadillo 30-01-2012 20:57:09

Zeos y MySQL
 
Gracias Caral por tu pronta respuesta.

Pues si efectivamente eso que acabas de decir tambien lo he probado y ahora mismo carga primero el DataModule. Pero produce exactamente el mismo error.
Otra prueba que he hecho y si funciona perfectamente es poner el ZQuery en el DataModule junto con el Zconnection y solo dejar el DataSouece en el form, y como he dicho si funciona, pero no se...:rolleyes: no me parece que fuera lo mas practico tener todos los ZTable y los ZQuery juntos, de una Gran Aplicacion con una base de datos llena de Store Procedures y vistas y tablas, prefiero poner cada ZQuery o ZTable en el form que se use.... Pero en fin esto seria tema de otra discusion.
La incognita o el problema ahora es el porque no puedo poner el ZConnection el DataModule y el resto de los componentes en el Form :(

Caral 30-01-2012 21:04:11

Hola
El zquery colocalo en el evento OnShow del form, no en el oncreate y pruebalo.
Saludos

armadillo 30-01-2012 21:11:25

Hola Caral,
Perdona mi ignorancia :eek:, pero como pongo un componente en un evento, en este caso en el OnShow?, Tengo claro que por defecto todos los componentes que "tiramos" en un form se crean en el OnCreate del form, pero...., como hago para que se cree en el onshow?

Nuevamente muchas gracias por la respuesta!!!

Caral 30-01-2012 21:19:17

Hola
Te posicionas en el form, ahi veras los procedimientos y los eventos de ese form (a la izquierda, abajo).
En los eventos busca el evento onshow, ahi colocaras el procedimiento que habre el query, osea:
Código Delphi [-]
Query1.open;
En el query ponle active: false;
saludos

armadillo 30-01-2012 21:27:06

Si, perdona no te habia entendido, hablamos de abrir el Query.
Si correcto lo pruebo y digo algo

armadillo 30-01-2012 21:37:39

Hola nuevamente

Sin novedad :(

He hecho esto:

Código Delphi [-]
procedure TformCli.FormShow(Sender: TObject);
begin
  zquery1.Connection:=DataModule1.ZConnection1;
  zquery1.Open;
end;

y nada sigo exactamente igual, la verdad es que no tengo ni idea :mad:

Caral 30-01-2012 22:03:14

Hola
Bien, podria ser un problema del zconnection, cuando lo abres?.
Saludos

armadillo 30-01-2012 22:24:53

Arreglado :D

Despues de tanto probary mediante tus pistas lo he logrado.
Situacion:

zconnection en datamodule
zquery y datasource en form

El zconnection activado en diseño, asi que ya arranca el programa con el zconnection activado

lo unico que tenia que hacer con el zquery o ztable es:

Código Delphi [-]
procedure TformCli.FormShow(Sender: TObject);
begin
  ZQuery1.Active:=True;
  ZTable1.Active:=True;
end;

Activarlo en el evento onshow del form

Gracias Caral por tus consejos y guia:rolleyes:

Casimiro Notevi 30-01-2012 22:28:23

Cita:

Empezado por armadillo (Mensaje 423936)
Otra prueba que he hecho y si funciona perfectamente es poner el ZQuery en el DataModule junto con el Zconnection y solo dejar el DataSouece en el form, y como he dicho si funciona, pero no se...:rolleyes: no me parece que fuera lo mas practico tener todos los ZTable y los ZQuery juntos, de una Gran Aplicacion con una base de datos llena de Store Procedures y vistas y tablas, prefiero poner cada ZQuery o ZTable en el form que se use.... Pero en fin esto seria tema de otra discusion.

Pue sí, es tema de otra discusión, que ya hemos tenido en algunas ocasiones, y realmente es lo correcto, los componentes de acceso a datos en los datamodule y dejar solo el datasource en el form. Puedes tener distintos datamodules, uno para ventas, otro para compras, otro para... lo que haga falta :)

rretamar 31-01-2012 15:30:04

Hola.
Mis dos centavos: si usas ZeosLib fijate en la propiedad DesignConnection que tiene el componente ZConnection. Evita que al compilar quede activada la propiedad "Connected" (que el desarrollador puede haber activado en tiempo de diseño) y pueda traer problemas a la hora de ejecutar el software fuera del equipo donde está Lazarus (ya que normalmente las aperturas de conexiones SQL, consultas y/o tablas se realizan por código).

armadillo 31-01-2012 19:05:50

Gracias por vuestros consejos

Cita:

Empezado por rretamar (Mensaje 423994)
Hola.
Mis dos centavos: si usas ZeosLib fijate en la propiedad DesignConnection que tiene el componente ZConnection. Evita que al compilar quede activada la propiedad "Connected" (que el desarrollador puede haber activado en tiempo de diseño) y pueda traer problemas a la hora de ejecutar el software fuera del equipo donde está Lazarus (ya que normalmente las aperturas de conexiones SQL, consultas y/o tablas se realizan por código).

Si hubiera sabido esto... con respecto a los zeoslib... no bubiera iniciado este hilo jejeje maldita ignorancia ... por suerte y por eso existen estos foros :rolleyes:

Casimiro Notevi 31-01-2012 19:18:16

Cita:

Empezado por armadillo (Mensaje 424006)
Si hubiera sabido esto... con respecto a los zeoslib...

No es con zeoslib, sino con todos. Me parece recordar que sólo fibplus tiene una opción para desconectar automáticamente.


La franja horaria es GMT +2. Ahora son las 04:31:27.

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