Crystal Reports XI: Manual Avanzado



Documentos relacionados
Operación Microsoft Access 97

Informes. 3. Elija la opción Nuevo (en la parte superior de la ventana) 4. Elija Autoinformes: en tablas y luego la tabla o consulta que se usará.

Formularios. Formularios Diapositiva 1

2_trabajar con calc I

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

Charla N 6: Utilidades de Consulta de datos.

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

La ventana de Microsoft Excel

MANUAL DE USUARIO CMS- PLONE

Manual Word Correspondencia

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Bases de datos en Excel

15 CORREO WEB CORREO WEB

Lo primero que debemos hacer es seleccionar el Cliente en el campo Nombre :

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

QUERCUS PRESUPUESTOS MANUAL DEL USO

MACROS. Automatizar tareas a través del uso de las macros.

Curso Excel Básico - Intermedio

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Operación de Microsoft Word

MS ACCESS BÁSICO 6 LOS INFORMES

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Gobierno del Estado de México

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Nota: Se puede tener un acceso directo definido o podemos entrar a través de la

TÉCNICAS DE GESTIÓN ADMINISTRATIVA PARA PEQUEÑAS EMPRESAS

Acronis License Server. Guía del usuario

Tabla dinámica. Vamos a crear una tabla dinámica a partir de un conjunto de datos.

PowerPoint 2010 Modificar el diseño de las diapositivas

Versión 1.0. BOLETÍN (JUNIO 2009) a2móvil PC. a2 softway C. A.

APLICACIONES INFORMÁTICAS de BASE de DATOS


Cuentas Contables. Para Generar y/o modificar las cuentas contables hay que ir a: Parámetros Plan de Cuentas Cuentas Contables

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Centro de Capacitación en Informática

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

MICROSOFT WORD 2007 AVANZADO. Unidad Didáctica Nº 1

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

Manual de usuario de Solmicro BI. Página 1

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

MÓDULO 2: TRATAMIENTO DE DATOS CON HOJA DE CÁLCULO. Tema 1: Gestión de listas de datos y tablas dinámicas. Leire Aldaz, Begoña Eguía y Leire Urcola

Tutorial: Primeros Pasos con Subversion

Trabajar con diapositivas

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

Combinar correspondencia (I)

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

GVisualPDA Módulo de Almacén

Internet Information Server

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

A25. Informática aplicada a la gestión Curso 2005/2006 Word Tema 3. Formato de sección.

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II

Manual de ACCESS Intermedio

CÓMO CREAR NUESTRO CATÁLOGO

Delphos Portal GUÍA PARA LA CONSULTA DE LA INFORMACIÓN SOBRE PÉRDIDAS OCASIONADAS POR EVENTOS NATURALES MÓDULO DE PÉRDIDAS

Microsoft Access proporciona dos métodos para crear una Base de datos.

Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!)

3. Presionar en el botón Buscar para obtener el siguiente cuadro:

CONSULTAS BASICAS EN SQL SERVER

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Operación de Microsoft Excel

vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

MANUAL DEL USUARIO: EDITOR E-COMMERCE

Guía de uso del sistema CV-Online

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Fundamentos CAPÍTULO 1. Contenido

Guía N 1: Fundamentos básicos(i)

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

Toda base de datos relacional se basa en dos objetos

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL

Kepler 8.0 USO DEL ERP

Paso 1 de 13. Paso 2 de 13. Guía de aprendizaje de Flash CS5 Tutorial 3. Creación de un logotipo textual.

Curso de PHP con MySQL Gratis

MANUAL DE USUARIO TARIFICADOR SIPTAR Y REPORTES SIPTAR.

SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos

WINDOWS. Iniciando Windows. El mouse

Guía de inicio rápido a

Kaldeera Advanced Forms 2009 Guía del usuario

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

Base de datos en Excel

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Manual de configuración de Thunderbird ÍNDICE

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

MATERIAL 2 EXCEL 2007

Para aquellos que tengan conocimientos de Access es lo más parecido a una consulta de referencias cruzadas, pero con más interactividad.

Manual de OpenOffice Impress

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Transcripción:

Crystal Reports XI: Manual Avanzado 1

INDICE Iniciando un nuevo reporte... 4 Secciones del Reporte... 6 Formato de los objetos... 6 Utilizando objetos de textos... 7 Importante... 7 Selección de Registros... 9 Refrescando el reporte VS. Usando datos guardados... 9 Limitando datos con el criterio de selección de grupos... 10 Consideraciones de Performance... 10 Ordenando, Agrupando y Sumarizando... 11 Agrupando... 11 Importante... 12 Sumarizaciones más utilizadas... 12 Top N / Botton N... 14 Problemas que surgen al insertar grupos... 14 Campos de Fórmula... 15 Variables en fórmulas... 16 Running Total... 16 Formato Avanzado... 17 The Hightlighting Expert... 18 Formato de las Secciones... 20 El Section Expert... 20 Parámetros... 22 Seteando valores por default... 23 Métodos para generar las Listas de Valores Dinámicas... 23 Utilizando Listas de Valores Dinámicas ya existentes... 24 Otro uso de los parámetros... 24 Objetos Cross Tab... 26 Cambiando el objeto Cross Tab... 26 Suprimiendo Subtotales y etiquetas... 27 Mejorando la apariencia de un Cross Tab... 27 Importante... 27 Subreportes... 28 Gráficos... 30 Chart Expert... 30 Chart Analyzer... 32 Anexo A: Forma en que Crystal Reports genera los reportes... 33 Anexo B : Haciendo reportes desde bases de datos SQL... 36 Logearse a SQL Database... 36 Drivers de Acceso Directo... 36 ODBC... 36 Cambiar un reporte de una base PC Style a una Cliente/Servidor... 36 Linkeando Tablas... 37 Diferencias de Linking entre PC-Style y SQL Databases... 37 2

Usando múltiple tipos de base de datos en un mismo reporte... 37 Tipos de Join... 38 Tabla de la Izquierda y Tabla de la derecha... 39 Sentencias SQL... 39 Usando SQL Stored Procedures... 39 Usando SQL Expresión Fields... 40 Agrupando en el Servidor... 40 Efectos del Drill Down... 40 Consideraciones de Performance... 40 Anexo C : Otras Consideraciones... 41 Instalación Crystal Reports... 41 Instalación Crystal Reports for.net... 41 Actualización... 42 Compatibilidad con versiones anteriores... 42 Notas y limitaciones... 43 Integración con Crystal Enterprise... 45 Impresión y exportación... 46 Acceso a datos... 46 3

Iniciando un nuevo reporte Se puede comenzar a construir un reporte de 2 formas diferentes: Mediante los asistentes o desde un reporte en blanco. Report Expert: Existen 4 asistentes diferentes, los cuales mediante diferentes ventanas permiten, paso a paso, armar el reporte. Standard: Éste es el asistente más genérico y usado. A través de los tabs, del mismo, se puede no solo seleccionar la fuente de datos, las tablas, hacer los links, seleccionar los campos a visualizar en el reporte, sino también ordenar los registros, agruparlos, insertar sumarizaciones, insertar filtros y gráficos. Mail Label: Etiquetas para cartas. Cross Tab: Permite crear reportes en los cuales los datos son mostrados en un objeto Cross Tab. OLAP: Este asistente está orientado a realizar reportes con fuentes de datos multidimensionales, permitiendo desplegar la información de los cubos en una grilla muy parecida al cross-tab. Crystal Reports posee conectividad con: Business Warehouse, Essbase Cube, IBM DB2 Cube, OLE DB for OLAP, Informix MetaCube, Holos HDC Cube. 4

También se puede comenzar eligiendo la opción de un reporte en blanco. Mediante esta opción, lo primero que hay que hacer es seleccionar la fuente de datos. Una vez seleccionada la misma, se puede comenzar a desarrollar el reporte. Mediante el Explorador de Campos, el cual se accede desde el menú o desde la barra de herramientas, se pueden elegir los campos de la fuentes de datos seleccionada y otros tipos de campos, que explicaremos a lo largo del documento, con los que queremos armar el reporte. En cualquiera de las dos opciones que utilizamos para armar un reporte, si elegimos mas de una tabla, automáticamente va a aparecer una ventana llamada Visual Linking Expert, mediante la cual podemos establecer las relaciones entre las tablas seleccionadas previamente. Estos links o Join, se pueden establecer con diferentes opciones. 5

