PDA

Ver la Versión Completa : Problemas en QRBand - Band type Detail


jdangosto
08-08-2005, 10:54:28
Hola.

Tengo en un informe dos QRBand, una de tipo Title y otra de tipo Detail.
En la de tipo Detail tengo unos QRText asociados a los parámetros de una consulta. La aplicación no devuelve ningún error pero en el Preview del resultado del informe, en la Banda de Detail sólo se visualiza la primera línea del resultado de la consulta.

¿A qué puede ser devido o con que otro tipo de banda puedo solucionar este problema?

Gracias

_fede
08-08-2005, 13:24:18
Hola.

Para generar un informe con esas dos bandas lo único que debes hacer es tener asociada en la propiedad DataSet del componente TQuickReport la fuente de datos que realiza la consulta, un TQuery o un TTable.

En la banda de detalle colocas los componentes TQRDBText que necesites rellenando las propiedades:
DataField = nombre del campo a mostrar
DataSet = nombre de la fuente de datos que realiza la consulta, un TQuery o un TTable (en tu caso será el mismo que el del componente TQuickReport).

Un saludo.

jdangosto
08-08-2005, 13:42:58
Gracias Fede, no conocía ese pequeño detalle. Ahora funciona a las mil maravillas.

i_berbeu
17-09-2005, 21:15:05
a ver si me lo puedes explicar mejor porque a mi no me sale.

yo tengo en un Detail, 3 QRDBText, con 3 consultas distintas, asi que lo mismo este metodo no funciona. a ver si me puedes decir como podria hacerlo.

Gracias

Lepe
18-09-2005, 12:35:53
Creo recordar que la propiedad TquickReport.Dataset debe estar asignada (a una de esas 3 consultas) despues ya puedes usar distintos Datasets para mostrar otros datos.

Un saludo

i_berbeu
18-09-2005, 13:53:11
yo lo tengo asi.
tres consultas: query1,query2 y query3
tqrdbtext1---->dataset=query1
tqrdbtext2---->dataset=query2
tqrdbtext3---->dataset=query3

con los tres tqrdbtext, en un mismo qrband de tipo Detail.

entonces si lo que me has dicho es poner en el tquickreport.dataset=query1 por ejemplo. lo he probado y no funciona. no se si deberia poner cada tqrdbtext en un qrband distinto o no se.

porfavor ayudadme que lo necesito ya y no tengo ni idea. he probado mil cosas y nunca va

gracias

Lepe
18-09-2005, 14:21:17
Exactamente cual es el problema, ¿te saca algun dato o ninguno?

¿no puedes hacer una sola consulta con inner joins?

Se supone que las 3 consultas estan abiertas antes de mostrar el informe ¿no?

i_berbeu
18-09-2005, 14:32:55
las 3 consultas estan abiertas y son 3 consultas sobre una misma tabla, de forma que la 1º consulta selecciona los registros con un campo =1, la 2º con ese campo=2 y la 3º con ese campo =3

y entonces lo que me pasa es que si pongo el dataset del quikreport=query1 el 1º tqrdbtext me sale bien, pero el 2 y el 3, me salen solo el valor del 1º registro y no de todos los demas.

no se si me explico

mas o menos es que me ocurre lo que se dijo en el 1º mensaje, y con una sola consulta funciona, pero si añado otra consulta mas (en mi caso 2 mas), como no se corresponde con el dataset del quickreport, pues todo elemento del qr que se relacione con esas otras consultas sale mal.

Lepe
19-09-2005, 12:32:38
y entonces lo que me pasa es que si pongo el dataset del quikreport=query1 el 1º tqrdbtext me sale bien, pero el 2 y el 3, me salen solo el valor del 1º registro y no de todos los demas.


Lógico y correcto.


Si es el mismo campo, ¿como quieres que te aparezcan agrupados los del query2 dentro del query1?. Deben tener alguna relación aparte de ese campo.

Más vale que empecemos desde el principio, digas qué quieres obtener y cuales son las sql de las consultas, y descripción de los campos de tu tabla.

Intuyo que quieres una agrupación (QRGROUPBAND), y para ello tienes que traer los datos agrupados desde la consulta, y deberá ser una consulta sola.

