DevExpress Reports - Guía del diseñador de informes

Creado por Aitor del Prado, Modificado el Lun, 10 Jun a 12:15 P. M. por Aitana Ferrandis García

TABLA DE CONTENIDOS


Introducción


En este artículo, vamos a ver todos los conocimientos que deberían tenerse antes de empezar a crear informes de DevExpress o realizar la conversión de uno ya existente en Crystal Reports.


Ficheros de un informe


A diferencia de Crystal Reports, donde un solo fichero contiene el informe y los subinformes que contiene, DevExpress los separa por cada uno de los sub informes que contiene. Es decir, tendremos un archivo para el propio informe y uno más por cada sub informe. 



Formar consultas de SQL


Un punto importante de los informes son las consultas, que van a a determinar los datos que vamos a visualizar.


Para acceder a la gestión de consultas, vamos a colocarnos sobre el origen de datos válido, haremos 'click derecho' -> 'gestionar las consultas...'



Consulta


Esto nos mostrará la gestión de las consultas, con una lista de todas las consultas del informe. Cuando creemos un informe desde cero, esta lista estará vacía, pero podremos añadir una rápidamente pulsando 'añadir'.



Es ahora cuando, en el buscador de tablas y vistas, arrastraremos al recuadro central la tabla o vista que queramos. Tras hacer esto, aparecerá con todos sus datos, y podremos marcar rápidamente todas sus columnas marcando el la casilla junto al nombre.



Los elementos de esta ventana se pueden redistribuir como queramos, arrastrando en los bordes que los separan, y además, podremos ocultar el recuadro con la consulta SQL escrita, pulsando en la flecha en su lado izquierdo.


Cuando incluimos manualmente una tabla o vista, los campos sólo tendrán alias asignado de forma automática cuando existan dos campos con el mismo nombre. Cuando la consulta se ha generado tras una conversión desde Crystal Reports, todos los Alias de tablas y vistas se asignan automáticamente, independientemente de que otra tabla o vista tenga una columna con el mismo nombre.


Este recuadro central es una forma de visualizar la consulta que se va a realizar, y podremos navegar a través de ella manteniendo el botón de la rueda del ratón, y haremos zoom manteniendo la tecla 'ctrl' y subiremos o bajaremos con la rueda dependiendo del zoom que necesitemos.


Una vez tengamos colocada la primera tabla o vista, existen dos formas de añadir más tablas.


Sugerencias de unión


Esta es la forma más simple, y se hará a través de las columnas que tengan un '+' en su derecha, sólo aparecerá en las columnas que DevExpress sepa que tienen relación con otra. Si pasamos por encima del '+', nos dirá con que tabla y campo se unirá si lo pulsamos.



Una vez pulsemos el '+', se añadirá la tabla o vista y se relacionará automáticamente con la tabla y campo que nos había comunicado con anterioridad.



El tipo de unión por defecto utilizado de esta forma será 'inner join', pero también si hacemos doble 'click' sobre la 'flecha' de relación, podremos editar el tipo de unión a través del desplegable.



Añadir nuevas tablas


Podremos incluir tantas tablas o vistas como queramos igual que hemos incluido la primera, arrastrándola desde la lista de tablas y vistas. Cuando coloquemos una tabla o vista nueva, podrán pasar dos cosas:


La primera, es que al dejar caer la tabla o vista, nos aparezca el editor de relaciones, donde se nos pedirá qué tabla y qué campo vamos a relacionar con el campo que elijamos de la tabla que acabamos de colocar, así como el tipo de unión.


La segunda, es que la relación se haga automáticamente. Normalmente sólo nos hará falta modificar el tipo de unión, pero a veces DevExpress se equivoca, y tendremos que eliminar la relación, y crearla manualmente.


Eliminar y formar elaciones manuales


Podremos eliminar una relación que no queramos, si le hacemos un 'click' en la flecha de la relación, y pulsamos 'suprimir'.


Para que una tabla pueda estar en el editor de consulta, obligatoriamente debe tener una relación, sino será eliminada. Normalmente en casos de tablas con una sola relación que queramos sustituir, primero añadiremos la relación manual, y después eliminaremos la incorrecta, para evitar que la tabla desaparezca.

