PDA

Ver la Versión Completa : QuickReport QRGroup


Barzaugc
20-06-2005, 21:13:13
Hola mundo delphi, llego aqui para pedirles nuevamente su ayuda, ahora es con los componentes Qreport de Delphi 6, lo que quiero hacer es desplegar un reporte cuando den click en un boton, pero eso no es todo, eso ya se como hacerlo, lo que no se es como ordenar el reporte con datos de una tabla en Access mediante el componente QRGroup, supongo que se le tiene que dar en la propiedad Expression, pero no se si realmente se agrupen dandole solo el campo por el cual quiero el agrupamiento. por ejemplo:

QRGroup1.Expression:='ADOTable1.Clave';

o tenga que modificar más propiedades aparte de esa. Se los pregunto a ustedes porque se que todo lo saben.

Lepe
21-06-2005, 11:18:11
En principio debe bastar con el campo, por supuesto si es clave primaria o un campo que no se repite, no tendrá nada que agrupar ;).

Un saludo

Barzaugc
21-06-2005, 23:01:53
Gracias por contestar Lepe, pero el reporte no sale por grupos solo dandole en la propiedad expression, me los manda en forma de lista y en la parte de arriba el supuesto campo para agruparlos. Tienes alguna idea de porque hace eso?

Lepe
21-06-2005, 23:55:11
Como un ejemplo vale más que mil palabras, mira en:

C:\Archivos de programa\Borland\Delphi6\Demos\QuickRpt\Qr3\

Ahí tienes un ejemplo de lo que quieres, y en realidad, solamente usa el nombre del campo en la propiedad Expression. Quizás te falle por las demás bandas :confused:

Un saludo

Barzaugc
22-06-2005, 15:32:05
Ok. ya puse los campos en su lugar, ya le di el nombre del campo por el que quiero agrupar, incluso los separa por ese campos, pero no los agrupa, me sale repetido el campo varias veces, ejemplo:

Quimica----------------------->campo por el cual estoy agrupando
-----------------
Alejandro 10
Pepe 8

Matematicas
-----------------
Juan 7

Quimica
-----------------
Manuel 8

Matematicas
------------------
José 10

Me sale repetido el campo por el cual estoy agrupando, no agarra todos los datos. Tienes alguna idea?
Por cierto, no encontre el ejemplo que me mencionaste en toda mi PC

ramiretor
22-06-2005, 21:24:32
Hola:
Lo que pasa es que tu query debe estar ordenado por el campo que va a formar el grupo, de lo contrario el grupo no te sirve de nada.

Saludos

Barzaugc
22-06-2005, 21:56:41
el codigo que le pongo al query es:
select * from INVTABLA
nada mas, necesito ordenarlo por otro campo o algo mas esta fallando?

ramiretor
22-06-2005, 23:14:55
Hola:
Sí, necesitas ordenarlo por el campo clave (o como se llame):


select * from INVTABLA
order by clave


Saludos

Barzaugc
22-06-2005, 23:19:38
Por cierto, algo que se me paso es que al momento de mostrarse el reporte, en el componente QRExpr marca un error cuando le asigno un campo, le asigno de esta manera:

QRExpr1.Expression:='ADOQuery1.Clave';

y me manda este error:

Unknown function ADOQuery1.Clave

Si hay alguien por ahi que me pueda hacer el favor de darme informacion completa acerca de QuickReport agrupados, se los agradeceria muchisimo.

Lepe
23-06-2005, 10:55:44
En el ejemplo que te indicaba viene un par de querys, el SQL es:

select c.company, o.orderno, o.custno, o.ItemsTotal
from orders o join customer c on o.custno=c.custno
where c.company LIKE 'A%'
order by c.company, o.orderno

Agrupa por c.company y por o.orderno

el Qreport tiene:

Banda campos dentro de la banda
------------------------------------------
Group header company
Detail orderno


Los componentes de cada banda son QRDBTEXT, asociados a su Dataset.

QRgroup.Expression es : Masterqry.company A ti te dice que no lo conoce porque no tienes los campos persistentes. Dale doble clic a tu query, boton derecho, y Add all fields para que te reconozca la expresión. Ahora en la banda qrGroup, en su propiedad expression, dale a los 3 puntos y usa el boton Database Field para añadir el campo.

Como ya te han dicho, debe estar ordenado, primero por el campo que quieres agrupar (para que salgan todos juntos), y despues puedes ordenarlo por otro campo. Así tu cláusula puede ser

ORDER BY ASIGNATURA, NOMBREALUMNO;


Un saludo