Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Conexión desde Datamodule (https://www.clubdelphi.com/foros/showthread.php?t=87136)

blaiselaborde 19-11-2014 11:03:57

Conexión desde Datamodule
 
Buenos días;

Si coloco un componente TQuery o TClientDataSet en un DataModule, en algunos casos NO se me conecta con el componente, es decir, No se muestra el resultado en el componente tal como un DBGrid o un DBText; en cambio, si los coloco en el mismo Formulario, SI se me conecta.

Estoy utilizando Delphi XE6 y mis Unidades tienen el DataModule en Uses.

Es muy extraño, porque ésa es la función del Datamodule, además que no me gusta tener componentes de Base de Datos en los Formularios.

Saben ustedes por qué puede pasar ésto?

Gracias.

Neftali [Germán.Estévez] 19-11-2014 12:18:06

Tendrías que dar más detalles que "no conecta".
Sólo con eso es difícil saber dónde puede estar el problema.

blaiselaborde 19-11-2014 12:51:10

Cita:

Empezado por Neftali (Mensaje 485081)
Tendrías que dar más detalles que "no conecta".
Sólo con eso es difícil saber dónde puede estar el problema.

Gracias neftalí por atender mi asunto . . .

Sé que es algo que en teoría no tiene sentido, sencillamente tengo un TDBGrid y un TDBText conectados a una TQuery y a un TClientDataset.

Si coloco las TQuery y el TClientDataset en un DataModule, NO muestra el contenido en el DBGrid ni en el DBText, pero si coloco las TQuery y el TClientDataset en el mismo Formulario del DBGrid y del DBText, sí funciona, es decir, muestra el contenido de las consultas.

Espero haber aclarado un poco el problema . . . Si tienes alguna duda adicional, o alguna idéa de por qué puede suceder, te lo agradezco . . .

Muchas gracias . . .

blaiselaborde 19-11-2014 13:38:06

Solución
 
Pues he encontrado la solución de una manera poco convencional . . .

Sucede que al momento de mostrar el Formulario, la conexión en diseño del TDataSource con la TQuery se pierde, no sé por qué . . .

Pues la solución pasa por asignar en el Código Fuente directamente al DataSource.DataSet la Query:


dsTel.DataSet := DM.qrTel;
dsAppDetails.DataSet := DM.qrAppDetails;

Si alguno sabe por qué sucede ésto, se lo agradecería mucho, pero de momento, he solucionado el tema.

Gracias.

Neftali [Germán.Estévez] 19-11-2014 20:56:13

Se me ocurre que puede ser por el orden de creación de los formularios.
Ayudaría tener un proyecto de ejemplo donde pase.

AgustinOrtu 19-11-2014 22:00:47

A mi no me parece poco convencional, de hecho me parece lo mas logico

Yo siempre los enlaces entre componentes con su fuente de datos lo hago por codigo, si lo haces en tiempo de diseño resulta que mas adelante cambiaste el query y el datasource te queda sin dataset y despues "no ves nada"

Ademas de que me resulta mas ordenado, el tener en el datamodule cientos de query y datasource me molesta visualmente, prefiero crearlos dinamicamente cuando se necesitan y no que esten siempre ahi "ocupando"

En realidad el vicio comenzo cuando empece a hacer metodos que retornen TDataSet en plan arquitectura MVC y no habia otra que enlazar por codigo

blaiselaborde 20-11-2014 10:49:57

Cita:

Empezado por AgustinOrtu (Mensaje 485121)
A mi no me parece poco convencional, de hecho me parece lo mas logico

Yo siempre los enlaces entre componentes con su fuente de datos lo hago por codigo, si lo haces en tiempo de diseño resulta que mas adelante cambiaste el query y el datasource te queda sin dataset y despues "no ves nada"

Ademas de que me resulta mas ordenado, el tener en el datamodule cientos de query y datasource me molesta visualmente, prefiero crearlos dinamicamente cuando se necesitan y no que esten siempre ahi "ocupando"

En realidad el vicio comenzo cuando empece a hacer metodos que retornen TDataSet en plan arquitectura MVC y no habia otra que enlazar por codigo

Gracias Agustín . . . Buen dato!!.


La franja horaria es GMT +2. Ahora son las 08:34:41.

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