Suponiendo que tienes un conjunto de datos de la siguiente forma:
Código:
semestre nombre nota
1 nota1 100
1 nota2 98
1 nota3 78
2 nota1 75
2 nota2 95
2 nota3 92
El generador de reportes lo único que hace es evaluar una expresión de agrupamiento y por cada valor diferente que devuelva la expresión hace un corte y genera un grupo
En el ejemplo anterior si la expresión de agrupamiento es el campo semestre entonces comienza a recorrer los datos y encuentra en el primer registro el valor 1, por lo tanto creará un grupo con ese valor, cuando pasa al siguiente registro el valor de la expresión nuevamente es 1 así que asume que el registro pertenece al mismo grupo y continua de esta forma hasta que el valor de la expresión cambie, esto sucede cuando pasa por el cuarto registro, en ese momento el valor sería 2 y entonces lo que procede es crear un nuevo grupo con ese valor, el proceso se repite hasta el final de la tabla.
El resultado sería el esperado
Código:
semestre 1
nota1 100
nota2 98
nota3 78
semestre 2
nota1 75
nota2 95
nota3 92
Para obtener este resultado es importante que los datos esten
ordenados por el campo que agrupamiento y la expresión de agrupamiento no tiene que ser por fuerza un campo, puede ser algo más complicado.
Para más información te recomiendo ver las demos que vienen incluidas en Delphi entre ellas está un reporte de quickreport con agrupamiento y se ve más claramente como se manejan las componentes.
Saludos