Secciones del Reporte Para el desarrollo de cualquier reporte, es necesario e importante conocer las distintas secciones que estos tienen, ya que es en ellas donde se colocan los diferentes campos, fórmulas, gráficos y sumarizaciones. Sección Cuándo aparece??? Qué colocar??? Report Header Aparece una sola vez y al principio del reporte. Títulos, logo de la empresa, gráficos, objetos cross-tabs, líneas, etc. Page Header Aparece en el encabezado de cada página tantas veces como páginas Títulos de Columnas, líneas, fórmulas, etc. contenga el reporte. Details Aparece tantas veces como registros haya en la fuente de datos. Campos de la fuente seleccionada, fórmulas, texto, etc Report Footer Aparece una sola vez y al final del Totales, gráficos, cross- tabs, etc. reporte. Page Footer Aparece en el pie de cada página tantas veces como páginas contenga el reporte. Número de páginas, texto, etc. Formato de los objetos Al insertar un objeto, Crystal le pone un formato por default, que se puede cambiar ya sea desde el Report Options y/o Crystal Options. Los cambios toman efectos a partir del momento en que se hacen. 6

Utilizando objetos de textos Los objetos de texto se insertan desde el menú o la barra de herramienta. Se pueden posicionar en cualquier sección del reporte pero generalmente son insertados en el Report Header, y/o Page Header. Éstos pueden ser editados libremente con una barra de herramienta muy parecida a la utilizada en los productos de Microsoft Office. Importante Los objetos de tipo texto se pueden combinar con campos de la fuente de datos o campos de fórmulas o parámetros. Supongamos que tenemos la siguiente situación: disponemos de dos campos de la fuente de datos de tipo string y el contenido del mismo es de longitud variable. Un campo contiene el nombre del cliente y el otro el apellido y queremos mostrar primero el apellido, a continuación una coma, y después el nombre. Para resolver esto, insertamos ambos campos separados por una coma dentro de un objeto texto. Al insertar un campo dentro de un objeto de texto, éste se ajusta el tamaño del mismo resolviendo el inconveniente propuesto, quedando no solo en forma mas prolija sino también en un solo campo, permitiendo de este modo tratar al mismo como un objeto único, para moverlo o darle formato en forma global si así lo quisiera. Se pueden combinar también con campos especiales (Son campos incluidos en Crystal Reports, como número de página, título, autor, etc.), parámetros o fórmulas. Consideraciones de Performance Crystal Reports debe hacer muchos cálculos internos para combinar y ajustar el tamaño, que degradan la performance. Por lo tanto se recomienda combinar objetos de texto con campos, pero en secciones que no se repitan tanto, como los Headers y/o Footer. Si se inserta en la sección detail se procesa cada vez que se lee un registro, si es necesario se recomienda usar fórmulas que son mas performantes. Tratar de no usar el clásico Pag. xx de xx, debido a que el reporte debe calcular el total de páginas antes de poder mostrar la primer pagina. Es decir, que de no usar este tipo de campos, Crystal Report muestra la primer 7

pagina sin tener que darle formato a las páginas siguientes, lo cual hace que en reportes extensos, sea sumamente performante. 8

Selección de Registros A través del Record Selection Fórmula se pueden filtrar los registros que son leídos de la fuente de datos y traídos al reporte. Sirve principalmente para evitar, en bases de millones de registros, traer todos los registros, incluso los que no nos interesan. En síntesis, vendría a hacer la cláusula WHERE de una consulta SQL, aquí también se pueden combinar diferentes criterios de filtro relacionándolos por medio de and o or. Refrescando el reporte VS. Usando datos guardados Cuando se hace un preview de un reporte por primera vez, Crystal tiene que leer la fuente de datos, es decir genera una consulta SQL (en base a los campos utilizados en el reporte y a los filtros utilizados) y la ejecuta, para poder mostrar los resultados. A su vez, los registros que devolvió dicha consulta son almacenados en memoria o en archivos temporarios, lo cual le permite a Crystal que ante modificaciones de formato use los datos guardados, mejorando notoriamente la performance en tiempos de desarrollo. Al agregar nuevos campos al reporte, Crystal hace un refresh, es decir, regenera la consulta SQL (debe traer nuevos datos) y la ejecuta. Si se modifica el criterio de selección o de filtro, Crystal le ofrece al usuario que está desarrollando el reporte, hacer un refresh o usar los datos almacenados realizando el filtro sobre los datos guardados en memoria. Tener especial cuidado con este punto!!! Ya que suponiendo que el último refresh realizado no abarque a los registros de un nuevo filtro que apliquemos y además seleccionamos Usar los datos almacenados, como resultado obtendremos cero (0) registros, lo cual no significa que la fuente de datos no contenga registros para este nuevo filtro aplicado, ya que en ningún momento Crystal aplicó este filtro directamente en la fuente de 9

datos, sino que, lo aplicó a los datos guardados. Deberíamos hacer un refresh para cercioraron que el resultado anterior es correcto. Cuando se usa el select expert con una base de tipo PC-Style, hay que tener en cuenta que son case sensitive, por lo cual hay que estar atento al escribir la fórmula. Usar la función uppercase (campo)= Criterio en mayúscula. Limitando datos con el criterio de selección de grupos La selección de registros según el caso ocurre al momento de hacer la consulta a la fuente de datos o en la primera pasada, antes de que los datos sean agrupados y sumarizados, por lo tanto no puede ser aplicado a subtotales, ni a sumarizaciones etc. Por lo tanto, de requerir filtrar la información por sub-totales o sumarizaciones, se debe utilizar la opción de Group Selection. Este tipo de filtro se evalúa después de que el group tree, subtotales y sumarizaciones sean calculados, ocultando aquellos grupos que cumplan la condición del filtro aplicado. Consideraciones de Performance La selección de registros es la parte mas crítica del reporte ya que es donde más tarda. Como vimos anteriormente Crystal genera una consulta SQL para leer los registros, con lo cual es fundamental optimizar dicha consulta. Como primer consideración hay que intentar no utilizar funciones de Crystal en el filtro, así el filtro puede ser traducido al lenguaje SQL de la fuente de datos con la que estemos trabajando y de esta manera que sea el motor de la fuente de datos el que haga el trabajo de filtrar los registros y no Crystal, que lo realiza registro a registro a medida que los va leyendo, lo cual es más lento. Para evitar el uso de funciones de Crystal, la herramienta provee, para cierto tipo de base de datos (Access, SQL Server, Oracle) los SQL Expressions que son como fórmulas en las cuales podemos utilizar diferentes funciones (dependen del lenguaje de base de datos) evitando así, usar funciones de Crystal que no son interpretadas. 10

Ordenando, Agrupando y Sumarizando Ordenando Cuando Crystal hace la consulta a la fuente de datos y devuelve los registros, estos se encuentran en el orden en el que estaban almacenados. Sin embargo se puede definir un orden ascendente /descendente desde el menú o desde la barra de herramientas. Se puede ordenar por mas de un campo y no es necesario que éste se muestre en el reporte. Agrupando La agrupación lo que hace es juntar todos los registros que tengan el mismo valor del campo por el cual se está agrupando. Se puede definir un grupo desde el menú o desde el botón en la barra de herramientas en base a un campo de la fuente de datos o una fórmula. 11

Crystal permite definir N grupos en un solo reporte, no hay limitaciones en cuanto a cantidad de grupos se refiere. Al insertar un grupo en el reporte, se crean dos secciones mas en el mismo, por encima y por debajo de la seccion Details o en su defecto del o los grupo/s ya definido/s: El Group Header (Generalmente se coloca el nombre del grupo) El Group Footer (Generalmente se coloca la sumarización). A su vez, al hacer una vista previa, aparece un árbol a la izquierda del reporte, llamado Group Tree, que sirve para acceder de forma mas rápida (Acceso Directo) a un grupo en particular y para visualizar la estructura jerárquica cuando hay múltiples grupos. El usuario final, que consultaría el reporte, puede ocultar el Group Tree mediante las opciones del viewer. Importante Otra de las cosas a tener en cuenta es que la jerarquía generada por los grupos está dada en el orden que se encuentran los mismos. Que significa esto, que si generamos un grupo por País primero (G1) y un grupo por Provincia después (G2), la estructura generada va a estar dada por el G1 y el G2, es decir, por País y después por Provincia. Ahora bien, supongamos que generamos primero el grupo por Provincia (G1), y después generamos el grupo por país (G2), la estructura generada va ser Provincia País, la cual es incorrecta. Cómo corregimos esto?? No es necesario borrar todos los grupos existentes y volver a crearlos en el orden correcto como para que genere la estructura en forma correcta, lo que podemos hacer es corregir el orden de los mismos, o bien arrastrando la sección del grupo en cuestión al lugar correcto o mediante el Change Group Expert por el menú. Una vez, generados él o los grupos, se está en condiciones de poder definir diferentes sumarizaciones en base a ellos. Al agregar un subtotal Crystal lo coloca automáticamente en el footer del o los grupos seleccionados, lo cual no significa que no puedan ir en los header de las secciones involucradas. Para ello simplemente se arrastra. A su vez, los subtotales se pueden copiar y pegar en los diferentes niveles de agrupación que tengamos, ya que éstos, simplemente tienen asociados la operatoria designada, de está forma, evitamos volver a crearlos. Sumarizaciones más utilizadas Sum: Suma los valores de campos de tipo numérico. Count: Cuenta tos los campos leídos ya sean de tipo numérico o string Average: Calcula el promedio Maximum: Calcula el máximo Minimum: Calcula el mínimo Distinct Count: Cuenta los distintos. Si el campo que queremos sumarizar contiene valores nulos la función de sumarización no los va a tener en cuenta. Hay una opción que permite convertir los valores nulos a cero o empty string en Report Options. 12

