Crystal Reports es el decano del reporting, cuenta con un número importante de implementaciones tanto en el mundo SAP como fuera de el mismo, explotando especialmente fuentes de datos relacionales. A continuación, ofrecemos unas breves recomendaciones que pueden ayudar a mejorar el rendimiento de los informes en Crystal Reports (versiones 2008, 2011, 2013 o 2016. Algunas también pueden aplicarse en la edición Enterprise o Java) :
- No recuperes la información de las fuentes de datos sin apenas definir criterios de selección, para luego aplicar filtros en el informe. Sugerimos el uso de la función «Selección de registros» (Record Selecction) con la cual puedes definir expresiones SQL.
- Evita tablas no vinculadas, a menos que sean tablas vacías o con un único registro (aun así, mala práctica). Las tablas no vinculadas producirán una combinación de sus registros contra todos los registros de las otras tablas, lo cual se denomina “producto cartesiano”.
- No vincules las tablas por campos no indexados.
- Evita el detalle cuando sólo interesa el agrupamiento. En la medida de lo posible, evitar esta “técnica”, más eficiente resultará realizar el agrupamiento a través de cláusulas SQL del tipo GROUP BY.
- Minimiza el uso de sub-reports y más aun, en la sección de detalles, si es inevitable, utiliza la opción de hipervínculo para que se desplieguen los sub-reports bajo demanda.
- Prescinde de funciones tales como “Página N de M” o TotalPageCount, antes de su uso, Crystal Reports debe contabilizar el número de páginas que tendrá el informe, penalizando, según el volumen de datos recuperados, el tiempo de respuesta.
- Eliminar secciones y objetos no utilizados,
- Evita imágenes de gran tamaño, aun si son redimensionadas en el informe, estas se almacenarán con su tamaño original en el informe. Se sugiere redimensionarlas antes de incorporarlas en el informe.
- Muy pocas veces se justifica el uso de la sentencia WhilePrintingRecords sólo cuando realmente es necesario que se efectué el cálculo mientras se efectua la visualización.
- Evita el uso de variables compartidas, sólo cuando realmente es necesario pasar un valor de un procedimiento a otro.
- Minimiza repetir cálculos, una alternativa podría ser: asignar el resultado del cálculovariable global y posteriormente utilizar esta variable global.
- Evita fórmulas que hagan uso de sentencias iterativas (Loops), especialmente en las secciones de detalle o grupos.