También podremos crear relaciones manuales, si arrastramos el campo de una tabla, y lo llevamos al campo de otra tabla con el que lo queramos relacionar.


Procedimiento almacenado


El botón 'añadir', por defecto nos creará una consulta, donde sólo se podrán utilizar tablas y vistas, pero también se pueden obtener datos de procedimientos almacenados, para añadir uno, tendremos que pulsar el desplegable que se encuentra a la derecha del botón 'añadir', y seleccionar 'procedimiento almacenado'.



Cuando lo creemos, nos aparecerá una lista de todos los procedimientos almacenados que existen en la base de datos, así como los parámetros que requiere cada uno para funcionar.



Una vez seleccionado el procedimiento almacenado, tendremos que pulsar el botón 'editar parámetros', y asignarle un valor a cada parámetro.


Por defecto nos permitirá asignar un valor fijo.



Pero si se marca la casilla 'expresión', se le puede asignar una expresión, utilizar parámetros ya creados para el informe, o crear uno nuevo desde esta misma ventana.



Lo más común es utilizar los procedimientos almacenados en subinformes, ya que se aprovechan los parámetros que se le pasan para ejecutar el procedimiento.


Edición manual de SQL



Se pueden editar directamente por código SQL las tablas, vistas y relaciones de la cadena de conexión. Sin embargo, no lo recomendamos a no ser que sea como último recurso. Al editar el código SQL se modifican completamente las tablas, vistas y relaciones, impidiendo completamente su edición por interfaz gráfica arrastrando y editando las tablas.  


Elementos del informe


Aunque no haya una gran variedad de elementos diferentes, hay suficientes como para cubrir todo lo que vayamos a necesitar normalmente.


Todos los elementos funcionan de la misma forma, una vez seleccionados en el apartado de la izquierda, crearemos un 'recuadro' con la forma aproximada en la zona donde queramos tener el elemento arrastrando el ratón, como si estuviésemos seleccionando un área.


También podremos colocar algunos elementos que ya tienen asignados valores de base de datos. Si vamos al apartado 'lista de campos' a la derecha del diseñador, y desplegamos la consulta que corresponda, podremos arrastrar los campos que queramos directamente al informe. A diferencia del método anterior, el tamaño de estos ya estará definido, y sólo podremos elegir su posición.


En los siguientes puntos se enumerarán los elementos más utilizados en los informes, así como los principales puntos a conocer sobre cada uno.


Etiqueta


El elemento más simple, pero que al mismo tiempo, es el más utilizado. Nos servirá para poner textos fijos, campos de base de datos o textos con valores obtenidos de una expresión o campo calculado.



Una vez colocados y asignado su valor, podremos realizar algunos cambios para ajustarnos al comportamiento y visualización que esperemos.


Sumatorios


Muchas veces, en los informes, nos va a interesar hacer sumatorios de líneas o de un dato sobre todo el informe. Para conseguir hacerlo, vamos a colocar en el informe el campo al que queramos hacerle sumatorio.


Una vez colocado, usaremos el asistente de 'sumario', pulsando los 'puntos suspensivos' que se encuentran en la derecha del desplegable.



Esto nos abrirá el 'editor de totales', donde, normalmente, sólo nos hará falta modificar el 'resumen ejecución', y este normalmente será de 'grupo'.



Aunque existen más opciones, que deberían al menos, conocerse, por si en algún momento surgiese la necesidad de usarlos.



Formateo de campo


Algunos datos no se visualizarán directamente de la forma que esperamos, así que tendremos que formatearlos. Un caso donde vamos a tener que hacer esto será con los campos de tipo fecha


Para hacerlo, simplemente modificaremos la propiedad 'Cadena de Formato' de la etiqueta abriendo el editor:



Una vez aquí podremos modificar el formato con el que queramos mostrar el dato.



Casilla de selección


Son campos sencillos, que mostrarán un 'check' dependiendo del valor que tengan asignado.



Hay campos de base de datos que si se arrastran al informe desde la lista de campos, aparecerán con este tipo de elemento en vez de una etiqueta, y se pueden identificar fácilmente porque están acompañados de un 'check' en la lista de campos.



Cuando hayamos colocado el elemento, teniéndolo seleccionado, podremos elegir entre diferentes estilos para visualizar el campo dentro de 'Glyph Options' -> 'Estilo'.



Caja de imagen


Para mostrar una imagen, ya sea a través de un texto en base 64, la URL a una imagen, o la ruta a un archivo, lo colocaremos en la propiedad 'URL de la imagen'.



En cuanto a la visualización, normalmente utilizaremos 'Ampliar Imagen', ya que intenta adaptar la imagen al tamaño del contenedor, manteniendo la relación de aspecto original.


La alineación de la imagen dependerá de las necesidades de cada momento, pero el valor más común y correcto en cuanto a visualización será 'medio izquierda'.


Panel


Este elemento es muy útil en cuanto a organización del espacio, ya que hará la función de caja, manteniendo en su interior los elementos que le coloquemos dentro.



Los elementos que coloquemos dentro, se moverán junto al panel cuando lo movamos, ya que como se podrá ver en el explorador de informes, los elementos que coloquemos dentro, están colocados en su interior.



Subinforme


Al colocar este elemento en el informe, estaremos diciendo que, queremos que otro archivo se visualice en el lugar que hayamos designado, normalmente estando enlazado con el informe principal, a través de parámetros, que luego usará el subinforme para formar filtros.



Para saber cómo enlazar un subinforme con el informe principal, revisar el siguiente apartado.


Información de la página


Este elemento es algo más complejo que el resto, y está definido en el siguiente apartado.


Recuadro de banda cruzada


Para acceder a este elemento, tendremos que desplegar la flecha localizada en la esquina inferior izquierda.



Una vez seleccionada, este elemento a diferencia del resto, no está limitado a una sola sección. Podremos hacer que atraviese tantas secciones como necesitemos, teniendo en cuenta, que para que no nos salga un aviso, el inicio y el fin del elemento debe estar en la misma sección, o en una sección opuesta.


A diferencia de los paneles, los elementos que coloquemos en su interior, para el informe estarán colocados como si fuesen elementos sueltos sin relación al recuadro. Así que si movemos el elemento, todo lo que tenía 'dentro' se mantendrá en el sitio.


Sólo deberíamos utilizar este elemento cuando sea necesario cruzar secciones, en el resto de casos, lo mejor es utilizar paneles



Existen casos donde nos aparecerá el aviso, pero no significará que debamos arreglarlo, ya que es posible que necesitemos colocarlo de la misma forma. Este aviso nos comunica que es posible que no todo se comporte como esperamos.


Es importante saber que, si modificamos la altura de la sección donde está colocado el final de este elemento, este se va a mover a la vez, pero no la misma cantidad.


Pie de página


Entre todos los elementos que se pueden colocar en un informe, la información de la página es de las más comunes, y de las más sencillas de configurar en cuanto a opciones.



Una vez colocado, se puede modificar la información que mostrará, con una lista para elegir los posibles datos.



Vamos a ver las opciones más comunes para este elemento y cómo se pueden llegar a personalizar para adaptarse a ciertas necesidades.


Fecha y hora actual


Si seleccionamos la opción, por defecto la fecha aparecerá de la siguiente forma



Si queremos visualizar la fecha de otra forma, o mostrar también la hora, tendremos que seleccionar la opción 'Text Format String'



Seleccionar la opción, nos permitirá elegir entre muchos formatos de fecha y hora disponibles, una vez encontrado el que queramos, lo seleccionamos y pulsamos 'Aceptar'.



Ahora la fecha aparecerá aplicándose el formato que hemos elegido.


Número de página


Tras seleccionar la opción, se verá solamente el número, pero si queremos modificarle el número de página que toma como inicio, o también podemos formatearlo para que nos muestre un texto mejor, utilizaremos directamente el campo de texto 'Text Format String', y escribiremos cosas diferentes dependiendo de cómo queramos que quede



Cuando tenemos la opción 'Número de Página' seleccionada, podemos utilizar "{0}" en el campo 'Text Format String' para referenciar el número de la página, así que, por ejemplo, colocar "Página: {0}", mostrará lo siguiente:



Además de esto, es posible que queramos reiniciar el número de la página para que, por ejemplo, al imprimir varias facturas, cada vez que se empiece una factura nueva, el número de página se reinicie. 


Para conseguir este efecto, modificaremos la propiedad 'Banda de Suma y Sigue':



