PDA

Ver la Versión Completa : DBGrid con varias querys ¿se puede?


Walterdf
15-03-2005, 18:37:38
Buenas
Necesito mostrar en un dbgrid varias columnas pero con datos de dos querys diferentes, por ejemplo: el codigo de una mercaderia esta en una tabla y la descripcion en otra pero en la grilla debe salir el codigo y su descripcion.
Lo que intenté tambien es: en una misma query llamar a las dos tablas que contienen dichos datos pero el problema es que si el codigo no existe en la 2da tabla (y esto es muy probable) la consulta no muestra nada.
Seguramente no estoy acertando el camino, si alguien sabe que se suele hacer en estos casos agradeceré mucho que me oriente.
Un abrazo y gracias de antemano.

Walter
PD: perdón, uso Delphi 4 y tablas Paradox.

marcoszorrilla
15-03-2005, 20:02:45
Tienes que hacer un consulta utilizando un Tquery y allí unes las tablas, con un Inner Join o simplemente por el campo que case:


Select e.Codigo, e.Nombre, n.Sueldo, nDescuentos
from Empleados as E, Nominas as N
Where E.Codigo = N.Codigo


Lo conectas con un TdataSource y este a su vez con una rejilla y ya puedes ver los datos.

Un Saludo.

Walterdf
15-03-2005, 20:24:25
Te cuento que eso fue lo que hice pero el problema es que el campo E.Codigo puede estar vacio y en ese caso no trae nada a la consulta, yo necesito que, por mas que esté vacío, muestre los demás campos.
Muchas gracias de todas maneras

ASAPLTDA
15-03-2005, 22:46:55
hOLA AMIGO DEL FORO, no se si para paradox aplique pero puedes hacerlo asi
select a.codigo,b.codigo from tablaa a left outer join tablab b on a.codigo =b.codigo
Selecciona todos los de la primera tabla sin importar si existe en la segunda

Raptor
16-03-2005, 00:37:40
Holas chicos espero que todos esten como yo. de maravilla.

bueno a lo que vinimos.

Walterdf el codigo que pone marcoszorrilla es excelente pero sino tiene data en una de las tablas entonces no sales nada. debe de hacerlo de esta otra forma. que tambien es un join como plantea marco

Select e.Codigo, e.Nombre, n.Sueldo, nDescuentos
from Empleados as E Left Outer Join Nominas as N
ON (E.Codigo = N.Codigo)
Where E.Codigo = 5

Si no existe en dato en la tabla n entonces te mostrara las demas informacion pero te pone la palabra null en la informacion de la tabla n.

una segunda forma es crear un campo Lookup o no se bien como se escribe con 2 componentes Query. donde el primero debe de contener toda la informacion de la tabla E y el segundo los de la tabla n.

pasos.
1- doble clik sobre tabla E y agrega los campos
2- Selecciona la opcion new field
3- crea tus campos virtuales(lookup)
4- le dice que sera un campo lookup y luego le especifica cual sera el campo para relacionar (e.codigo) y luego especifica el dataset de donde quiere ver el dato (esta debe de ser el segundo query)
5- especifica cuales campos quieres amarar (e.codigo y n.codigo) y al final le dice cual es campo que quiere como resultado. ---> Sueldo y luego ok.

en el dbgrid crea los campos y especifica cada campo y listo.

suerte..

excusame si no fui muy claro.. supongo que la primera opcion era mejor.

suerte... :D

Walterdf
16-03-2005, 12:18:56
Hola gente!
Antes que nada muchas gracias a todos por darme una mano ya que andaba algo complicado y ya solucioné todo.

Raptor: Se entendió muy bien y opté por la primera opción ya que las tablas prefiero no tocarlas y además funcionó de maravillas. Además tambien fue la solución que me sugirió ASAPLTDA.

Muchas gracias nuevamente por la rapidez en las respuestas!!!.

Un abrazo y que sigan bien.

Walter