Variantes en la creación de grupos: Hemos visto anteriormente que para definir un grupo Crystal se basa en campos de la fuente de datos o en fórmulas, agrupando los registros en base a los campos mencionados. Ahora bien, hay dos variantes muy interesantes y utilizadas, en donde podemos especificar la forma en que queremos que se agrupe. La primera opción es la siguiente: supongamos que nuestra empresa realiza ventas en todo América, y en la base tenemos un campo que nos indica en que país se realizo la venta. Si agrupáramos por este campo podríamos obtener las ventas discriminadas por país, pero en realidad lo que a nosotros nos interesa es saber las ventas por Región, es decir, por América del Sur, América Central y América del Norte, y esta agrupación no existe en la base de datos, con lo cual para este caso, Crystal nos da la posibilidad de especificar como queremos agrupar en base al campo País, definiéndole las tres regiones mencionadas y que países integran cada una de ellas, obteniendo así las ventas por región. Ahora, tenemos las ventas por Región pero además queremos saber dentro de cada una de ellas en que países tuve ventas y como se distribuyen, deberíamos volver a agrupar por el campo país. Sin embargo no se puede volver a agrupar por el campo que se uso anteriormente, con lo cual estaríamos frente a un problema. La forma de resolver esto es agrupando por una fórmula que devuelva como resultado el campo país. La segunda opción, es agrupar por tablas de estructuras Padre-Hijo, muy comunes en diagramas multidimensionales por su flexibilidad de generar y mantener jerarquías. Para realizar un grupo y que me interprete automáticamente dichas estructuras, primero se agrupa por el campo Hijo, en forma normal. Luego mediante el menú accedemos a la opción Hierarchical Grouping Options donde podemos definir el campo Padre y la tabulación que deseamos que exista entre los diferentes niveles de la estructura. Drill-Down La importancia de definir grupos, no solo está dada por la posibilidad de mostrar información sumarizada sino también la posibilidad de hacer drill down, la cual nos permite ir explorando la información por los diferentes grupos, bajando de un grupo a otra hasta llegar al nivel de detalle del reporte. 13

Se puede hacer drill down a través del reporte o el Grupo Tree. En el reporte se puede cliquear sobre el Group Name o sobre el valor sumarizado para hacer drill down. En algunas ocasiones se necesita impedir que el usuario haga drill down, por ejemplo sobre los valores que calculó la sumarización. Para resolver este problema se deben insertar campo resultado dentro de un objeto de texto. Top N / Botton N Para poder definir un Top N o Botton N, es necesario que en el reporte exista al menos un grupo y alguna sumarización por el mismo, debido a que se estos se definen en base a un subtotal o una sumarización de un grupo. En la versión XI se incorporó la posibilidad de definir por medio de una formula la cantidad de registros a visualizar, en las versiones anteriores el parámetro N se define de forma fija. Una aclaración importante es que, no se puede hacer un sub-total de los Top N o Botton N, debido a la forma en que Crystal los calcula. Para solucionar esto, se debe usar un campo Runnig Total Problemas que surgen al insertar grupos No quedan bien los encabezados cuando se define múltiples grupos y se utiliza la opción de Drill Down. Este inconveniente fue solucionado a partir de la versión de Crystal Report 8.5, pero la solución propuesta por la herramienta no siempre satisface las necesidades de reporting, con lo cual veremos mas adelante que solución tenemos a este problema, para cualquier versión de Crystal Report 14