A esta propiedad le asignaremos el encabezado de grupo que tenga la agrupación sobre la que queramos reiniciar la página, es decir, en este caso, el encabezado de grupo 'GroupHeaderArea1' agrupa por IdAlbaran, en cuanto el IdAlbaran cambie, se reiniciará el número de páginas.


Números de página actual de total


Esta opción se comporta exactamente de la misma forma que el apartado anterior, solo que por defecto las páginas se muestran así.



Tenemos acceso a "{0}" (número actual de página) y "{1}" (número total de páginas), por lo que podríamos colocar "Página {0} de {1}", y se verá lo siguiente:



Y el reinicio de número de página afecta tanto al número actual como al total.


Filtros


Existen varias formas de aplicar filtros, cada una con sus diferencias, que se recomiendan conocer antes de aplicar un filtro.


Filtros SQL


Estos filtros, como su nombre indica, se realizarán en la consulta SQL, y por tanto, no aumentarán la carga de la consulta de forma excesiva en caso de utilizar una base de datos con muchos registros o un servidor con mucha carga de trabajo.


Se puede aplicar tanto en informes como en los subinformes, accediendo desde el informe principal, a la lista de consultas, pulsando en el botón "y filtro..." de la parte inferior izquierda.



Aquí podremos colocar directamente los filtros estáticos, que utilizarán una nomenclatura ligeramente diferente a la normal, siendo esta "(tabla).(columna)".



Este tipo de filtros no se deben utilizar en los informes principales en versiones anteriores al hotfix 30, ya que resultará en un error. Para esas versiones, se tendrán que colocar filtros locales.



También podremos utilizar parámetros, tanto en informes principales como en subinformes, pulsando el botón "Editar parámetros" de la lista de consultas del informe.


En esa ventana, añadiremos en la lista, los parámetros que queramos que se utilicen para el filtrado, y después los añadiremos al filtro.


Filtros Locales


Los filtros locales, se aplican después de obtener los datos de la base de datos a través de la consulta inicial de SQL. Mientras esta es una opción que funciona, podría llegar a afectar al tiempo de generación del documento, por lo que no es recomendable.


Los únicos casos donde no tiene un gran efecto en el tiempo de generación del documento, son aquellos en los que el origen de los datos es un procedimiento almacenado, y se quiere aplicar algún filtro extra sin aplicárselo al procedimiento.


Además de esto, los filtros de los informes principales, que utilicen parámetros, tendrán que colocarse en los filtros locales para evitar que falle la generación del informe.


Campos calculados


Los campos calculados en DevExpress son los 'campos de fórmula' de Crystal Reports, y que tendremos que comprobar uno a uno para validar que todo se ha convertido correctamente.


Para acceder a ellos, simplemente iremos a la 'Lista de campos', desplegaremos los 'DataSources' que nos permita, y sobre cualquiera de los elementos que se han desplegado haremos 'click derecho' -> 'Editar campos calculados'



Esto nos mostrará la lista de campos calculados en el informe, pero para acceder a los campos calculados de los subinformes, será necesario hacer esto en cada uno de los informes.



Aquí podremos crear nuevos campos calculados, y editar o eliminar los ya existentes.


Data Member


Esta propiedad de los campos calculados será de las más importantes, ya que, si no la definimos, correremos el riesgo de, que al intentar referenciar un campo, obtengamos el campo de otra consulta diferente, o que directamente no obtengamos ningun dato.


Deberemos asignar el 'DataMember' si queremos  referenciar otro campo calculado o una columna de base de datos, ya que si no lo hacemos, no DevExpress no los relacionará y acabaremos con campos vacíos.


Expresión


Podemos editar la expresión asociada al campo calculado pulsando el botón de la derecha del campo 'expresión':



Esto abrirá el editor de expresiones, al abrirlo, en la parte inferior, tenemos un asistente que nos muestra todos los valores, operadores y funciones disponibles.



En caso de haber algún problema con la expresión que tengamos, nos lo hará saber sin tener que cerrar el editor:



También podremos comentar expresiones utilizando "/*" para abrir el comentario y "*/" para cerrarlo:



Funciones de agregado


Las funciones de agregado nos servirán principalmente, para utilizar cuentas y sumatorios en campos calculados, cuando debamos aplicar algún tipo de lógica.


Normalmente una función de agregado tiene la siguiente estructura:


[][(condicion)].(funcion)

El primer par de corchetes, determinan que vamos a partir de todos los datos del informe, que será lo más común.


En el segundo, colocaremos las condiciones que queramos, como por ejemplo, si vamos a mostrar el número total de líneas de un albarán, tendremos que especificarlo de la siguiente forma:

[][[Albaranes_Cli_Cab_IdAlbaran] == [^.Albaranes_Cli_Cab_IdAlbaran]].Count()

En este caso, la condición sólo nos mostrará el "IdAlbarán" ([Albaranes_Cli_Cab_IdAlbarán]) que coincida con el "IdAlbarán" de la página actual ([^.Albaranes_Cli_Cab_IdAlbaran]).


Colocar "^." antes del nombre de la columna, referenciará, en una función de agregado, el valor actual de la columna.


Dentro de los corchetes de condición, podemos colocar múltiples condiciones, utilizando los operadores disponibles.


No se recomienda utilizar funciones de agregado para determinar la visibilidad de un subinforme directamente, en caso de necesitarlo, recomendamos pasarle como parámetro de forma individual cada uno de los valores calculados con funciones de agregado necesarios para realizar la comprobación, para luego colocarlos en el cálculo de la propiedad 'visible' del subinforme completo.


Aunque sí se puedan utilizar, hay que tener en cuenta que las funciones de agregado, recorren todos los registros cada vez que se ejecutan, así que cuanto mayor sea la cantidad de registros y cuantas más veces se repitan los campos, más tardará en visualizarse, por esto es muy importante tenerlo en cuenta y saber cuando buscar una alternativa.


Propiedades por expresiones


Las expresiones de DevExpress también se pueden utilizar para aplicar valores a algunas de las propiedades de los elementos del informe, cada elemento tiene una lista fija de las propiedades a las que se les puede dar valor de esta forma.


Para acceder a la ventana de edición de propiedades por expresiones, podremos acceder seleccionando un elemento y pulsando el botón 'f' que se encuentra debajo del engranaje.



También podremos acceder a la ventana desde el apartado de propiedades, una vez hayamos seleccionado un elemento, en todas las propiedades que puedan tener propiedades, aparecerá un símbolo 'f' a su derecha. Si pulsamos cualquiera de los símbolos se levantará la ventana.



Además, utiliza el mismo editor de expresiones que los campos calculados, cosa que nos facilitará su creación. El valor que se retorne en la expresión será el que se le aplique a la propiedad, el tipo que se debe retornar variará dependiendo de la propiedad que se quiera modificar.


Aunque a diferencia del editor de expresiones de los campos calculados, en el lado derecho tendremos en todo momento una lista de todas las propiedades a las que les podremos asignar valores dinámicos.



Se pueden identificar las propiedades a las que se les ha aplicado una expresión, en la misma ventana, mientras tenga una expresión asignada, aparecerá un símbolo 'f' en la lista de propiedades.



También se podrá identificar desde el apartado de propiedades, donde antes aparecía una 'f', ahora aparecerá un punto.




Además de esto, tendremos, dependiendo de la propiedad, tres apartados nuevos en la lista de ayuda:



Variables


Al seleccionar el apartado, nos aparecerán dos elementos:



  • DataSource.RowCount: hace referencia a la cantidad total de registros obtenidos
  • DataSource.CurrentRowIndex: empezando desde 0, visualiza el índice en el que se encuentra en el momento de visualizarse/interpretarse la expresión.


Ambos se pueden utilizar en la propiedad 'texto' de los elementos, lo que nos puede permitir visualizar esta información de ser necesaria.


Un uso para esta variable podría ser, por ejemplo, visualizar sólo los registros con índice par:



O asignarles colores a las líneas pares:



En este tipo de casos, podremos utilizar tanto los valores que podremos encontrar en la parte inferior, como las funciones 'Rgb()' y 'Argb()', que nos pueden proporcionar mayor control y la posibilidad de especificar mejor el color que vamos a querer utilizar. 


Esta forma de visualizar las líneas pares e impares no siempre se visualiza correctamente, dependiendo del informe, es posible que los colores no alternen siempre, revisar alternar colores de las líneas.


Valores


En algunas propiedades, tendremos acceso a este apartado, que nos mostrará valores aceptados:



Hay casos donde esta lista de valores no incluye todas las posibilidades, como por ejemplo en los colores, que nos muestran una lista 'limitada', pero también acepta colores utilizando 'rgb()' y 'argb()'


Report Items


Este apartado hace referencia a todos los elementos del informe, y nos permite obtener alguna información sobre los elementos para su uso en las expresiones.


Alternar colores de las líneas


En algunos informes es posible que queramos diferenciar las líneas alternando colores de fondo ligeramente para mejorar la legibilidad. Esto es posible, pero dependiendo de la profundidad a la que queramos llegar, aplicaremos de forma diferente los colores.


La idea general es, habiendo colocado todos los elementos dentro de un panel, colocarle a la propiedad 'color de fondo', una expresión que nos colocará un color cuando la línea sea par, y otro cuando sea impar. La formula general que vamos a utilizar será la siguiente:



Dependiendo de lo que queramos, colocaremos cosas diferentes en lugar de 'Número de línea'.


La versión más básica será utilizar 'Datasource.CurrentRowIndex'. Nos referimos a esta como la versión más básica porque el número que nos devolverá será el número de registro del total, lo que hará que el color siempre siga con la alternación de color donde lo dejó la anterior línea.


Por ejemplo, en este caso, utilizando este método, aunque el proveedor haya cambiado, como la línea anterior era blanca, la primera del nuevo proveedor será del otro color: 



Si no queremos que esto ocurra, y queremos que el color vuelva a empezar desde 'cero' sin importar el color que tuviese la línea anterior, tendremos que utilizar funciones de agregado.


Para este caso, la función final debería acabar siendo algo similar a esto:



De esta forma, el resultado será el siguiente:



Al cambiar de proveedor, el color inicial, debería ser blanco.


Aunque las formas anteriores se puedan utilizar, pueden llegar a no funcionar correctamente, o hacer que el informe tarde más de lo que debería en visualizarse.


Es por esto que la forma más recomendable es la siguiente:


Tras haber colocado dentro de un panel que se encuentre en la sección de detalles, vamos a desplegar la propiedad 'estilos', y vamos a seleccionar la opción '(nuevo)' en el desplegable de 'estilo impares'. Una vez seleccionado, nos permitirá desplegar este apartado también, donde podremos colocarle diferentes estilos a las filas impares.



En este caso, podremos seleccionar los colores entre una lista ya definida, o seleccionar cualquier otro utilizando un selector de color.


Es importante entender que esto no funcionará si la sección se encuentra fuera de una sección de detalle, y que puede que no sea posible una correcta coloración que alterne dependiendo de la forma en la que se haga el informe.


Enlazar subinformes


En aquellos informes que tengan al menos un subinforme, será necesario enlazarlos para que los datos que se muestren en ellos sean correctos.


Comenzaremos entrando dentro de un subinforme, haciendo doble click sobre el. Una vez tengamos el subinforme abierto, en el apartado derecho, en la 'Lista de campos', haremos click derecho sobre los 'Parámetros', y pulsaremos 'Editar parámetros'.



Esto nos mostrará el editor de parámetros, que en caso de haber sido convertido con Crystal, ya tendrá los parámetros necesarios colocados.



Para evitar posibles confusiones, recomendamos colocar los nombres de los parámetros al nombre del campo que vayan a referenciar para evitar posibles confusiones. Por ejemplo, en este caso, 'parameter1' lo llamaremos 'IdPedido', y haremos lo mismo con 'parameter2'.


Si se ha convertido el informe desde Crystal Reports, y no saber a qué campo hace referencia alguno de los parámetros, se pueden consultar fácilmente desde el editor de Crystal Reports.


Abriremos el informe, localizamos el subinforme, y pulsaremos click derecho, 'Cambiar vínculos del subinforme'. Esto nos mostrará la lista de los campos que se relacionan con el subinforme.



Después de esto, guardaremos el subinforme, y podremos colocar el filtro al subinforme. Para lo que tendremos que 'seleccionar' el informe entero, pulsando en el área gris (fuera del informe).


Una vez hayamos configurado todos los parámetros correctamente, tendremos que saber qué tipo de consulta tiene el subinforme, ya que dependiendo del tipo, usaremos los parámetros de forma diferente.


