Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como Mostrar registros de 3 tablas diferentes en una sola grilla? (https://www.clubdelphi.com/foros/showthread.php?t=75589)

negrokau 05-09-2011 01:46:32

como Mostrar registros de 3 tablas diferentes en una sola grilla?
 
hola, como puedo llamar a registros de 3 tablas diferentes en una misma grilla, por ejemplo dela tabla1 nro_factura, de la tabla2 nro_remision y de la tabla3 nro_compra en una misma columna de la grilla,con una sola tabla se hacerlo, pero de varias ya no lo se,podrian ayudarme? muchas gracias por su tiempo y espero que esta vez si este bien mi titulo descriptivo....

CrazySoft 05-09-2011 02:43:06

Mediante una consulta realizas una union
Código SQL [-]
select 'Factura' as tipo, nro_factura AS numero from facturas
union
select 'Remision' as tipo, nro_remision AS numero from remisiones
union
select 'Compras' as tipo, nro_compra AS numero from compras

oscarac 05-09-2011 03:36:06

pues... primero especifica que datos tienen esas tablas, como se relacionan entre si, tu titulo descriptivo si esta muy bien, pero te falto agregar un poco mas de informacion

Casimiro Noteví 05-09-2011 10:34:08

Tal y como dice oscarac, sí, muy bien el título descriptivo, gracias... aunque seguimos sin ser adivinos :D
Escribe la estructura de las tablas y los datos que quieres obtener, ejemplo:

Código SQL [-]
tabla clientes
id
nombre
telefono

tabla ventas
id
numero
total
cliente

tabla cobros
id
factura
importe

negrokau 05-09-2011 13:14:31

Código SQL [-]
//Tabla facturas
id=cod_facturas
nro_facturas
fecha
importe
//Tabla compras
id=cod_compras
nro_compra
fecha
importe
//Tabla remision
id=cod_remision
nro_remision
fecha
importe
Estas son las 3 tablas de donde necesito solamente nro_facturas, nro_compra y nro_remision, y que me muestre en una mismo columna de mi grilla, esta bien la informacion?

negrokau 05-09-2011 13:23:59

Cita:

Empezado por CrazySoft (Mensaje 410847)
Mediante una consulta realizas una union
Código SQL [-]
select 'Factura' as tipo, nro_factura AS numero from facturas
union
select 'Remision' as tipo, nro_remision AS numero from remisiones
union
select 'Compras' as tipo, nro_compra AS numero from compras

donde escribo esta union, en un query?

ecfisa 05-09-2011 13:26:47

Hola negrokau.

Como te han sugerido, cuanto más datos aportes, más fácil de encontrar una respuesta.
Pero a riesgo de interpretar mál la bola de cristal :p:)..., coincido con CrazySoft que una consulta sería una solución adecuada.

Poné un componente TQuery,TADOQuery,TIBQuery,... que voy a llamar query. (no especificás que componentes estás usando), un TDataSource asociado al query y el TDBGrid asocialo al DataSource:
Código Delphi [-]
  with query do
  begin
    Clear;
    SQL.Add('SELECT T1.NOMBRE, T2.DESCRIPCION, T3.MTODEUDA ');
    SQL.Add('FROM CLIENTES T1, ANUNCIOS T2, RECIBOS T3 ');
    //SQl.Add('WHERE ...');    ( SI FUERA NECESARIO )
    //SQL.Add('ORDER BY ...'); ( SI FUERA NECESARIO )
    Open;
  end;
Y tendrías que visualizar los tres campos en él DBGrid sin ningún problema.

Podrían haberte dado un código totalmente funcional si como dicen Casimiro y oscarac, hubieras sido más explícito con tu pregunta.;)

Un saludo.

negrokau 05-09-2011 13:29:52

uso ibquery, datasource y dbgrid

ecfisa 05-09-2011 13:39:20

Cita:

Empezado por negrokau (Mensaje 410882)
uso ibquery, datasource y dbgrid

Perfecto, entonces en el código que te puse, sólo cambia query por el nombre de tu TIBQuery.

Un saludo.

negrokau 05-09-2011 13:51:19

