Foros del Web » Programación para mayores de 30 ;) » .NET »

Pasar Parametros a CrystalReport desde C#

Estas en el tema de Pasar Parametros a CrystalReport desde C# en el foro de .NET en Foros del Web. Hola a todos, Tengo una aplicación hecha en C# (Visual Studio 2005) y en un WinForm tengo un control CrystalReportViewer para visualizar los reportes diseñados ...
  #1 (permalink)  
Antiguo 09/11/2009, 09:28
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 14 años, 9 meses
Puntos: 1
Pasar Parametros a CrystalReport desde C#

Hola a todos,

Tengo una aplicación hecha en C# (Visual Studio 2005) y en un WinForm tengo un control CrystalReportViewer para visualizar los reportes diseñados con Crystal Reports (el que viene integrado en el Visual Studio).

Si a los reports les asigno un origen de datos fijo (por ejemplo una tabla de la BD) funciona correctamente, el problema es que necesito filtrar por determinados campos de la tabla (FechaInicio y FechaFin). ¿Como puedo pasar filtros/parámetros en este tipo de informes con C#? Es decir, que cuando ejecute el informe me pida por pantalla los valorres para el campo FechaInicio y FechaFin, y que filtre los datos según los datos introducidos en estos parámetros.

Y otra cosa más, ¿es posible pasar como origen de datos del report una sentencia SQL (Select) en vez de una tabla?


Muchas gracias.

Un saludo.
  #2 (permalink)  
Antiguo 09/11/2009, 11:02
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Pasar Parametros a CrystalReport desde C#

Cita:
Iniciado por noegano Ver Mensaje
¿es posible pasar como origen de datos del report una sentencia SQL (Select) en vez de una tabla?
Hasta donde tengo entendido No, pero lo que puedes hacer es que tu tabla ya este filtrada (la saques de Sql filtrada ) o que le apliques filtros adicionales.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #3 (permalink)  
Antiguo 09/11/2009, 11:08
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Pasar Parametros a CrystalReport desde C#

Hola, para filtrar los datos usa la propiedad RecordSelectionFormula
Código:
rpt.RecordSelectionFormula = "Pais='Perú'"
Para asignarle parámetros al reporte usa el método SetParameterValue
Código:
rpt.SetParameterValue("@parametro1", "Perú")
Te refieres a decirle que tome como origen de datos un "Select * From Tabla"? Pues no eso no se puede.

PD: rpt es una variable de tipo ReportDocument
Salutres
__________________
Eduardo Peredo
Wigoin
  #4 (permalink)  
Antiguo 10/11/2009, 04:32
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Pasar Parametros a CrystalReport desde C#

Hola,

Muchas gracias por vuestra ayuda. También funciona con el siguiente código (aunque es más largo):

------------------------------------------------------------------------------------
ReportDocument cryRpt;
cryRpt = new ReportDocument();

cryRpt.Load(@"C:\RUTA DEL REPORT\NombreReport.rpt");

ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues;
ParameterDiscreteValue crParameterDiscreteValue;

crParameterValues = new ParameterValues();
crParameterDiscreteValue = new ParameterDiscreteValue();

crParameterDiscreteValue.Value = textBox1.Text; // TextBox con el valor del Parametro
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["Nombre_Parametro"];

crParameterValues = crParameterFieldDefinition.CurrentValues;

crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crPa rameterValues);

crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
------------------------------------------------------------------------------------

Para ello es necesario incluir esto:

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;


Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:10.