65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 的 DataSet 和 DataTable 的 Crystal Report

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.12/5 (41投票s)

2008年8月28日

CPOL

2分钟阅读

viewsIcon

440747

downloadIcon

13393

使用 C# 的 DataSet 和 DataTable 的 Crystal Report

add_rpt-5.jpg

引言

在我的上一篇文章中,我描述了如何使用Oracle视图创建Crystal Report。
在本文中,我将演示如何使用ADO.NET DataTable创建Crystal Report。

您会发现这篇文章非常有趣,简单易懂。
本文需要.NET的基础知识。

注意:请为这篇文章投票。

背景

阅读本文不需要任何背景知识。这篇文章非常简单,只需要.NET的基本知识。
但我建议您也阅读我的上一篇文章,尽管它与本文没有直接关系。

Using the Code

现在理论就够了,我们将进入正题。
所以,我们开始吧…… 我为此项目创建了 2 个示例表。表的脚本如下所示,其中包含一些示例插入查询以获取示例数据。
如下所示,其中包含一些示例插入查询以获取示例数据。

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');

首先,在 Microsoft Visual Studio 2005 中创建一个项目,并将其命名为 CrystalReportWithOracle

然后创建一个名为 frmMain 的窗体,并向该窗体添加一个 Crystal Report 查看器控件。
添加对 System.Data.OracleClient 的引用。

步骤 1:添加 DataSet 和 DataTable

DataSet 添加到您的项目中,并将其命名为 myDataSet,如下所示

add_dataset.jpg

现在向 myDataSet 添加 DataTable

add_data_table-1.jpg

现在,按照下图所示,向您的 DataTable 添加列。
您的列名和 datatype 应该与您的数据库中的相同。

add_data_table-2.jpg

如下所示更改 DataTable 列的 datatype

add_data_table-3.jpg

现在将此 DataTable 保存为 my_dt

add_data_table-4_change_name.jpg

现在我们已经创建了我们的 DataSet DataTable。 下一步是创建 CrystalReport

步骤 2:添加 Crystal Report

向项目中添加一个 Crystal Report,并将其命名为 my_rpt

add_rpt.jpg

选择 使用报表向导

add_rpt-1.jpg

从项目数据中选择数据源,在本例中为 my_dataset

add_rpt-2.jpg

选择要在报表上显示的列。

add_rpt-3.jpg

如果需要,添加一个分组依据列。

add_rpt-4.jpg

现在我们的设计部分就完成了。

步骤 3:将我们的报表绑定到我们的 DataSource

以下是使用 C# 代码将我们的报表绑定到 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;
        }
    }
}

关注点

我感兴趣的其他文章是

© . All rights reserved.