Este artículo es una continuación del anterior, en el que hemos considerado la creación del informe complicado. El informe creado en aquel artículo servía de una de las fuentes de inspiración para un nuevo objeto – AdvancedMatrix.
El informe en el artículo anterior ha consistido en tres secciones:
1) estadísticas de años;
2) estadísticas de trimestres;
3) estadísticas de meses.
Cada una de las secciones se ha implementado por vía de la matriz separada, lo que se debía hacer por causa de las limitaciones del MatrixObject estándar. En una nueva versión FastReport .NET hemos añadido una versión actualizada de este objeto, que se llama AdvancedMatrix. Permite realizar todo el informe en una matriz. Consideramos cómo hacerlo.
Añadimos el objeto AdvancedMatrix a un band blanco de datos:
Recordamos que son los datos que utilizamos:
Para la matriz la más simple necesitamos arrastrar tres campos: country_name, fruit_type e amount.
Este es el aire actual de la matriz:
La nueva matriz permite cambiar los cálculos en las celdas. En este caso necesitamos el importe, pero podemos sustituirla por algo de la lista siguiente:
Vamos modificar la matriz. Necesitamos que los campos country_name и fruit_type se utilicen en la agrupación — el informe debe agrupar una lista de frutas por país, y debe haber una columna para cada año separado:
En este punto vamos más allá de las capacidades del MatrixObject ordinario. Añadimos a la matriz los campos suplementarios year y quarter, y también remplazamos los valores blancos por ceros:
Lo que antes debía hacer con dos matrices, ahora se puede realizar con una sola matriz. Actualmente tenemos el desglose por años y por trimestres. Vamos más allá.
En este punto tenemos la matriz que muestra todos los datos necesarios. Para facilitar la lectura podemos cambiar la presentación de la matriz y de los datos.
En primer lugar, unimos las celdas que contienen sólo el texto:
Un nuevo menú de edición de encabezados puede ayudar a presentar los datos:
Ahora la matriz tiene un aire siguiente:
Por fin, podemos comparar la velocidad de preparación del informe compuesto de tres objetos de matriz ordinarios con el informe compuesto de una gran matriz.
La verificación se ha efectuada en un ordenador con AMD Ryzen 5 3600 y 16GB RAM. En una tabla de datos se presentan 5000 registros.
Intento |
3 matrices 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 |
Medio: |
893.3 ms |
648.3 ms |
Cómo puede ver, el tiempo de preparación cae en ~27% de medio, lo que puede guardar mucho tiempo preparando los informes con varios datos.
En este artículo hemos mostrado cómo recrear el informe del artículo anterior. AdvancedMatrix permite realizar varios funciones que serían útiles, por ejemplo, la ordenación filtrante TopN, que permite seleccionar cinco registros con los valores calculados más altos.
Puede saber todas las particularidades de este objeto en nuestros documentos.