Actualmente estoy trabajando en un programa en C# que permite a nuestros usuarios ejecutar, ver y exportar un lote de Crystal Reports. Los informes se realizaron utilizando la GUI de Crystal Reports 2008. Una de las razones principales para hacer esto es permitirnos conservar hipervínculos cuando el Informe de Crystal se exporta a PDF. Mi programa hace esto exportando a rtf, luego convirtiendo el rtf a un pdf. Si alguien sabe de un método menos intrincado para preservar hipervínculos al convertir a PDf, me encantaría escucharlo, pero esa no es mi pregunta actual.¿Cómo puedo recuperar la instrucción SQL SELECT utilizada en un Crystal Report?
He hecho muchas pruebas sobre cómo optimizar mi programa para que la exportación tome el menor tiempo posible. Por lo que he visto, tener la consulta de la aplicación para los datos, luego vincular el conjunto de resultados al Informe de Crystal es, de lejos, el método más rápido. Mi problema es que no puedo codificar las consultas en el programa, deben ser rescatadas del mismo informe de Crystal.
En Crystal Reports 2008, hay una opción llamada "Mostrar consulta SQL" en el menú Base de datos. Esto abre una ventana con la consulta SQL utilizada para el informe dado. Esto es exactamente lo que necesito tener en mis manos desde mi aplicación. Cargué un informe de Crystal y, durante la depuración, atravesé el objeto ReportDocument tratando de encontrar la consulta, pero no tuve suerte.
Entonces, mi pregunta es; ¿hay algún método disponible que me permita extraer la consulta utilizada por un Crystal Report dado?
Si la tabla del informe es un "Comando SQL", ¿aún puede establecer la fuente de datos? Pensé que la tabla tenía que crearse a partir de un conjunto de datos (xsd)? – dotjoe
En mi prueba, Crystal Report usaba un "Comando SQL" como la "Tabla". No tuve problemas para vincular el informe a un conjunto de datos que había consultado desde la base de datos, utilizando la misma selección SQL que formaba el "Comando SQL" en el informe. Funcionó perfectamente, y fue mucho más rápido que obtener el informe para actualizar sus propios datos. – Chronicide
Interesante, estoy tratando de convertir los informes al modelo PUSH y tal vez no sea necesario si puedo pasar el datasource. Los míos son todos los procedimientos almacenados a través de parámetros w/w/out. – dotjoe