Campos de Fórmula Los campo de fórmulas son objetos que se construyen a partir de campos existentes en la fuente de datos con funciones definidas por el usuario de desarrollo y que se manejan como si fuera un campo mas de la base. Obteniendo de esta manera campos o cálculos que no vienen definidos en la fuente de datos. Para insertar un campo de fórmula, se debe ir al Explorador de Campos Al crear una nueva fórmula, primero se le debe asignar un nombre (el cual figura en el Explorador de Campos) y luego se abre el Editor de Fórmulas. Los campos fórmulas pueden ser creados con sintaxis Crystal o con sintaxis Basic, la diferencia radica en el lenguaje de escritura de las mismas. La sintaxis Crystal es un lenguaje muy parecido a los lenguajes de programación pero es un lenguaje propio de Crystal, en cambio, la sintaxis Basic resulta más sencilla para aquellos usuarios que están familiarizados con Visual Basic. 15

El editor de fórmulas, posee tres arboles diferentes. Uno con los campos de la fuente de datos seleccionada, y todos aquellos elementos que se definan en el reporte. Otro con las funciones de Crystal y por último, uno de Operadores, los cuales facilitan al usuario la construcción de fórmulas. Variables en fórmulas Hay ocasiones en las que se necesita mantener el valor registro a registro, lo cual se resuelve mediante el uso de variables. Hay diferentes tipos de variables y con tres diferentes alcances: Local: Mantienen el valor en la fórmula en la que fue definida. Global: La variable mantiene el valor en todo el Reporte. Una variable definida en una fórmula puede ser usada en otra fórmula, incluso en otra sección. Por defecto sino definimos el alcance de un a variable al declararla, este es de alcance global. Shared: Sirven para compartir variables entre un Reporte y un Sub-Reporte, de gran utilidad cuando queremos traer información del Sub-Reporte al Reporte Principal. Running Total Es un campo, que brinda flexibilidad para acumular o incrementar los valores. Se calcula en (WhilePrintingRecords) y hace la operación de sumatoria definida con los datos que van a ser impresos. Algunos de los principales tipos de sumatorias que realiza son: Sum, Count, Average. Sirve para resolver el problema que se tiene al querer sumarizar los valores de cierto grupo que tiene un Top/Botton N, ya que al hacer un Sub-Total de los Top/Botton N, me suma todos los valores de los grupos. No se pueden crear Running Total en base a fórmulas que se evalúan en la segunda pasada, ni en base a graficos y mapas. 16

17

The Hightlighting Expert Formato Avanzado Permite dar formato a los campos dependiendo de los valores que estos tengan. Es de gran utilidad cuando se presenta el caso donde en función de varias condiciones queremos dar formato a un campo, incluso estas condiciones tienen prioridades. La desventaja que posse, es que se debe configurar campo por campo, no podemos hacerlo al mismo tiempo para varios campos. Por ejemplo: Si la deuda es mayor a 1000 mostrar en rojo, si la deuda es menor o igual a 1000 pero mayor a 100 mostrar en azul y si es menos o igual a 100 dejar como está. Para realizar este tipo de formato condicional, es una muy buena opción utilizar el Hightlighting Expert Conditional Formatting Fórmulas El formato condicional usa el editor de fórmulas, mediante el cual podemos crear fórmulas que determinen cuando y como queremos que aparezca el objeto. Formato Absoluto es simplemente darle formato a los objetos con el editor de formato. Si se aplica formato condicional el formato absoluto es ignorado, siempre y cuando en la fórmula que se realice no utilice DefaultAttribute, de lo contrario el atributo por defecto es el que se encuentra seteado. Mediante esta opción si se pueden setear varios campos al mismo tiempo, incluso teniendo en cuenta el valor de cada campo seleccionado. Para poder hacer esto hay que utilizar la siguiente función: CurrentFieldValue 18

Usos creativos de la propiedad Suppress Hay situaciones en la que es muy conveniente usar conditionally suppressing Ejemplos de utilidad: Mostrar la leyenda continuación del grupo cuando se repite el Group Header en distintas páginas; mostrar ciertos mensajes solamente para algunos registros; Usar imágenes una arriba de la otra y que aparezca una o la otra dependiendo de los valores. Imagenes Se puede variablizar la imagen que se sitúa en un Reporte, hacienda variable la ubicación de la misma. 19

Formato de las Secciones Las opciones disponibles al cliquear botón derecho sobre una sección son las siguientes: Insert Line: Inserta una guideline horizontal en dicha sección Delete Last Line: Borra el ultimo guideline achicando el área. Arrange Lines: Fit Section: Ajusta la sección hasta la guia o el campo mas proximo. Es el mas usado de las opciones. El Section Expert Free form placement: Permite mover objetos y que se ajusten a las guías Hide(drill- down ok): Permite ocultar la sección para hacer drill down. Suppress: Suprime la sección y todos los objetos dentro de ella. Es la más utilizada y practica. New Page Before: Empieza una pagina nueva antes de imprimir la sección New page after: Empieza una página nueva después de imprimir la sección Suppress blank Section: Suprime la sección si no hay objetos dentro de ella Underlay Following Section: Cada sección empieza donde termina la anterior. Si esta seleccionada esta opción en la sección B, dicha sección imprime el contenido de la misma, en las siguiente, es decir las secciones siguiente no empiezan donde termina la sección B. Sirve para acomodar gráficos al costado de 20

los datos, poner imágenes de fondo, poner información de un Sub-Reporte como doble columna en el reporte principal 21

Parámetros Los campos parámetros sirven para que el usuario final pueda ingresar datos al reporte, de esta forma se puede hacer variable el reporte tanto en información, si se utiliza para cambiar el criterio de selección de registros, o en formato, si se utiliza para hacer condicional el formato de los campos. Para crear un parámetro se hace desde el Explorador de Campos. Cuando se hace un refresh del reporte y este contiene parámetros, Crystal, ofrece la opción de usar los valores asignados previamente al parámetro o definir nuevos valores. El valor que es ingresado, luego es pasado, según su utilización, al Record Selection Fórmula, o al editor de fórmula de formato condicional del campo que corresponda. Los parámetros también se pueden mostrar en un reporte y manipularlos como los campos de la base o fórmulas. Para los parámetros que permiten múltiples valores o valores de rango, se les deberá hacer un tratamiento especial para mostrar en el reporte los valores ingresados por el usuario. Los tipos de parámetros pueden ser Simples o en Cascada, donde los tipos de datos van acorde a los posibles en Crystal Reports. Los parámetros simples son aquellos parámetros que solo tienen definido un solo nivel de carga y el valor a ingresar no depende de otro valor ingresado. En cambio los parámetros en cascada pueden tener diferentes niveles de carga de valores, donde cada uno de ellos va filtrando los valores de los niveles inferiores. Por ejemplo, si tuviéramos que realizar un reporte de clientes, donde el filtro del mismo, sea la ciudad, podemos realizar un parámetro en cascada con los siguientes niveles de carga: País Región Ciudad. De este modo el usuario primero seleccionara un País, luego cuando vaya a seleccionar una región, solo verá las regiones del 22

país previamente seleccionado. Luego de seleccionar una región deberá seleccionar la ciudad, donde solo verá las ciudades correspondientes a la región previamente seleccionada. En el caso de los parámetros en cascada podemos generar un parámetro para cada nivel o simplemente generamos un solo parámetro para el último nivel de la cascada. Seteando valores por default A los parámetros se le pueden setear valores por default, con el fin de que cuando el usuario consulte el reporte y tenga que ingresarle un valor al parámetro, le aparezca un lista desplegable con los posibles valores del parámetro. Es importante aclarar que los valores por default pueden ser estáticos o dinámicos. En el primer caso los valores por defecto no se actualizan, por ejemplo, si estamos seteando los valores por defecto del parámetro sucursal y cargamos las 5 sucursales con las que hoy cuenta la empresa, si el día de mañana se abre una nueva sucursal esta no se va a visualizar en los valores por defecto del parámetro. Con lo cual, en este caso deberíamos abrir el reporte e incorporar el nuevo valor correspondiente a la nueva sucursal. Ahora bien, si definimos los valores por defecto como dinámicos, los mismo se actualizarán según los valores que se encuentren en la base de datos, es decir, siguiendo con el ejemplo de la sucursal, nosotros solo definiríamos de que campo de la base de datos debe tomar las diferentes sucursales y en el caso que se incorporen nuevas sucursales estas aparecerán en los valores por defecto, ya que justamente el valor no es estático sino dinámico. A su vez, al parámetro se le pueden incorporar validaciones básicas, para que valide el valor ingresado por el usuario. Para los parámetros que son numéricos, se puede declarar un valor inferior y otro superior, limitando el ingreso de valores fuera del rango establecido. Para parámetros de tipo string, se puede validar el largo de la cadena, ya sea especificando el mínimo y máximo números de caracteres que el usuario tendrá que ingresar o mediante el Edit mask. Métodos para generar las Listas de Valores Dinámicas Desde Crystal Reports: Al generar un parámetro dinámico utilizando como fuente de datos las tablas seleccionadas en el reporte, podemos generar la lista de valores dinámicas. Ahora bien, la misma, no estará disponible en el repositorio hasta que no se publique el reporte en Enterprise, ya que al verificar que el reporte tiene un parámetro dinámico Enterprise genera la lista dinámica en el repositorio. Desde el Business View Manager: Desde aquí uno podría generar y/o modificar todas las listas dinámicas que necesite. Los pasos para generar una Lista Dinámica de cero son los siguientes: 1) Generar una Conexión: Desde aquí, se configura el driver de conexión a la base de datos deseada. 2) Generar un Data Fundation: Diagrama de Tablas Relacionado 3) Generar un Business Element: Modelo conceptual de una o mas tablas de un Data Fundation 23

