Este artigo é uma continuação anterior, em que consideramos a criação de um relatório complexo. O relatório criado nesse artigo foi uma das fontes de inspiração para a nova instalação AdvancedMatrix.
O relatório no artigo anterior consistiu em três seções:
1) Estatísticas por ano;
2) estatísticas trimestrais;
3) estatísticas por mês.
Cada uma das seções foi implementada com uma matriz separada, o que teve que ser feito devido às limitações do MatrixObject padrão. Na nova versão do FastReport .NET, adicionamos uma versão atualizada desse objeto chamado AdvancedMatrix. Este permite que você implemente todo o relatório em uma única matriz. Considere como fazer isso.
Adicione um objeto AdvancedMatrix à banda de dados vazia:
Lembre-se de como são os dados que usamos:
Para a matriz mais simples, precisamos arrastar três campos: country_name, fruit_type e amount.
É assim que a matrix se parece agora:
A nova matriz permite alterar os cálculos nas células. Nesse caso, precisamos do valor, mas podemos substituí-lo por algo da lista a seguir:
Vamos refazer a matriz. Precisamos que os campos country_name que fruit_type foram utilizados no agrupamento: o relatório deve agrupar a lista de frutas por país e deve haver uma coluna para cada ano individual:
Neste ponto, vamos além dos recursos do MatrixObject comum. Adicione campos adicionais à matriz year e quarter, e também substituímos os valores nulos por zeros:
O que anteriormente tinha que ser feito por duas matrizes agora pode ser realizado com apenas uma. Agora temos um detalhamento por ano e por trimestre. Vamos mais longe.
Neste ponto, temos uma matriz que reflete todos os dados necessários. Para maior legibilidade, podemos alterar a exibição da matriz e dos dados.
Primeiro, combine as células onde apenas o texto estará localizado:
Com a exibição de dados, um novo menu de edição de cabeçalho pode ajudar:
E agora a matriz parece assim:
Finalmente, podemos comparar a velocidade de preparação do relatório no caso em que ele consiste em três objetos de matriz comuns e quando consiste em uma matriz grande.
O teste foi realizado em um computador com AMD Ryzen 5 3600 e 16GB de RAM. A tabela de dados exibe 5.000 registros.
Tentativa |
3 matrizes MatrixObject |
1 AdvancedMatrix |
#1 |
906 ms |
656 ms |
#2 |
828 ms |
625 ms |
#3 |
937 ms |
640 ms |
#4 |
875 ms |
641 ms |
#5 |
891 ms |
672 ms |
#6 |
922 ms |
656 ms |
Média: |
893.3 ms |
648.3 ms |
Como você pode ver, o tempo de preparação cai em média ~27%, o que pode economizar muito tempo em relatórios com muitos dados.
Neste artigo, mostramos como recriar com precisão um relatório de um artigo anterior. A matriz aprimorada permite a implementação de várias funções que seriam úteis nela – por exemplo, a classificação de filtro TopN, que permite selecionar os 5 registros com os valores calculados mais altos.
Você pode aprender sobre todas as características deste objeto em nossa documentação.