Ten artykuł jest kontynuacją poprzedniego, w którym przyjrzeliśmy się, jak stworzyć złożony raport. Raport stworzony w tamtym artykule stał się źródłem inspiracji dla nowego obiektu - AdvancedMatrix.
Raport z poprzedniego artykułu zawierał trzy sekcje:
1) statystyki roczne;
2) statystyki kwartalne;
3) statystyki miesięczne.
Każda z sekcji została zaimplementowana za pomocą osobnej macierzy, co musiało być wykonane ze względu na ograniczenia standardowego obiektu MatrixObject. W nowej wersji FastReport .NET dodaliśmy ulepszoną wersję tego obiektu, która nosi nazwę AdvancedMatrix. Pozwala on na opracowanie całego raportu w jednej macierzy. Zobaczmy, jak to zrobić.
Dodaj obiekt AdvancedMatrix do pustego pasma danych:
Przypomnijmy sobie, jak wyglądają dane, które stosujemy:
Dla najprostszej macierzy musimy przeciągnąć trzy pola: nazwa kraju, owoc_typu i ilość.
Oto jak teraz będzie wyglądała macierz:
The new matrix allows you to change the calculations in the cells. In this case, we need the amount, but we can replace it with something from the following list:
Przemodelujmy macierz. Potrzebujemy, aby pola nazwa_kraju i rodzaj owocu zostały pogrupowane - raport powinien posortować listę owoców według krajów, a dla każdego roku z osobna powinna być odpowiednia kolumna:
Na tym etapie wychodzimy poza właściwości zwykłego MatrixObject. Dodajmy do macierzy dodatkowe pola rok i kwartał, a także zastąpmy puste wartości zerami:
To, co wcześniej wymagało użycia dwóch macierzy, teraz można zrobić za pomocą jednej. Teraz mamy podział zarówno na lata, jak i na kwartały. Przejdźmy jeszcze dalej.
Na tym etapie mamy macierz ze wszystkimi potrzebnymi danymi. Aby poprawić przejrzystość, możemy zmienić sposób wyświetlania macierzy i danych.
Na początek połączmy komórki z pełnym tekstem:
Nowe menu do edycji nagłówków może pomóc w przedstawianiu danych:
Teraz macierz wygląda tak:
Na koniec możemy porównać szybkość przygotowania raportu, kiedy składa się on z trzech obiektów macierzy regularnej oraz jeśli składa się z jednej dużej macierzy.
Do testu użyto komputera z procesorem AMD Ryzen 5 3600 i 16 GB pamięci RAM. Liczba rekordów wyświetlanych w tabeli danych wynosi 5000.
Attempt |
3 matrices of 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 |
Average: |
893.3 ms |
648.3 ms |
Jak widać, czas przygotowania spadł średnio o ~27%, co może zaoszczędzić sporo czasu przy tworzeniu raportów z wieloma danymi.
W tym artykule pokazaliśmy, jak odtworzyć raport z wcześniejszego artykułu. Advanced Matrix pozwala zaimplementować kilka przydatnych funkcji - na przykład filtr TopN sortujący do 5 rekordów z najwyższymi obliczonymi wartościami.
O wszystkich funkcjach tego obiektu możesz dowiedzieć się z naszej dokumentacji.