Funções de agregação
Na maioria dos casos, relatórios de grupo precisam exibir algum resumo das informações (como: "total de um grupo", "número de elementos do grupo", etc.). FastReport fornece funções de agregação para calcular valores de agregação em um intervalo de dados. As funções de agregação são:
Function | Description |
---|---|
SUM |
retorna o total de uma expressão |
MIN |
retorna o valor mínimo de uma expressão |
MAX |
retorna o valor máximo de uma expressão |
AVG |
retorna o valor médio de uma expressão |
COUNT |
retorna o número de linhas (fileiras) no intervalo de dados |
A sintaxe de todas as funções de agregação (exceto COUNT
) é similar àquela da função SUM
:
SUM(expressão, banda, sinalizadores)
SUM(expressão, banda)
SUM(expressão)
Os parâmetros são:
expressão
– a expressão a ser calculada
banda
– o nome da banda de dados na qual é executado o cálculo
sinalizadores
– um campo de bits com os valores
1 : incluir bandas invisíveis no cálculo
2 : acumular o agregado como uma soma acumulada (não redefinir o agregado quando o intervalo de dados atual for redefinido)
3 : (ambas as opções anteriores)
Uma expressão é o único parâmetro obrigatório, os outros dois são opcionais. No entanto, para evitar cometer erros é recomendado que os parâmetros da banda sejam sempre fornecidos.
A função de agregação COUNT
possui a seguinte sintaxe:
COUNT(banda, sinalizadores)
COUNT(banda)
na qual os parâmetros têm o mesmo significado explicado acima.
Há uma regra geral para todas as funções de agregação: uma função de agregação somente pode ser calculada sobre uma banda de dados, e ela somente pode ser usada no rodapé da banda, que pode pertencer a estas categorias: rodapé, rodapé da página, rodapé do grupo, rodapé da coluna ou rodapé do relatório (banda de resumo).
Como funcionam as funções de agregação? Abordaremos isso com nosso relatório de grupo como exemplo. Vamos adicionar alguns elementos novos ao relatório:
O campo Group."ItemsTotal" na banda de dados exibe o total de pedidos atual. Coloque um objeto "Texto" no rodapé do grupo com a função de agregação SUM
exibida acima. Ele exibirá o total de todos os pedidos feitos por um cliente. Usando uma calculadora, podemos verificar que o resultado está correto:
Funções de agregação funcionam desta maneira: antes de exibir o relatório, FastReport examina o conteúdo do objeto "Texto" para encontrar funções de agregação. As funções encontradas são vinculadas às bandas de dados em seus parâmetros (em nosso exemplo, SUM
é vinculada à banda "DadosMestre1"). Na exibição do relatório (quando a banda de dados é exibida) são calculados os valores das funções de agregação vinculadas. Em nosso caso, os valores do campo Group."ItemsTotal" são acumulados. Quando o rodapé do grupo com a função de agregação tenha sido exibido, o valor da função é redefinido para zero, e o ciclo é repetido para o próximo grupo, e assim por diante.
Qual é o propósito do parâmetro opcional Sinalizadores
em funções de agregação? Os relatórios podem ocultar algumas ou até todas as bandas de dados. Podemos, no entanto, precisar calcular as funções de agregação de todas as bandas de dados, estejam elas visíveis ou não. Em nosso exemplo, configure a propriedade Visible
da banda de dados como false, prevenindo sua exibição. Para que esta banda de dados oculta seja incluída nos cálculos, é necessário configurar o terceiro parâmetro opcional na chamada da função como 1:
[SUM(<Group."ItemsTotal">,MasterData1,1)]
Isso produz um relatório com o seguinte aspecto:
Se o parâmetro Sinalizadores
for configurado como 2, o valor da função de agregação não é redefinido imediatamente após a exibição: a função se torna um cálculo "contínuo" para cada saída sucessiva. Vamos modificar a chamada da função desta maneira:
[SUM(<Group."ItemsTotal">,MasterData1,3)]
O valor "3" é uma combinação de bits de "1" e "2", o que significa que precisamos incluir as bandas invisíveis sem redefinir o total após cada grupo. Como resultado obtemos: