DevExpress Reports - Conversión de informes desde Crystal Reports (.rpt)

Creado por Aitana Ferrandis García, Modificado el Mie, 9 Oct a 4:13 P. M. por Aitana Ferrandis García

 

En este documento se explicará en detalle los pasos a seguir para poder traducir informes de Crystal Reports a Devexpress desde el ERP (disponible a partir de la versión 5.0). 

 

La utilidad de desarrollo de informes de DevExpress nos permite convertir informes desarrollados mediante Crystal Reports a su formato de una forma sencilla desde el propio editor de informes. 


Antes de comenzar a convertir, habrá que comprobar que los módulos 'Crystal Reports XI R2' y 'Crystal Reports .NET', sean accesibles desde el asistente de instalación y se encuentran instalados en el equipo en el que vamos a realizar la conversión para evitar posibles errores.


IMPORTANTE

  • No recomendamos realizar la conversión de informes estándar, hasta que no se libere la versión traducida.
  • Recomendamos que la versión sea al menos la v5.0.0.24, ya que nos permitirá agilizar ciertos aspectos de la conversión.
  • Recomendamos no intentar convertir ni tener abierto más de un informe al mismo tiempo ya que pueden aparecer errores. Antes de trabajar con otro informe es recomendable cerrar y volver a abrir el diseñador.




Importación de informes desde Crystal Reports a Devexpress 


En primer lugar, hay que tener en cuenta que la importación no se va a realizar perfecta, por lo que deberemos modificar las fórmulas, campos calculados, parámetros y los enlaces con los subinformes, tablas y / o vistas utilizadas tanto en el informe como en sus subinformes si los tiene... etc. En esta guía hablaremos de todos los casos en los que puede que necesitemos modificar el informe antes y después de la importación. 

 

Lo primero que tenemos que hacer es acceder al diseñador de DevExpress y pulsar en la opción de menú 'Archivo' -> 'Importar desde informe de Crystal Reports', lo siguiente sería seleccionar el informe de Crystal Reports (.rpt) que necesitemos importar.  

  





Esto nos abrirá un selector de archivos donde seleccionaremos el informe que queramos convertir. Una vez seleccionado, esperamos a que el proceso termine.


En caso de error en este paso, revisar si tenemos abierto el editor de Crystal Reports, cerrarlo, y cerrar el diseñador de informes y el ERP antes de volver a intentarlo.


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 informe para el propio informe más los informes correspondientes a cada sub informe. estos subinformes se generan con la nomenclatura '(nombre del informe)_(nombre del subinforme)', así que son relativamente fáciles de identificar.



Al abrir el informe el resultado será similar al siguiente: 



Limitaciones de la conversión 


Existen diferentes limitaciones en el proceso de conversión debido a las diferencias de estructura entre Crystal Reports y DevExpress documentadas en su web . 


  • No existen varios pies o encabezados por grupo, en DevExpress solamente existe uno y se divide en varios elementos llamados 'Sub-Bands'
  • Se tienen que definir los parámetros de enlace a los subinformes manualmente. Más adelante se explica la forma de hacerlo.
  • Las condiciones de suprimir y la opción de ocultar una sección no se traducen en los subinformes. Por lo que deberemos ocultarlas según lo necesitemos. Podemos ocultar desde la fórmula en el apartado de visible o desde las propiedades del elemento en cuestión.
  • En el caso de tener varios origenes de datos en el informe solamente se trasladará el primero.
  • Existen fórmulas o campos calculados que por la función o complejidad de estructura no se pueden traducir, en dichas fórmulas aparecerá el mensaje '#NOT_SUPPORTED#' o se mostrará en la parte inferior con un símbolo de exclamación.


 

  • El origen de datos no se actualiza en el momento de la conversión, se tiene que actualizar manualmente.
  • Los alias de las tablas indicados en Crystal Reports se traducen como si fueran un objeto existente de la base de datos, por tanto, en el momento de visualizar el informe aparecerán errores de SQL.
  • IMPORTANTE (Error común): Es posible que cuando añadamos campos con decimales (por ejemplo, precios) no nos calcule correctamente los totales o los propios campos no muestren los decimales correctamente, en ese caso hay que revisar (además de que el formato de decimales es el que queremos) que el campo está establecido correctamente como decimal:





Identificar el origen de datos (varios DataSources)


A medida que realizamos las conversiones, nos podemos encontrar con que, en la lista donde se encuentra el origen de datos del informe, tenemos más de uno.

 


Cuando esto ocurra, será importante saber identificar cual es el correcto. Si seleccionamos cada uno, en la parte inferior aparecerá una sección de propiedades, y entre todas las propiedades visibles, nos tendremos que fijar en el apartado "parámetros de conexión". Una vez encontremos cual de todas tiene el campo como se ve en la captura inferior, habremos encontrado el correcto.



En la mayoría de casos, nos encontraremos que el origen "válido" será "sqlDataSource1", dejando como "no válido" aquel llamado "DataConnectionString", aunque siempre deberíamos asegurarnos de conocer cual es el válido antes de continuar.



Por lo general no eliminaremos los orígenes de datos, aunque no sean válidos, y en especial "DataConnectionString", que se usará internamente para la impresión.


La principal razón por la que esto es importante, es porque, si vamos a referenciar algún campo, necesitamos saber de donde sacarlo, ya que, aunque no sea válido, probablemente aparecerá varias veces como opción, pero solo una será correcta, ya que el resto hará que el informe falle.



Esto solo tendremos que tenerlo en cuenta en las ventanas donde se nos de la opción entre diferentes orígenes, como por ejemplo, la asignación de los parámetros que le vamos a pasar a un subinforme. Un caso donde esto no se aplicaría, serían las fórmulas, ya que con colocar el nombre del campo, usarán internamente la conexión válida por nosotros.

 

Vistas, tablas y personalizaciones en Crystal Reports 

 

Uno de los problemas de Devexpress es que al importar no se pasan correctamente las vistas, tablas y personalizaciones que necesitaban agregarse a dicho informe de Crystal, es decir, si en un informe hemos necesitado agregar tablas, vistas u otro tipo de personalización, también deberemos hacerlo para el informe de Devexpress. 


Antes de importar el informe desde Devexpress deberemos comprobar si el informe de Crystal está diseñado correctamente. Para ello iremos a Establecer ubicación de base de datos y asociaremos las vistas que necesitemos a las tablas correspondientes del informe. 


Importante

Al cerrar con la X al establecer la ubicación del origen de datos no se modifican los cambios, por lo que al cerrar se debe de hacer desde el propio botón de Cerrar. Podemos comprobar que ha guardado el origen de datos correctamente porque nos aparecerá el símbolo de guardar el informe.


Establecer ubicación del origen de datos: Asociar Vistas al informe 


Un problema común en la importación de los reports es, tener una tabla o vista más de una vez en el mismo report, que en Crystal Reports significa tener alias para las tablas o vistas. Este funcionamiento, a la hora de importar el report, causará un error, ya que DevExpress intentará buscar una tabla o vista con el nombre del alias, y si no lo encuentra, el proceso de importación se detendrá. 



Nota

Estos cambios sólo serán necesarios cuando se trabaje en una versión anterior a la 5.0.0 hotfix 24.



Para identificar estos casos, bastará con abrir en Crystal Reports, con un informe abierto, 

‘Base de Datos’ -> ‘Establecer ubicación del origen de datos’. 



Será en este menú, en el desglose superior donde, podremos ver si este es el causante del problema. Las tablas o vistas, que se encuentren repetidas, aparecerán con la siguiente nomenclatura: 


ALIAS([NOMBRE DE LA TABLA O VISTA]) 


En la captura superior se puede apreciar el caso concreto, “ContactosPadre” es el alias de la tabla Contactos.

 

En estos casos deberemos crear una vista equivalente por cada registro que tenga alias, excepto aquellas que tengan un alias exactamente igual a la tabla o vista, es decir: 


CREATE VIEW ContactosPadre AS SELECT * FROM Contactos zpermisos ContactosPadre 
SQL

Deberemos Actualizar también el servidor al que estemos utilizando actualmente y asociar la vista con la que le corresponde en la lista superior, en este caso, “ContactosPadre”. 


Una vez hayamos comprobado que tanto desde la previsualización de Crystal Reports, como desde la impresión del objeto o colección se visualiza correctamente tanto los datos del informe como de los subinformes (si los tiene), podremos importar el informe desde el diseñador de Devexpress. 


Pasos adicionales requeridos en DevExpress 


Si ha sido necesario realizar los cambios anteriores al informe de Crystal Reports para permitir la importación a DevExpress, es importante que realicemos el cambio otra vez en DevExpress para que el resultado sea el mismo. 




Aquí tendremos que ver la o las relaciones que tiene cada tabla o vista que hayamos sustituido por una vista.



En este punto, vamos a buscar en el explorador de la izquierda, el nombre de la tabla original, la que estaba entre paréntesis. Arrastraremos la tabla al centro con el resto y especificamos su relación.





Nota:

Existe la posibilidad de que se genere una relación automática y la ventana de la captura superior no aparezca. Si esta relación es incorrecta, bastará con hacer la relación a mano, es decir, arrastrar del campo necesario de la tabla correcta, al campo de la nueva tabla insertada, modificar el tipo de unión, y eliminar la relación generada automáticamente.


Una vez hayamos colocado la tabla, y asignado la relación, borraremos la “tabla” que creamos antes como una vista con Click derecho -> Eliminar (en este caso sería la que se llama ContactosPadre). 

 

Después de eliminarla, le pondremos el mismo nombre (que acabamos de eliminar) a la tabla con Click derecho -> Renombrar. Marcaremos también el check donde aparece el nombre. 



Con este paso nos aseguramos que "ContactosPadre" sea la tabla "Contactos" con un alias, y no la vista "ContactosPadre".


Importante

Será necesario realizar este paso si se ha modificado el informe de Crystal para que se pudiese hacer la importación, ya que de no hacerlo, nos arriesgamos a posibles errores causados por la ausencia de la vista recientemente creada, por ejemplo, si utilizamos el informe en otra base de datos o eliminamos la vista.


Tendremos que poner todos los alias a mano de nuevo, siguiendo la lógica de DevExpress, para evitar problemas con los campos calculados y obtener claridad. Para ello podemos directamente filtrar por nombre de la tabla para que nos resulte más cómodo. 


 

Desde la columna Alias asignamos los alias para cada campo. Como nomenclatura estándar es aconsejable que lo establezcamos como NombreTabla_NombreCampo.



Filtros en el informe principal


Es posible que el informe de Crystal Reports, tuviese un filtro colocado en el informe principal, y este tipo de filtros, desaparecen del informe al realizar la conversión. Antes de seguir, si bien es posible que no haya un filtro, es recomendable comprobar si hay uno, ya que no hacerlo podría llevar a no mostrar datos correctos.


Para comprobar si el informe tiene algún filtro, en el editor de Crystal pulsaremos 'Informe' -> 'Asistente de selección':



En caso de no tener ningún filtro, Crystal Reports nos mostrará la siguiente ventana, donde nos pedirá que seleccionemos un campo por el que filtrar. Como no tenemos ningún filtro, no tendremos que hacer nada.



Si tenemos algún filtro veremos directamente el asistente de selección, con pestañas diferentes que representan los diferentes filtros que se aplican.



Esto lo trasladaremos al filtro del informe principal, de la misma forma en la que colocamos el filtro de un subinforme.


IMPORTANTE - Edición 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.  


Se intentará mejorar este aspecto en un futuro e intentar permitir la edición de las tablas en modo gráfico después de haber editado el código de SQL.  


Por el momento recomendamos encarecidamente que no se utilice este método a no ser que sea un último recurso, y en su lugar utilizar el modo gráfico convencional. 


Campos de expresiones, fórmulas y campos calculados 

 

El editor de expresiones tiene, en la parte inferior, un menú con las opciones posibles para formar las expresiones.


 

A los campos colocados en el informe, se les puede aplicar formatos. DevExpress tiene diferentes formatos estándar, pero también ofrece la posibilidad de usar formatos personalizados para casos especiales. 



Enlace de parámetros con subreports 

 

En primer lugar, debemos modificar el nombre de los parámetros desde el subreport, ya que muchas veces viene mal el nombre por la importación del informe de Crystal, de esta forma será más fácil de identificarlo posteriormente.  

 

Para ello vamos a Lista de Campos en el sub informe, desde ahí editamos el nombre de los parámetros, para seguir una nomenclatura es recomendable establecerle directamente como nombre el nombre del campo.  



A continuación, desde el informe editaremos el enlace con el sub informe desde la rueda de configuración del elemento correspondiente al sub informe. 


 

Podemos hacer click en "Sync" para directamente rellenar el parámetro del sub informe.  



Por último, volveremos al sub informe y estableceremos el filtro al sub informe.





Edición de estilos



Desde la parte inferior derecha podremos editar los estilos de los elementos del informe, cambiar sus propiedades de visibilidad, comportamiento al agrandarse...etc.








¿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