Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Crystal Report with DataSet and DataTable using C#

0.00/5 (No votes)
8 Sep 2008 5  
Crystal Report with Dataset and DataTable using C#
add_rpt-5.jpg

Introduction

In my previous article, I described how to create Crystal Report with Oracle Views.
In this article, I am going to demonstrate how to create a Crystal Report with ADO.NET DataTable.

You will find this article very interesting, simple and easy to understand.
This article needs basic knowledge of .NET.

Note: Please vote for this article.

Background

No background knowledge is needed for this article. This article is very simple and just requires very basic knowledge of .NET.
But I recommend reading my previous article as well, though it has no direct relation with this article.

Using the Code

Now enough of theory, we will move to our point.
So here we go... I have created 2 sample tables for this project. Scripts of tables are
as follows, with some sample insert query to have sample data.

create table tbl_project
(
PROJECT_ID NUMBER(4),
PROJECT_NAME  VARCHAR2(150),
GROUP_CODE  NUMBER(2)
)

create table tbl_project_group
(
GROUP_CODE  NUMBER(2),
GROUP_NAME  VARCHAR2(100)
);

insert into tbl_project values(1,'CrystalReportWithOracle',1);

insert into tbl_project values(2,'Ajax Application',2);

insert into tbl_project_group values(1,'windows application');

insert into tbl_project_group values(2,'Web application');

First of all, create a project in Microsoft Visual Studio 2005 and name it CrystalReportWithOracle.

Then create a form as frmMain and add a Crystal report viewer control to this form.
Add a Reference to System.Data.OracleClient.

Step 1: Adding A DataSet and DataTable

Add a DataSet to your Project and name it as myDataSet, as follows:

add_dataset.jpg

Now add a DataTable to myDataSet:

add_data_table-1.jpg

Now add columns to your DataTable as given below in the image.
Your column name and datatype should be the same as that in your database.

add_data_table-2.jpg

Change the datatype of the DataTable columns as shown below:

add_data_table-3.jpg

Now save this DataTable as my_dt.

add_data_table-4_change_name.jpg

Now we have created our DataSet and DataTable. The next step is to create a CrystalReport.

Step 2: Adding A Crystal Report

Add a Crystal report to the project and name it as my_rpt.

add_rpt.jpg

Choose Using the report wizard.

add_rpt-1.jpg

Choose the data source from project data which is my_dataset in our case.

add_rpt-2.jpg

Choose the columns to be displayed on the report.

add_rpt-3.jpg

Add a group by column, if you want.

add_rpt-4.jpg

Now our designing part is complete.

Step 3: Binding Our Report to our DataSource

Below is the C# code to bind our report to the datasource.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
using System.IO;

namespace CrystalReportWithOracle
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            my_rpt objRpt;
            // Creating object of our report.
            objRpt = new my_rpt();

            String ConnStr = "SERVER=mydb;USER ID=user1;PWD=user1";

            OracleConnection myConnection = new OracleConnection(ConnStr);

            String Query1 = "select a.PROJECT_ID,a.PROJECT_NAME,b.GROUP_NAME from 
            tbl_project a,tbl_project_group b where a.group_code= b.group_code";

            OracleDataAdapter adapter = new OracleDataAdapter(Query1, ConnStr);

            DataSet Ds = new DataSet();

            // here my_dt is the name of the DataTable which we 
            // created in the designer view.
            adapter.Fill(Ds, "my_dt");

            if (Ds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show("No data Found", "CrystalReportWithOracle");
                return;
            }

            // Setting data source of our report object
            objRpt.SetDataSource(Ds);

            CrystalDecisions.CrystalReports.Engine.TextObject root;
            root = (CrystalDecisions.CrystalReports.Engine.TextObject)
                 objRpt.ReportDefinition.ReportObjects["txt_header"];
            root.Text = "Sample Report By Using Data Table!!";

            // Binding the crystalReportViewer with our report object. 
            crystalReportViewer1.ReportSource = objRpt;
        }
    }
}

Points of Interest

My other articles of interest are:

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here