Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2004
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 15-10-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
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.
__________________
El hombre que no lee no tiene ninguna ventaja sobre el que no sabe leer.

Para hacer una buena exposición hay que escribir más de lo que se va a decir, y luego decir más de lo que se escribió.
Responder Con Cita
  #3  
Antiguo 15-10-2004
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
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.

Última edición por Phacko fecha: 15-10-2004 a las 19:40:18. Razón: hilo incompleto
Responder Con Cita
  #4  
Antiguo 16-10-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
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.

Última edición por Tino fecha: 16-10-2004 a las 16:53:13.
Responder Con Cita
  #5  
Antiguo 18-10-2004
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:24:00.


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
Copyright 1996-2007 Club Delphi