4) Generar un Business View: Conjunto de Business Element, del cual un usuario final podría desarrollar reportes, sin tener que conocer el Modelo de Datos Relacional. 5) Generar una Lista de Valores: La lista de valores se genera en base a un Business View 6) Configurar el esquema a utilizar para la actualización de la Lista de Valores, es decir, se puede configurar que se actualice cada n segundos o programar la actualización de la lista, similar a un scheduled de un Reporte en Enterprise. IMPORTANTE: Al visualizar el Reporte en enterprise puede suceder que se solicite ingresar usuario y password de la base de datos donde se obtiene la lista dinámica. Para que esto no suceda se debe setear en la conexión que utiliza la Lista Dinámica, que no pregunte usuario y password cada vez que se ejecuta la lista y definirle un usuario y password para realizar la conexión. Utilizando Listas de Valores Dinámicas ya existentes Las listas de Valores Dinámicas al ser almacenadas en el Repositorio de Enterprise, están disponibles para ser reutilizadas. De este modo, volviendo al ejemplo del parámetro de sucursal, si tuviéramos 5 reportes que contienen dicho parámetro no es necesario generar la lista de valores dinámicos 5 veces sino que se define una vez, se almacena en el repositorio y luego se reutiliza en los otros reportes. Utilizando Listas de Valores Dinámicas con Stored Procedure En el caso de que la fuente de datos de nuestro reporte es un Stored Procedure y queramos que un parámetro del mismo tenga valores por defecto en base a una lista dinámica, debemos primero generar la lista dinámica por medio del Business View Manager y después si linkearla con el parámetro del Stored Procedure. Ahora bien, si nosotros tenemos parámetros en nuestro Stored Procedure que están relacionados, es decir, queremos utilizar parámetros de tipo Cascada, no es posible asignarle a los parámetros del Stored Procedure, los diferentes niveles de la Lista de Valores, lo que si es posible asignarle el último nivel, que en el caso de que sea único el valor del ultimo nivel no habría problemas, ya que alcanzaría con ese valor para filtrar la información. Como podemos resolver este inconveniente si no es único el código de nuestro nivel inferior?? Para resolver esto deberíamos generar cada nivel de nuestra lista de valores dinámicos, como una combinación del valor del nivel actual con los niveles superiores concatenados, por ejemplo con.. Esto se realiza por medio de formulas en el BVM. De esta manera obtendremos un código único en el menor nivel, y en el Stored Procedure descomponemos esta combinación para poder filtrar en nuestra base de datos por los valores de los diferentes niveles. Otro uso de los parámetros Los parámetros, como mencionamos anteriormente, se pueden ser usados también para dar formato condicional. A continuación se mencionan varios ejemplos de este uso. a) Se puede esconder información a los usuarios dependiendo de algún password que ingresen. b) Se pueden resaltar valores dependiendo a un tope ingresado por el usuario. c) Se le puede dar formato a los números y a las fechas del reporte, dependiendo de un parametro Idioma, donde pueden ingresar si lo quieren ver en formato español o ingles. 24