Crystal Report - Reporte dinámico

   
Vista:

Reporte dinámico

Publicado por Marco (3 intervenciones) el 21/01/2009 01:53:36
hola a todos. Solicito su colaboración en el siguiente problema: Tengo dos formularios y un reporte.El reporte
se encuentra enlazado a un procedimiento almacenado de sql server 2005. Se trata de un procedimiento sencillo,
del tipo:

"SELECT Columna1, Columna2, Columna3, Columna4 FROM Tabla WHERE Condición".

En uno de los formularios tengo un control CrystalReportViewer (que es donde deseo mostrar el reporte) y
en el otro un botón a partir del cual deseo lanzar el reporte. Olvidé decir que el proyecto está realizado
en visual basic.NET 2005. El código del botón es:

Dim ds As New ds_mssoft

Dim strReportPath As String
Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocument

strReportPath = "C:Making StylesMSSMSScr_listado_ventas.rpt"

Me.Sp_consulta_listado_ventasTableAdapter.Fill(sp_consulta_listado_ventas)

rptDocument.Load(strReportPath)
rptDocument.SetDataSource(Ds_mssoft)

Form_contenedor_reportes.crv_visor1.ReportSource = rptDocument

Form_contenedor_reportes.Show()

Hasta acá todo bien. No hay problemas. Ahora ocurre que así como está, el reporte me muestra la totalidad de los
registros, lo cual no deseo. En el mismo formulario que contiene el botón tengo una grilla que muestra la misma
consulta que deseo imprimir (sp_consulta_listado_ventas) pero acá tengo la posibilidad de establecer filtros.
De que manera podría lograr que los mismos filtros aplicados a la grilla se apliquen al reporte?? es decir, deseo
que tanto la grilla como el reporte muestren exactamente la misma información.
Bueno señores, estaría muy agradecido si alguna mente brillante pudiera tenderme una mano porque estoy luchando
con esto hace un buen tiempo y no puedo encontrarle la vuelta. Saludos y gracias nuevamente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Reporte dinámico

Publicado por Alex A. Salamanca E. (3 intervenciones) el 21/01/2009 13:21:47
Hola Marco:

Haber creo que si eres capaz de filtrar tu grilla y esta se encuentra enlazada a un dataset, por ejemplo llamemosle dataset_grilla, entonces dicho dataset está filtrado, pues bien, en ese caso lo que tienes que hacer es pasar ese dataset a tu reporte : rptDocument.SetDataSource(Ds_mssoft). Todo esto sería como dije si es que tienes la grilla enlazada a datos mediante ese dataset(dataset_grilla) filtrado.

Pero por ejemplo si usas un dataview para enlazar la grilla, lo que tienes que hacer es pasar dicho dataview o bien el datatable que genera el dataview.

rptDocument.SetDataSource(dataview)

o bien

rptDocument.SetDataSource(dataview.tables[0]);


El problema seria si es que tu grilla no está enlazada a datos, sino que la llenas manualmente o a traves de listas(list<T>), lo que haría en ese caso es igualmente crear un dataset y pasar los elementos y luego este dataset al reporte.


Saludos
Alex A. Salamanca E.
Ingeniero (e) Computación e Informatica
Concepción - Chile
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reporte dinámico

Publicado por Marco (3 intervenciones) el 21/01/2009 17:28:25
gracias Alex. La realidad es que mi grilla se asocia al origen de datos en tiempo de ejecución. La consulta la hago a través de una consulta dinámica, es decir un sp_general, al cual le paso como parámetros el SELECT, el FROM, y el WHERE (todos estos parametros son string. a la consulta la arma el procedimiento almacenado y luego la ejecuta).
Lo hago de esa manera porque el filtro puede variar demasiado (puedo filtrar la consulta hasta por 5 campos diferentes y no siempre se aplican los mismos filtros). Al momento de asociar las columnas de la grilla a las columnas que me devuelve la consulta no tengo problemas, lo hago por código en tiempo de ejecución.
Sin embargo, cuando utilizo la misma técnica para mostrar la información en el reporte, asocio el mismo al sp_general, pero no puedo visualizar las columnas para arrastrarlas a la sección correspondiente del reporte, lo cual es lógico.
A mi me gustaría encontrar la manera de usar exactamente el mismo procedimiento (que maneja una consulta dinámica) que uso sobre la grilla, sobre el reporte. Lo lógico sería poder crear los campos vacios sobre el reporte y luego desde el formulario que llama al reporte, realizar la asociación en tiempo de ejecución...al igual que lo hago con la grilla.
...pero no se como, ni si se puede.
Agradecería si alguien me puede dar una mano con esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Reporte dinámico

Publicado por Rodrigo Menares rodrigo.menares@gmail.com (1 intervención) el 30/01/2014 20:11:24
Junto con saludar, yo tengo el mismo problema, lo que pasa es que los datos no entran al reporte, por que no hay un dataset definido dentro del crystal, y cuando trato de definirlo , este no me permite, puesa las opciones estan deshabilitadas, como puedo habilitarlas??, o como puedo definir un dataset dentro del crystal???, un dataset tipado no me sirve, pues los datos son dinamicos, es decir, pueden cambiar en cualquier momento..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar