Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   DataSource que hacen lo mismo (https://www.clubdelphi.com/foros/showthread.php?t=15115)

Phacko 11-10-2004 18:26:22

DataSource que hacen lo mismo
 
Que tal, como los ha tratado la vida?????

Tengo un problemita, estoy trabajando con base de datos local en Paradox con D6, necesito usar 3 DBGrid para mostrar información diferente en cada uno en la misma ventana, es decir, al mismo tiempo, pero esta información la obtengo de una misma tabla, para esto uso 1 DataSource por DBGrid y un procedimiento en SQL para cada uno. Al ejecutar la aplicación obtengo el mismo resultado en los 3 DBgrid, de hecho, en los 3 obtengo lo que entrega el tercer DataSource (la tercer consulta).

De antemano le agradesco mucho su ayuda.

Buen dia, saludos

Tino 15-10-2004 16:44:53

Si los 3 DataSource están conectados al mismo DataSet, es normal que te retorne un único resultado. Si necesitas tres resultados diferentes, necesitas 3 Datasets diferentes (Dataset=Tables/Queries...).

De todos modos, no entiendo esto:

Cita:

Empezado por Phacko
...esta información la obtengo de una misma tabla, para esto uso 1 DataSource por DBGrid y un procedimiento en SQL para cada uno

¿Los procedimientos SQL lo tienes en el DBGrid? ¿en los TDataSource? ¿en el TTable? ¿es acaso un TStoredProcedure?

Saludos.

Phacko 15-10-2004 19:29:30

aclaro un poco mas
 
Que tal, gracias por responder.

Disculpa lo confuso de mi texto.

Tengo 3 DBGrid en un form y 3 DataSource, uno por cada DBGrid, y en un DataModule tengo 3 Query, uno por tabla, a los cuales accedo desde la form mencionada, de la siguiente forma:

dataModule1.QProducto.Close;
DataModule1.QProducto.SQL.Clear;
DataModule1.QProducto.SQL.Add('Select Producto, Existencia From "TProducto.db"');
DataModule1.QProducto.SQL.Add('where Upper(Origen)="RES"');
DataModule1.QProducto.Open;


dataModule1.QProducto.Close;
DataModule1.QProducto.SQL.Clear;
DataModule1.QProducto.SQL.Add('Select Producto, Existencia From "TProducto.db"');
DataModule1.QProducto.SQL.Add('where Upper(Origen)="CERDO"');
DataModule1.QProducto.Open;


dataModule1.QProducto.Close;
DataModule1.QProducto.SQL.Clear;
DataModule1.QProducto.SQL.Add('Select Producto, Existencia From "TProducto.db"');
DataModule1.QProducto.SQL.Add('where Not Upper(Origen)="RES"');
DataModule1.QProducto.SQL.Add('And Not Upper(Origen)="CERDO"');
DataModule1.QProducto.Open;


Repito mucho codigo, porque trate de hacerlo indepenciente para probar si se corregia el error, pero...., todo este codigo se ejecuta al momento de activar el form en tiempo de ejecución.

Estas 3 consultas son a una misma tabla, en la que estan todos los registros del producto. Y enlazo cada DBGrid al mismo Query (QProducto) mediante DataSource diferentes.

Espero sea un poco mas claro. Nuevamente gracias por tu tiempo.

Tino 16-10-2004 15:10:16

Bueno, en los tres bloques de código que muestras, referencias al mismo TQuery "QProducto" (aunque dices que tienes 3 Queries en tu DataModule). Si tienes así el código realmente, el último bloque de código es el que se impone (anulando los otros dos) y por eso los DBGrids te presentan sólo la última Query.

Deberias corregir esto, referenciando a la Query correspondiente en cada bloque de código en vez de a 1 sola. Si quieres una recomendación añadida: no le des valor a la SQL del TQuery en tiempo de ejecución, mejor definelo en diseño. Sobretodo si está enlazado a un DBGrid. Ahora bien, aunque desconozco las razones de hacerlo como describes, solo te aconsejaría ese método (SQL en to. de ejecución) en el caso de que el SQL sea muy dinámico o variable. En todo caso, siempre es conviente usar parámetros SQL siempre que se pueda.

Conclusión: Usa un componente TQuery por cada una de las 3 consultas. Cada una con su TDataSource. El hecho de que las tres consultas se dirijan a la misma tabla no importa.

Saludos.

Phacko 18-10-2004 23:17:50

Te lo agradesco
 
Que tal, antes que nada agradesco enormemente que hayas tomado tiempo para responder, mas aun cuando la duda.... que mas bien es una tonteria no es como para que ocupe espacio menos tiempo de alguien. Sucede que acabo de solucionarlo, tan obvio y básico (la segunda que me pasa y espero la última), veia y veia el datamodule hasta que el "SEÑOR" se apiado de mi y fue cuando escuche una voz que me dijo a que sope estas tienes un solo componente Query dandole batalla y es uno por consulta.....

De cualquier forma muchas gracias, igual me habrias sacado de mi ignorancia.


La franja horaria es GMT +2. Ahora son las 17:25:21.

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