Un saludo.

i_berbeu
19-09-2005, 16:03:56
a ver...

yo tengo una tabla de la forma:

nombre precio tipo
--------------------
1 10 1
2 12 2
3 15 3
4 14 1
5 15 2
6 25 3
7 20 1
..... ..... .....

entonces realizo 3 consultas de la forma

Query1----> select nombre from tabla where tipo=1
Query2----> select nombre from tabla where tipo=2
Query3----> select nombre from tabla where tipo=3

y entonces quiero representar esto en el quickreport de la forma:

resultados de la Query1
---------------------
resultados de la Query2
---------------------
resultados de la query3
---------------------

y para esto, en el quick report pongo lo siguiente:

TQRDBText1 ----> asociado a la Query1
----------------------------
TQRDBText2 ----> asociado a la Query2
----------------------------
TQRDBText3 ----> asociado a la Query3
----------------------------

No soy ningun experto entonces, puede ser que las consultas esten mal hechas y se puedan agrupar en una sola, o que haya que usar QRGroups (que no se como usarlos bien), o no se.

el caso es que si pongo TQuickReport.dataset=Query1. solo me salen todos los resultados del TQRDBText1, y en los otros dos, me salen solo el primer registro de cada consulta(de las Querys 2 y 3)

Yo creo que queda mas explicado asi, a ver si alguien lo entiende y me hecha una mano por favor. es que estoy todo pillado. y repito que tampoco tengo demasiada idea. hace poco que empece con esto de los quickreports.

Gracias!!!

Lepe
19-09-2005, 18:17:10
Partimos de QuickReport totalmente en blanco.
colocamos una sola consulta que tiene en su sql esto:

select nombre, tipo from Tabla
group by tipo, nombre
order by tipo asc;


QuickReport1.Dataset := query1;

Ahora desde la paleta Qreport, añadimos un QRGROUP, dentro de ella colocamos:
- Un qrLabel con el caption : "Tipo:"
- Un qrDBText, asociado a la query y con el campo a Tipo.
Estos 2 componentes, ponemos su Fuente en negrita.


desde la paleta Qreport, añadimos un QRBand:
- en su propiedad BandType elegimos : rbGroupFooter
- Colocamos 2 qrdbtext uno para el nombre y otro para el tipo (con fines de pruebas y que veas como va el asunto)

Ahora tenemos que unir las dos bandas, para ello, damos un clic a la banda Qrgroup y en en object inspector modificamos:
- Expression := 'Tipo' (sin las comillas)
- FooterBand: QrBand2 (la banda donde tienes el campo nombre y Tipo)

Cuando cambie el valor del campo "Tipo", mostrará una linea en negrita que dice "Tipo X", y ahora en la banda Qrband2, aparece el nombre de todos

En la banda Qrgroup, tambien tienes la propiedad ForceNewPage, si lo pones a true, cada vez que el Tipo cambie, saltará de hoja.

Un saludo y espero te ayude.

i_berbeu
20-09-2005, 23:06:16
muchas gracias. voy a probarlo a ve rsi me va y te cuento cuando lo vea.

i_berbeu
21-09-2005, 02:07:32
muchas gracias Lepe, parece que con tus consejos he conseguido ya practicamente todo.

aunque tuve que añadir un ARBand de tipo Detail. no se si porque trabajo con c++ builder, o que a lo mejor a ti se te olvido ponerlo, pero te lo comento pa que lo sepas. gracias por tomarte tu tiempo.

solo me falta una cosa...
necesito ponerle un titulo en la qrgoup, es decir, que en vez de quedarme como me digiste tu:

TIPO TipoX

me de un titulo distinto dependiendo del valor del tipo en cada grupo. es que lo he intentado con QRExpr y con TQRDBText, pero no lo logro

y ya si me dices esto creo que no te doy mas la plasta.

Gracias!!

i_berbeu
21-09-2005, 19:12:03
muchas gracias a todos ya lo he conseguido todo. POR FIN!
tampoco era muy complicado al final pero yo andaba un poco pez.

Muchas gracias!!!!