Monday, April 21, 2008

Passing Parameters to Crystal Reports

It is seam to be passing parameters to crystal reports (without prompting Enter to parameter values) programmatically some what confusing. So in this article I’ll explain Step by step “how to pass parameters to crystal reports”. We need to import following namespace.
using CrystalDecisions.CrystalReports.Engine;

Then following code pass the parameter value to crystal reports.

protected void Page_Load(object sender, EventArgs e){
this.CrystalReportViewer1.ParameterFieldInfo.Clear();
ParameterDiscreteValue desValue1= new ParameterDiscreteValue();
desValue1.Value = "Testing";// set value for parameter
ParameterField paraFld = new ParameterField();
paraFld.Name = "User";// this is parameter name
paraFld.CurrentValues.Add(desValue1);
paraFld.HasCurrentValue = true;
this.CrystalReportViewer1.ParameterFieldInfo.Add(paraFld);
this.CrystalReportViewer1.ShowFirstPage();
}

If we have more than two parameters it is bit difficult .So we can write common Method to passé parameters to crystal report as follow.

Public Void SetParameter(string ParaName ,string ParaValue)
{
ParameterDiscreteValue desValue= new ParameterDiscreteValue();
desValue. Value= ParaValue;
ParameterField paraFld = new ParameterField();
paraFld.Name = ParaName;
paraFld.CurrentValues.Add(desValue);
paraFld.HasCurrentValue = true;
CrystalReportViewer1.ParameterFieldInfo.Add(paraFld);

}

By using above method we can pass any number of parameters very easily.
As following (Think, ReportName and Createdby are two parameters which we defined in crystal reports) Then

protected void Page_Load(object sender, EventArgs e)
{
this.CrystalReportViewer1.ParameterFieldInfo.Clear();
SetParameter(“ReportName”,”My First Report”);// SetParameter(“Createdby”,”Dinesh”);
this.CrystalReportViewer1.ShowFirstPage();

}

}