Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   cómo hacer un listado de 2 tablas diferentes (https://www.clubdelphi.com/foros/showthread.php?t=9339)

acrophet 21-04-2004 10:33:36

cómo hacer un listado de 2 tablas diferentes
 
Hola, me gustaria saber como puedo hacer un listado de 2 tablas diferentes y que me aparezca en el mismo report.
La cosa es que tengo una tabla de titular con el campo apellidos y otra de beneficiarios en la que tambien tengo el campo apellidos. Lo que me interesa es hacer un listado donde aparezcan todos los registros de las 2 tablas ordenados por apellidos. Uso FastReport.
Alguna idea???

Un saludo.

__cadetill 21-04-2004 10:46:07

Si tienen el campo apellido las dos tablas, puedes hacer un join de las dos y pasarle al listado esa join. El cómo, ya no lo se, no uso FastReport :D

acrophet 21-04-2004 10:49:34

Alguien que controle de FastReport que me pueda echar un cable???
La verdad es que no se muy bien por donde meterle mano al problema...Urggg

__cadetill 21-04-2004 11:01:08

Pero, a ver, se supone que no es el primer listado en Fast que haces, no? Si es así, cómo haces para, por ejemplo imprimir el contenido de una tabla (un TTable o componente similar)?

Yo, a lo que me refería, es que puedes poner en un TQuery la sentencia SQL y listar ese TQuery. Lo que no se es cómo enganchar el TQuery al FastReport (eso se supone ya lo has de saber tu) ya que es de suponer que se hace igual que un TTable o cualquer descendiente de TDataset

acrophet 21-04-2004 11:41:58

Amos a ver, para imprimir el contenido lo que se hace es en la plantilla, se introduce una banda y dentro de esta banda una casilla, que va conectada con la tabla y campo en cuestion. Pero claro, eso ya me esta limintado a una tabla y campo, cuando lo que yo quiero es poder meter ahi 2 tablas...

__cadetill 21-04-2004 11:48:13

Por eso te decía que hicieras una query y juntaras las das tablas en una sola

Bueno, no insistiré más sobre el tema, que a lo mejor me estoy metiendo donde no me llaman :o

acrophet 21-04-2004 12:46:49

Osea, crear una 3a tabla?? temporal??
Uff que lio...

__cadetill 21-04-2004 12:57:08

Cita:

Empezado por acrophet
Osea, crear una 3a tabla?? temporal??
Uff que lio...

:confused: no no no, buuuaaaa, hoy nadie me entiende!!!! buuuuaaaa

jejeje, a ver, tu tienes una base de datos con dos tablas A y B en las que en las 2 tienes un campo apellido, correcto? Bien, pues a lo que yo me refiero es que hagas algo así:

Código:

Query.SQL.Clear;
Query.SQL.Add('select * from tablaA a inner join tablaB b on b.apellido = a.apellido);
Query.Open;

Con esto tienes una Query con el resultado que quieres, un sólo dataset para tu listado con todos los datos

Espero haberme explicado bien ahora :p

Nuria 21-04-2004 12:57:29

Hola!

No dices que base de datos estás utilizando. Depende de la B.D. que utilices puedes usar unos componentes o otros. Igual con un TQuery te apañas. Como te decía el buen amigo Cadetill haz un query con los campos que quieres que aparezcan en el listado. Por ejemplo mediante un TQuery, supongo que lo podrás enlazar con el Fast Report (desconozco esté programa por lo que en eso no te puedo ayudar).

Espero que te sirva.

Saludos!

Nuria 21-04-2004 12:59:39

Ya te me has adelantado cadetill, como siempre.... :D. Jo! tengo que ponerme las pilas.... :p :p

acrophet 21-04-2004 12:59:57

ahhhhhhh, vale, ahora me entero de por donde van los tiros... :rolleyes:
Lo voy a probar y luego os comento.
Mil gracias.

acrophet 21-04-2004 14:01:53

La verdad es que he estado intentando hacer lo que me comentabais, pero no consigo hacerlo bien.
A ver, la bd que utilizo es Interbase(que me lo preguntaron por ahi). Cojo un IBQuery y un datasource. ahora bien, como los conecto entre si para que funcione la historieta esta? Porque de las maneras que he probado yo, no funciona.
En el ibquery he creado los campos (son unos 5) que quiero que me salgan luego para seleccionar en la plantilla del FastReport y los he añadido a la plantilla.
Tambien he añadido el código que me comentaste y me da un error "IBQuery1 : field 'numero' not found". Donde numero es el ulitmo campo de la lista que añadi al ibquery.
Me da en la nariz que no he conectado bien las cosas...

__cadetill 21-04-2004 14:26:26

La conexión es la siguiente

TIBDatabase+TIBTransaction --> TIBQuery(database + transaction sino recuerdo mal) --> TDataSource (dataset)

El error del SQL, podrías mirar de poner la consulta que realizas a ver si vemos por donde falla

Delfino 21-04-2004 19:08:15

No hace falta el uso de query ni na, uso el Freereport y lo q tienes q hacer es poner una banda Master Data y enlazarlo con la tabla master y despues poner los edits para enlazarlos con los fields, y en otra banda Detail Data enlazarlo con la tabla detail y lo mismo, mas facil imposible..

acrophet 21-04-2004 19:32:25

Si pero...yo quiero que me salgan todos juntos ordenados por el apellido, no primero unos y luego otros...

jachguate 21-04-2004 21:43:44

Código:

Select apellidos, nombres
  from tabla1
Union
Select apellidos, nombres
  from tabla2
order by 1

Te recomiendo la lectura de un buen libro/manual/tutorial/instructivo de SQL.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 22:09:01.

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