disculpa lo cabeza hueca que soy pero en que parte de mi formulario pongo esa consulta?
sabes, yo por ejemplo lo hice asi:
Código SQL [-]
select nro_facturas, nro_remision, nro_compra from facturas, remision, compras
lo puse en el sql del query, y me funciona perfecto, solo que me muestra en columnas separadas, lo que necesito es que me muestren en una misma columna

ecfisa 05-09-2011 14:10:15

Hola.

Los tres campos en una sola columna... bueno, podrías hacer:
Código Delphi [-]
  with IBQuery1 do
  begin
    SQL.Clear;
    SQL.Add('SELECT CAST(T1.NRO_FACTURA AS CHAR(10)) || '' '' || ');
    SQL.Add('CAST(T2.NRO_REMISION AS CHAR(10)) || '' '' || ');
    SQL.Add('CAST(T3.NRO_COMPRA AS CHAR(10)) AS TRES_CAMPOS_EN_UNA_COLUMNA');
    SQL.Add('FROM TABLA1 T1, TABLA2 T2, TABLA3 T3');
    ...
    Open;
  end;

¿ Ves cuanta razón tienen Casimiro y oscarac ? :D

Saludos.

negrokau 05-09-2011 14:16:22

gracias, los voy a probar, solo que donde lo hago? en el sql del query? en que parte del mi form? no lo estoy pudiendo descifrar

ecfisa 05-09-2011 14:18:38

Hola.

Podés ponerlo en tiempo de diseño en la propiedad SQL del TIBQuery, o asignarlo por código como te puse arriba, en el evento OnShow del form por ejemplo.

Saludos.

negrokau 05-09-2011 14:35:38

Que significa CAST? lo estoy probando pero no me sale, lo puse en el onshow pero nada no pasa, como lo pongo en el sql del query?

ecfisa 05-09-2011 14:43:47

Cita:

Empezado por negrokau (Mensaje 410890)
Que significa CAST?

En inglés tiene varias acepciones, pero la que más le vá en este caso es: molde .
Cita:

lo puse en el onshow pero nada no pasa, como lo pongo en el sql del query?
Si copias y pegas el código en el evento OnShow, tiene que funcionar (al menos si se dispara... :) ).

Para ponerlo en la propiedad SQL del IBQuery: Estando este seleccionado, Object Inspector -> SQL -> doble click -> escribir la consulta SQL.

Saludos

negrokau 05-09-2011 15:00:23

Lo hago tal cual esta en el ejemplo pero no muestra nada, solo muestra el titulo TRES_CAMPOS_EN_UNA_COLUMNA en la grilla, o no estoy entendiendo bien....

Casimiro Noteví 05-09-2011 15:04:57

¿Y cuándo vas a poner tu código fuente aquí?, es que seguimos sin ser adivinos y la bola de cristal está en el taller ;)

negrokau 05-09-2011 15:07:43

Código Delphi [-]
WITH Q_REPORTE2 DO
BEGIN
SQL.Clear;
SQL.Add('SELECT CAST(FACTURAS.COD_FACT AS CHAR(10)) || '' '' || ');
SQL.Add('CAST(REMISION.COD_REMI AS CHAR(10)) || '' '' || ');
SQL.Add('CAST(COMPRAS.COD_COMPRA AS CHAR(10)) AS TRES_CAMPOS_EN_UNA_COLUMNA');
SQL.Add('FROM FACTURAS, REMISION, COMPRAS');
Open;
END;
Este es mi codigo fuente

ecfisa 05-09-2011 15:17:23

Cita:

Empezado por Casimiro Notevi (Mensaje 410895)
¿Y cuándo vas a poner tu código fuente aquí?, es que seguimos sin ser adivinos y la bola de cristal está en el taller ;)

Q_REPORTE2 ...

Lo afirmo y lo publico: ¡¡¡ Cuanta razón tiene mi amigo Casimiro !!! :D


Saludos. :)

negrokau 05-09-2011 15:20:17

bueno, a que le llaman codigo fuente?


La franja horaria es GMT +2. Ahora son las 21:50:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi