PDA

Ver la Versión Completa : quickreport con query en ejecucion


lejia
14-10-2007, 18:07:14
Ahora tengo otro problema,
Resulta que estoy leyendo manuale sy manuales, y nada..
A ver, yo hago en un query una consulta asi..(en tiempo de ejecucion) tengo varias tablas en la consulta, como la tabla cliente, la tabla articulo, y la tabla familia (donde esta el codigo,nombre,etcc..)

codigo articulo,nombre, precioeuros, familia..
pues bien, en la consulta sql que es en tiempo de ejecucion. Donde estan ordenados todos los articulos por familia (y dentro de ellos por nombre de arituclo), es decir, primero los de codigo 1,despues los de codigo 2, etc.. Pues bien, en el beforeprint del qreport, coloco un subdetail con 2 campos qrdbtext, uno para el articulo y otro para el nombre, pero pongo otro campo detail, de familia, y me sale por cada aticulo su familia.. yo quiero que ponga la familia tal (conservas) y debajo me salgan todos los articulos pertenicientes a el.. como puedo pasar eso al informe,?..
Gracias por la ayuda.

Lepe
15-10-2007, 01:59:22
Hace tiempo que no uso QuickReport, pero tienes que agrupar los datos en la consulta sql con "group by familia"

Después (y esto es lo que no recuerdo bien) tienes que añadir un QRBand y especificar que es de grupo, añadiendo ahí el campo "familia"

Saludos

lejia
15-10-2007, 21:35:12
No encuentro la manera, necesito ayuda, si tengo en la consulta sql el group by, pero no me funciona, gracias.Alguna ayudita por favor.:mad:

lejia
15-10-2007, 22:42:19
Miento, lo tengo echo con un order by, me salen todos los prodcutos y su familia, y quiero en el report, que me salgan ordenados por familia, y sus productos..

mi consulta sql es la siguiente, a ver si la tengo que cambiar:
//SELECT DISTINCT art.num,art.nombre,des.pree,des.prep,des.porcen,art.fam from art,des,fam where (art.NUM=des.ART) and (des.CLI=9)
//order by art.fam,art.nombre;

Lepe
16-10-2007, 12:16:25
Pues me parece que no necesitas agrupar. Creo recordar que se usaba un QRBandGroup con un qrdbtext enlazado al campo familia y con eso era suficiente.

Esperemos que alguien usando QuickReport lo confirme.


SELECT DISTINCT art.num,art.nombre,des.pree,des.prep,des.porcen,art.fam
from art,des,fam where (art.NUM=des.ART) and (des.CLI=9)
order by art.fam,art.nombre;

Saludos

lejia
16-10-2007, 13:07:25
no, lo siento pero no es suficiente..
no se que estoy haciendo mal, pero necesito ayuda.
Gracias.
No se si poner la consulta con un order by, o con un group by, pero con order me funciona bien la consulta, pero no logro hacer el qreport, bien, primero el campo familia, y todos sus productos, y asi sucesivamente. TEngo manuales, pero ayudan.

Ivanzinho
16-10-2007, 15:42:59
1.- Tienes que hacer la consulta ordenada por familia.
2.- En el TQuickRep agregas una banda TQRGroup y en la propiedad Expression pones el campo por el que quieres agrupar, en tu caso será algo como Tabla.familia
3.- Añades una banda TQRBand y en la propiedad BandType pones rbDetail.

En la banda TQRGroup en donde va la etiqueta con la familia, en la TQRBand pones los datos de los productos.

Espero que te sirva

Un saúdo.

vivamotos
10-01-2008, 10:10:57
No entiendo la última parte:

En la banda TQRGroup en donde va la etiqueta con la familia, en la TQRBand pones los datos de los productos.

jcarteagaf
10-01-2008, 16:10:20
La banda QRGroup tiene una propiedad Expression ahi colocas el campo(s) por los que quieres que se haga la agrupacion. En tu caso Tabla.Familia, luego puedes colocar unos QRLabels o QRDBLabels para que muestren el nombre o codigo de la familia. Luego en la banda de Detalle colocas los datos de los productos mediante TQRDBtext que apunten a los fields de tu tabla.

Esto te dara un reporte con una estructura similar a:

Familia 1
producto 1
producto 2
producto 3
Familia 2
producto 4
producto 5
...

Puedes colocar tambien una banda de GroupFooter para poder mostrar subtotales por grupo, basta con insertar una banda y cambiar su propiedad BandType a rbGroupFooter luego en la banda de Grupo le asignas la propiedad FooterBand para que apunte a tu nueva banda.

Espero que sirva.

Saludos

vivamotos
11-01-2008, 08:19:43
Pero como le digo que me muestre tantas filas de la query por página???

Lepe
11-01-2008, 10:45:02
Eso lo hace el QuickReport automáticamente, según las líneas de cada grupo que haya.

Lo normal es hacer un poco más alta la banda rbDetail, o incluso la banda qrGroup, hasta que quepan las líneas que tú quieras.

Saludos

vivamotos
11-01-2008, 11:02:19
El problema que tengo es que solamente me imprime una línea de la query, y yo me gustaría que cogiera todo el ancho del QRDBText hasta el final y si no tiene página nueva, pero no una página nueva por dato.

Como lo hago?

Lepe
11-01-2008, 13:01:05
No acabo de entender lo que ocurre.

En principio, revisa todas las bandas, por si alguna tiene la propiedad ForceNewPage en True. Ponla a False.

Si no es eso, explica qué línea es la que imprime, ¿Una de grupo? ¿una linea con el grupo y una sola de detalle?

el informe que has creado en tiempo de diseño ¿ocupa más de la mitad del folio?
Igual tienes poco espacio para el detalle. Ten en cuenta que el alto de la banda detalle se repite por cada registro que haya. Además cuando cambie de familia, se necesita el alto que ocupe la banda qrGroup más el alto de la banda detalle.

Saludos

vivamotos
14-01-2008, 22:02:51
Al final he optado por hacerlo manualmente como explica la web que encontre. Grácias:

http://www.foroexperiencia.com/viewtopic.php?f=20&t=134