PDA

Ver la Versión Completa : cómo hacer un listado de 2 tablas diferentes


acrophet
21-04-2004, 10:33:36
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
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í:


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
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.

;)