Thursday 1 December 2011

C# Crystal Reports String parameter

The following section describes how to pass a String parameter to Crystal Reports from C# application.
All C# Crystal Reports Tutorial in this website is based on the following database - crystaldb. So before you begin this section , please take a look at the database structure of crystaldb - Click Here C# crystaldb
If you are new to Crystal Reports and do not know how to create Crystal Reports from C# , please take a look at the section step by step tutorial for creating a Crystal Reports from C#.
Here we pass a String parameter from C# to Crystal Reports . For example , from C# program we pass a customer name as a parameter and show all the orders of that customer to the Crystal Reports.
In the previous tutorial we saw how to generate a C# - Crystal Reports from multiple tables. This program is the continuation of previous tutorial , the only difference is that we pass a Customer Name as String parameter and get the report of that particular Customer only . Before starting to this section just take a look at the previous section C# Crystal Reports from multiple tables.
In the previous section we are getting the report of all orders from all customers , that is , all orders placed by all customers . In this section we pull out the selected customer report only by passing Customer name as argument.
Hope you understand the previous section well, if not, please click here C# Crystal Reports from multiple tables.
Next step is to create a String parameter in Crystal report designer window .
Select the Field Explorer from CrystalReport Menu. (Up to here explained in detail in the previous section C# Crystal Reports from multiple tables)
csharp-crystal-report-field-explorer
Then you can see Field Explorer in the Left hand side.
Select Parameter Field from Field Explorer and right Click on Parameter Field.
csharp-crystal-report-parameter
Fill the appropriate name for Name and Prompting text fields like the following picture.
csharp-crystal-report-fill-parameter
After creating the parameter field , we have to create the selection formula for the Crystal Reports parameter.
For creating selection formula , Right click on Crystal Reports designer window , select REPORT -> SELECTION FORMULA -> RECORD .
csharp-crystal-report-selection-formula.GIF
Now you can see the record Selection Formula Editor Screen. For creating selection formula , you have to select the fields from above field list and make the formula .
First you have to select OrderMaster.OrderMaster_customername from Report Field and select the comparison operator and select the parameter field. Double click each field then it will be selected.
Form the following picture you can understand how to select fields.
csharp-crystalreport-make-formula
You can close Selection Formula Editor screen after creating selection formula.
Now the designing part is over and the next step is to call the Crystal Reports in C# and view it in Crystal Reports Viewer control .
Select the default form (Form1.cs) you created in C# and drag a button and a CrystalReportViewer control to your form .
csharp-crystal-report-parameter-viewer
You have to include CrystalDecisions.CrystalReports.Engine in your C# Source Code.
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;


using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ReportDocument cryRpt = new ReportDocument();
            cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

            ParameterFieldDefinitions crParameterFieldDefinitions ;
            ParameterFieldDefinition crParameterFieldDefinition ;
            ParameterValues crParameterValues = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

            crParameterDiscreteValue.Value = textBox1.Text;
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["Customername"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;

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

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

        }
    }
}

NOTE :
cryRpt.Load(PUT CRYSTAL REPORT PATH HERE\\CrystalReport1.rpt");

The Crystal Reports file path in your C# project files location, there you can see CrystalReport1.rpt . So give the full path name of Crystal Reports file like c:\projects\crystalreports\CrystalReport1.rpt

Now you can run the program . Enter a Customer Name(enter any existing customer from Ordermaster table) and click the button , then your report is look like the following picture.

csharp-crystal-report-string-final


Here we get the result of the Customer4's order details.
 

No comments :