Consulta


Si la consulta contiene tablas y vistas, necesitaremos modificar la propiedad 'Cadena de filtro' del subinforme, que tras tener 'seleccionado' el informe entero, se puede acceder desde el apartado de propiedades, o desde el engranaje situado en el lado superior derecho del informe.



Una vez localizada la propiedad, pulsaremos los 'puntos suspensivos' que se encuentran en el lado derecho del campo, cosa que nos abrirá un editor para facilitar la creación del filtro.



Aquí utilizaremos los parámetros a los que les hemos cambiado el nombre. Primero pulsaremos el botón "+" que aparecerá al pasar el ratón cerca de la parte superior izquierda de la ventana, y después 'Agregar condición'.



Tras pulsarlo, aparecerá la primera condición, y en el primer campo, seleccionaremos un campo que se corresponda con uno de los parámetros, en este caso:



Una vez hayamos seleccionado el campo, la condición cambiará para visualizarse de la siguiente manera:



Y ahora, para colocar el parámetro con el que se va a comparar, vamos a utilizar el apartado inferior, que nos permite escribir directamente. El signo "?" identifica a los parámetros, así que empezaremos a escribir el nombre del parámetro justo después. A medida que vayamos escribiendo, se irán filtrando tanto los campos de base de datos como los parámetros, que tienen símbolos diferentes para identificarlos fácilmente.



Tras seleccionar el parámetro, crearemos tantas condiciones como sean necesarias para que el filtro sea igual que en el informe de Crystal original.



Ahora, tras haber cambiado el nombre a los parámetros y haber creado el filtro del subinforme, quedará una cosa, colocar en el informe principal, los valores que se le van a pasar al subinforme.


De la misma forma en la que hemos seleccionado el subinforme y modificado la 'Cadena de Filtro', vamos a seleccionar el subinforme, y vamos a editar 'Parameter Bindings'.


Se levantará esta ventana, aquí, tendremos que pulsar el botón 'Sync', cosa que nos dirá los parámetros que espera el subinforme.




Al igual que con los subinformes, es posible que los nombres de los parámetros no se hayan pasado correctamente, así que también tendremos que cambiarlos. Cuando pulsemos sobre 'Parameter Name', se verá que es un desplegable, pero no vamos a seleccionar ningún valor del desplegable, si no se ha colocado el valor correcto automáticamente, no habrán valores correctos en el desplegable, así que tendremos que modificarlo como un campo de texto.


Cuando hayamos modificado los nombres, tendremos que colocar el 'Enlace', es posible que este ya esté colocado, pero muchas veces este enlace es incorrecto aunque no lo parezca, así que recomendamos modificar el enlace siempre.


Ahora es cuando es necesario saber identificar el origen de datos válido, porque necesitamos sacar el campo correcto, del origen de datos válido, si lo obtenemos de otro origen que no sea válido, fallará la previsualización, y fallará al intentar imprimir el informe.



Tras seleccionar los campos correctos para todos los parámetros, cerraremos la ventana con 'Aceptar', y ya tendremos el informe asociado con el subinforme.


Procedimiento almacenado


En caso de ser un procedimiento almacenado, los pasos que vamos a seguir son un poco diferentes, ya que en vez de modificar el filtro del subinforme, vamos a pasarle los parámetros que necesita el procedimiento almacenado para que nos devuelva datos.


En los informes que han sido convertidos desde Crystal Reports, normalmente estos parámetros ya han sido configurados, y este paso no suele ser necesario, pero deberíamos al menos comprobar que todos los parámetros están correctamente colocados, y que los nombres coinciden con nuestros parámetros.


Abriremos la gestión de consultas, y abriremos la edición de parámetros:




Dependiendo de las necesidades, modificaremos los datos de esta ventana para ajustarnos a lo que necesitemos:



Ajustar los elementos al informe


Es posible que la colocación de los elementos de los informes de Crystal no estén alineados como deberían o tengan tamaños irregulares. Es por esto que al convertir los informes a DevExpress, nos encontremos con estos problemas, y gracias a que los elementos del informe se montan en una cuadrícula, estas imperfecciones se hacen evidentes.


Es por esto que deberemos conocer y entender cómo podemos corregir esto, para asegurarnos de que vamos a dejarlo todo bien organizado.


