¿Cuando las cosas funcionan mejor no tocarlas? es una manida frase de muchos programadores. Aunque reconozco que en el caso de los Report es un tema complicado plantearse un cambio de sistema y más si probablemente tengas ya decenas de informes Crystal Report que no tienes ninguna gana de tocar.

Tras investigar un poco y plantear esta opción y por el uso que suelo hacer de la suite de controles Devxpress me plantee el cambio…y cuento por aquí de modo breve algunas cuestiones importantes a tener en cuenta.

Estas limitaciones se refieren a la exportación automática de .rpt a .repx.
Existe una utilidad y cierta documentación aportada por Devxpress en ESTE link

1º) La exportación de un rpt de Crystal Report a XtraReport (que es el nombre del paquete de componentes para Devxpress) es posible, si, pero con ciertas limitaciones…

  • Las fuentes de datos no son exportadas directamente pero una vez visualices tu nuevo informe veras campos (controles XRControl) vacíos que ocupan el lugar de los campos de tu rpt y tendrás que definir entonces la fuente de datos (reconectarla simplemente) y reasignar manualmente cada campo a tu correspondiente fuente de datos. Generalmente cada campo que estuviera asignado a una fuente de datos, mantendrá el nombre que tenía, excepto las imágenes, que pierden la vinculación y el nombre del campo (debes recolocar un objeto imagen y vincularlo). Si ya tenías un esquema de datos como dataset, es muy fácil volver a reconectarlo, simplemente vuelves a seleccionar el archivo xsd y ya tienes de nuevo el dataset conectado al report.
  • Los campos calculados, formulas, etc.. y todas las expresiones condicionales que hayas definido en tu rpt , NO serán exportadas, las condicionales por tanto tendrás que reescribirlas, pero la buena noticia (y que alguien me corrija si es posible hacerlo en Crystal) es que un XtraReport es una clase a la que puedes controlar eventos de la misma forma que un WinForm en .NET y utilizar por tanto las librerias del framework para realizar operaciones, puedes tener acceso a todos los objetos del informe desde código fuente controlando así casi de la misma forma que lo harías con la interfaz de un form….puedes recorrer los objetos, realizar conversiones, asignar valores a las etiquetas, etc..etc.. Reescribir por tanto la lógica del informe y descubrir que puede hacerse lo mismo de una forma mas sencilla (o por lo menos mas amigable).
  • Las imágenes que estén insertadas directamente en el rpt no se exportarán a su correspondiente repx. Si que veras un control XRPictureBox vacío en su lugar
  • Otro inconveniente, las exportaciones de subinformes no rulan, es decir, los veras como un control (XRControl) y ocupará el mismo lugar que el subreport, pero éstos tendrás que asignarlos, esto tiene un poco mas de ciencia, debes tener el subreport también en formato XtraReport ya exportado y vincularlos, pero tampoco es complicado y funciona (probado).

2º) La herramienta de exportación ofrecida por devxpress es un proyecto que puedes descargar y usar. En el link indicado arriba se aclaran las instrucciones de cómo usarlo, pero básicamente el funcionamiento es el siguiente: Debes colocar el archivo rpt en una carpeta dentro del proyecto y en las opciones del proyecto, en Debug, indicar como parámetro de entrada el nombre del archivo rpt y de salida, el nombre del repx, das a F5 y se lanzara una consola que se iniciara, convertirá el rpt y (si no ocurre ningún error en la conversión) se cerrará tal cual. Como resultado podrás ver un archivo repx que representa la clase generada y mantiene la estructura visual de tu informe. También se pueden hacer conversiones masivas.

3º) Para tener tu report disponible en tu aplicación realiza estos pasos.

  • Crea un un nuevo elemento de tipo XtraReport en tu proyecto (se supone que tienes instalada la suite de controles Devxpress). Se creará por tanto un informe con un entorno similar a Crystal Report, donde veras las bandas, cabecera, detail y pie vacías.
  • Ahora en la esquina superior izquierda del mismo report, tienes un menú que se despliega con una flechita, ahí tienes la opción Import…. Pulsando esta opción nos permitirá seleccionar el archivo repx que hemos generado de la exportación de Crystal, lo seleccionamos y listo, tendremos la estructura, los campos y apariencia completa de nuestro informe Crystal, solo queda realizar algunos ajustes de layout (por alguna razón superpone unos controles a otros), reasignar las fuentes de datos y listo.

Finalmente, el balance es positivo seguro si decides exportar siempre y cuando puedas seguir manteniendo la suite devxpress.

Las ventajas son grandes, pues no es únicamente el cambio y la facilidad de programar informes, si no las posibilidades que tiene por ejemplo, para ofrecer al usuario un entorno de diseño de informes, tanto para web como para escritorio, la posibilidad de visualizar al vuelo el informe como HTML, PDF, etc.. y las utilidades que incluye posteriores para permitir editar el informe antes de imprimirlo sin tener que desarrollar esas herramientas.

Además por supuesto, de salvar los conocidos problemas que nos encontramos a la hora de distribuir una aplicación de escritorio con Crystal Report, ya que con devxpress simplemente agregamos las librerias XtraReport y no nos tenemos que preocupar de incluir el instalador de Crystal.

Suerte con tu exportación!

 


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *