PDA

Ver la Versión Completa : datamodule, acceso a la bd


anubis
26-05-2012, 22:49:00
Hola de nuevo,

Acabo de hacer un programita simple para ir probando algunas cosas.

en este caso, usando los componentes zeos, si en el form principal le pongo el zconnection, zquery y un datasource y un dbgrid ademas de haberle puesto:

zconnection1.database:='ruta de la base de datos';

me funciona bien.

Si los componentes los meto en un datamodule, la cosa cambia, porque dice que la base de datos esta missing.

Ya lo puse asi tal y como recomendais en otros post:

Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TForm1, Form1);
Application.Run;

en el form primario le pongo tambien esto:

procedure TForm1.FormCreate(Sender: TObject);
begin
datamodule1.zconnection1.Database:=(extractfilepath(application.exename)+'elcheques.ib6');
datamodule1.zconnection1.Connected:=true;
datamodule1.zquery1.Active:=true;
end;

pero no me reconoce la ruta.

Si lo hago todo en el mismo form, estupendo, pero queria ver las posibilidades del datasource, como decis, sirve sobretodo para tenerlo ordenado.

saludos y gracias

Casimiro Notevi
27-05-2012, 00:40:07
Lo normal es poner los controles en el datamodule, salvo el datasource, que lo dejas en el formulario.
Debes incluir en el uses del formulario al datamodule
uses blablabla, blebleble, dmDatos, etc.
Evidentemente, desde el formulario debe hacer mención al datamodule:
dmDatos.Query.Close;
dmDatos.Query.SelectSql.Text := 'select * from tbpruebas';
dmDatos.Query.Open;
Por lo demás, no hay diferencia alguna en el funcionamiento de los componentes, estén en el formulario o en el datamodule.

anubis
27-05-2012, 02:12:46
Si, asi lo tengo colocado, el problema es con dm.zconnection.database:='ruta'; que dice no existe la basededatos, si la coloco en el mismo form si funciona todo pero colocandola en el datamodule y llamandola desde la unit principal no hay forma.

mightydragonlor
27-05-2012, 03:16:54
Si me permites, creo que el método que estas usando no es el adecuado, por que? por que si tratas de acceder a un archivo físico vas a tener vario problemas con windows 7 dependiendo del nivel de permisos que tenga tu usuario y demás.
Lo que yo hago es lo siguiente:
En el archivo C:\Program Files\Firebird\Firebird_2_5\aliases.config ingreso la ruta del archivo de base de datos, algo así

#
# List of known database aliases
# ------------------------------
#
# Examples:
#
# dummy = c:\data\dummy.fdb
#
employee = C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB

en la propiedad Database colo escribo employee; no te imagina los dolores de cabeza que me he ahorrado de esta forma, especialmente por que los clientes que se conecten a esa base de datos no necesitan saber en que ruta física está el alchivo de la base de datos, espero te sirva de algo.

Saludos.

anubis
27-05-2012, 03:21:10
Gracias por las aportaciones.

Estoy usando sqlite, pero lo que no entiendo por que con el datamodule sigo sin poder conectar y en el propio form si, si ya creo el datamodule antes que el form para qu eno haya problemas.

Puedo usar la solucion facil y ponerlo todo en el form principal, pero me gustaria aprender el por que de las cosas, si se puede claro ;).

Gracias de nuevo

mightydragonlor
27-05-2012, 03:27:57
La verdad no se me courre nada, yo trabajo con Zeos7 y Lazarus 9.31 y me funciona bien, siento no poder ayudarte.

anubis
27-05-2012, 03:33:44
gracias, no te preocupes, a ver si doy con algo.

saludos

santi33a
28-05-2012, 14:56:50
Fijate que el zcconnection en modo diseño y la query no esten activos, pues como el datamodule lo creas primero y solo le das los datos en el form1 que se crea después, puede que la cosa venga por ahí. :rolleyes:

rretamar
28-05-2012, 20:52:01
Sobre la posibilidad de que accidentamente la propiedad Connected de TZConnection quede en TRUE, existe una propiedad llamada DesignConnection que previene esto: si se la coloca en TRUE, en el momento inmediato antes de la orden de compilar, la propiedad Connected del componente se cambia automáticamente a FALSE.

santi33a
30-05-2012, 16:37:08
Vaya esa si que no la sabía, existe alguna documentación de las propiedades y eventos de los componentes Zeos?, pues todo lo que se de ellos lo he sabido a palo, e imaginándome para que es, claro por la experiencia también, pues antes siempre usaba los componentes ADO
Gracias, todo los días se aprende algo.