Mover elementos en el explorador de informes


El explorador de informes es un árbol que contiene todos y cada uno de los elementos que se encuentran en el mismo informe, y con el podemos mover rápidamente cualquier elemento del informe a donde queramos.


Redimensión y movimiento manual


Los elementos del informe se pueden redimensionar tras seleccionarlos, arrastrando de las esquinas o los lados marcados con cuadrados azules, y se pueden mover si se arrastra el elemento en cualquier otro punto.


También podemos mover los elementos seleccionados sin necesidad de utilizar el ratón, con las flechas de dirección podremos moverlo, aunque esto muchas veces resultará en saltos bruscos, así que en caso de querer moverlo de forma lenta y precisa, utilizaremos CTRL + 'Flechas de dirección'.


También podremos modificar el tamaño y ubicación del elemento en el apartado de propiedades. Aunque esto es una posibilidad, intentaremos modificarlo como último recurso, ya que normalmente no nos hará falta modificar los valores manualmente de esta forma.



Las secciones sólo se pueden mover verticalmente utilizando el lado inferior, pero a diferencia del resto de elementos, podremos redimensionarlo arrastrando cualquier punto del lado inferior de la sección. 


Si una sección tiene al menos un elemento dentro, no podremos redimensionar la sección de tal forma que alguno de ellos quede oculto o el elemento tuviese que ser forzosamente movido.


Redimensión y movimiento automatizado


En el menú superior tenemos unas cuantas opciones que nos automatizarán y facilitarán que podamos dejar los elementos con tamaños bien ajustados.


A la tabla


Este botón recoloca el elemento que esté seleccionado, y lo alinea vertical y horizontalmente con la cuadrícula más cercana, sin redimensionarlo.



Alineación


Estos botones sólo estarán disponibles cuando tengamos seleccionados más de un elemento, y cada uno alinea todos los elementos horizontalmente a la izquierda, al centro y a la derecha



Ancho y alto


Ambos botones requerirán, al igual que los anteriores, que tengamos al menos dos elementos seleccionados. Al pulsarlos, harán que todos los elementos tengan el ancho o alto equivalente al del elemento que tenga un valor mayor.



Esto no recolocará los elementos, sólo los hará más altos o anchos, así que probablemente haya que mover algún elemento de sitio tras utilizar cualquiera de los dos.


Además de esto, existe el botón 'ambos', en caso de necesitarlo.


Ajustar tabla


Este botón recoloca el elemento que esté seleccionado, lo alinea vertical y horizontalmente con la cuadrícula más cercana, y lo redimensiona para encajar con la cuadrícula.



Espacios entre elementos


Al seleccionar al menos dos elementos, utilizar estos botones nos permitirán igualar, aumentar, reducir y quitar los espacios horizontales o verticales que se encuentren entre todos los elementos seleccionados.



Centrar dentro de la sección


Podremos utilizar los botones para centrar horizontal o verticalmente uno o más elementos en la sección. Si seleccionamos más de un elemento, se centrarán como 'bloque', es decir, al centrarlos horizontalmente, los espacios horizontales entre los elementos no serán alterados, y al centrarlo verticalmente, no se modificarán los espacios verticales.



Realización de pruebas


Para probar cómo se va a visualizar un informe, podemos pulsar 'Vista previa', localizado en la esquina inferior izquierda, y para volver al editor, pulsar 'Diseñador'.



Si la 'Vista previa' tarda mucho, se puede parar pulsando 'Interrumpir', localizado a la derecha del botón 'Vista previa', junto a una barra de progreso.


Es posible que para la realización de pruebas, para ahorrar tiempo de generación y búsqueda de una página concreta, nos pueda servir colocar un filtro en el informe, y esto se hará de la misma manera que colocando los filtros en los subinformes, y se pueden colocar tanto valores fijos, como parámetros, para que cuando vayamos a previsualizar, nos pidan un valor, que luego se vaya a utilizar en el filtro.


Ejemplo de filtro estático:



Ejemplo de filtro con parámetro:




Es importante recordar quitar tanto el filtro como los parámetros que se hayan creado para las pruebas en caso de haberlos colocado, porque si no se elimina, el informe mostrará datos incorrectos o pedirá datos cuando no debería hacerlo.




¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo