Código para ejecutar un fichero CrystalReport 8.5 y una pregunta.

05/08/2003 - 11:05 por Juan Carlos Vázquez Bohabén | Informe spam
El objeto Report del antiguo ActiveX tenía una propiedad que era
"SQLQueryString" a la cual se le asignaba una sentencia select (cadena) y el
report se generaba con los datos que seleccionaba esa sentencia. El objeto
ReportDocument de .net no trae esa propiedad. ¿Como puedo solucionar esto?.


public void GenerarReports(string nomReport, string nomListado)
{
//Representa un informe y contiene las propiedades y los métodos para
definir,
//dar formato, cargar, exportar e imprimir el informe.
ReportDocument crReportDocument = new ReportDocument();
//Cargar el fichero de report *.rpt
crReportDocument.Load(nomReport);
//Proporciona propiedades para la recuperación y configuración de opciones
de exportación del informe.
ExportOptions crExportOptions;
//Proporciona propiedades para la recuperación y configuración del nombre de
archivo al exportar al disco.
DiskFileDestinationOptions crDiskFileDestinationOptions = new
DiskFileDestinationOptions();
crExportOptions = crReportDocument.ExportOptions;
crDiskFileDestinationOptions.DiskFileName = nomListado;
crReportDocument.ExportOptions.ExportDestinationType ExportDestinationType.DiskFile;
//Genera un archivo PDF
crReportDocument.ExportOptions.ExportFormatType ExportFormatType.PortableDocFormat;
crReportDocument.ExportOptions.DestinationOptions crDiskFileDestinationOptions;
try
{
crReportDocument.Export();
}
catch (LogOnException engEx)
{
MessageBox.Show("Los parámetros de inicio de sesión son incorrectos.
Compruebe su nombre de usuario y contraseña." + engEx.Message);
}
catch (DataSourceException engEx)
{
MessageBox.Show("Error al conectarse a la base de datos. " + engEx.Message);
}
catch (EngineException engEx)
{
MessageBox.Show (engEx.Message);
}
finally
{
crReportDocument.Close();
}
}


Gracias y un saludo a Octavio por la anterior respuesta.

Preguntas similare

Leer las respuestas

#1 Octavio Hernández
05/08/2003 - 12:31 | Informe spam
Juan Carlos,

Cierto que esa propiedad no existe ahora. En la versión 9 los de Crystal
parece que han decidido "recortar nuestras libertades" un poco, porque en el
propio Crystal Reports la opción Base Datos | Mostrar Consulta SQL, que
siempre permitía "tocar" la consulta si lo querías (aunque me parece
recordar que te advertía que no tocaras las tablas ni los campos), ahora es
read-only y de verdad sólo la muestra. OJO: con CR9 *sí* se puede crear un
informe a partir de una consulta escrita por tí, pero no se puede modificar
esa consulta una vez creado el informe.

Así que parece que hay que limitarse a interactuar "indirectamente" con esa
consulta SQL a través de la fórmula de selección del informe, los parámetros
y alguna que otra cosilla (por ejemplo, a través de ReportOptions para
indicar la agrupación en el servidor). Según mi experiencia, no es una
limitación severa y en la mayoría de los casos ni siquiera es una limitación
cuando se desarrollan aplicaciones de gestión "tradicionales", pero si estás
desarrollando un generador de informes dinámicos o algo así eso sí podría
ser una limitación.

Saludos,

Octavio

"Juan Carlos Vázquez Bohabén" escribió en el
mensaje news:uz$
El objeto Report del antiguo ActiveX tenía una propiedad que era
"SQLQueryString" a la cual se le asignaba una sentencia select (cadena) y


el
report se generaba con los datos que seleccionaba esa sentencia. El objeto
ReportDocument de .net no trae esa propiedad. ¿Como puedo solucionar


esto?.

Respuesta Responder a este mensaje
#2 Juan Carlos Vázquez Bohabén
06/08/2003 - 09:49 | Informe spam
Hola Octavio y gracias.
Pues vaya m que no dejen pasar una sentencia select. Yo lo único que
hacia antes era ordenar con una sentencia, un campo u otro dependiendo de
como se quería el listado. He estado mirando las fórmulas pero no he visto
nada que me deje hacer un "order by" por un campo. ¿Cómo podría hacerlo?.
Gracias




"Octavio Hernández" escribió en el mensaje
news:
Juan Carlos,

Cierto que esa propiedad no existe ahora. En la versión 9 los de Crystal
parece que han decidido "recortar nuestras libertades" un poco, porque en


el
propio Crystal Reports la opción Base Datos | Mostrar Consulta SQL, que
siempre permitía "tocar" la consulta si lo querías (aunque me parece
recordar que te advertía que no tocaras las tablas ni los campos), ahora


es
read-only y de verdad sólo la muestra. OJO: con CR9 *sí* se puede crear un
informe a partir de una consulta escrita por tí, pero no se puede


modificar
esa consulta una vez creado el informe.

Así que parece que hay que limitarse a interactuar "indirectamente" con


esa
consulta SQL a través de la fórmula de selección del informe, los


parámetros
y alguna que otra cosilla (por ejemplo, a través de ReportOptions para
indicar la agrupación en el servidor). Según mi experiencia, no es una
limitación severa y en la mayoría de los casos ni siquiera es una


limitación
cuando se desarrollan aplicaciones de gestión "tradicionales", pero si


estás
desarrollando un generador de informes dinámicos o algo así eso sí podría
ser una limitación.

Saludos,

Octavio

"Juan Carlos Vázquez Bohabén" escribió en el
mensaje news:uz$
> El objeto Report del antiguo ActiveX tenía una propiedad que era
> "SQLQueryString" a la cual se le asignaba una sentencia select (cadena)


y
el
> report se generaba con los datos que seleccionaba esa sentencia. El


objeto
> ReportDocument de .net no trae esa propiedad. ¿Como puedo solucionar
esto?.
>


Respuesta Responder a este mensaje
#3 Octavio Hernández
06/08/2003 - 10:29 | Informe spam
Juan Carlos,

Efectivamente, no veo nada para eso... Pero se supone que él (Crystal) es un
experto en eso (utilizar los índices que existan, etc. para optimizar la
sentencia SQL).

La manera óptima que se me ocurre es que hagas el informe no partiendo de la
sentencia SELECT, sino de un procedimiento almacenado del servidor que
reciba por ejemplo un valor entero y ejecute una sentencia con el ORDER BY
adecuado al caso. Esto siempre que compruebes que Crystal "no se entera" y
que el informe en ciertos casos se demora demasiado ;-)

Fíjate que, en cualquier caso, utilizar una fórmula puede que no te habría
ofrecido ganancias, porque las fórmulas se evalúan en el cliente y la
ordenación se realizaría de este lado...

Salu2 - Octavio

"Juan Carlos Vázquez Bohabén" escribió en el
mensaje news:OQwVv7%
Hola Octavio y gracias.
Pues vaya m que no dejen pasar una sentencia select. Yo lo único que
hacia antes era ordenar con una sentencia, un campo u otro dependiendo de
como se quería el listado. He estado mirando las fórmulas pero no he visto
nada que me deje hacer un "order by" por un campo. ¿Cómo podría hacerlo?.
Gracias

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida