使用 C# 的 DataSet 和 DataTable 的 Crystal Report






4.12/5 (41投票s)
使用 C# 的 DataSet 和 DataTable 的 Crystal Report

引言
在我的上一篇文章中,我描述了如何使用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
,如下所示
现在向 myDataSet
添加 DataTable
现在,按照下图所示,向您的 DataTable
添加列。
您的列名和 datatype
应该与您的数据库中的相同。
如下所示更改 DataTable
列的 datatype
现在将此 DataTable
保存为 my_dt
。
现在我们已经创建了我们的 DataSet
和 DataTable
。 下一步是创建 CrystalReport
。
步骤 2:添加 Crystal Report
向项目中添加一个 Crystal Report,并将其命名为 my_rpt
。
选择 使用报表向导。
从项目数据中选择数据源,在本例中为 my_dataset
。
选择要在报表上显示的列。
如果需要,添加一个分组依据列。
现在我们的设计部分就完成了。
步骤 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;
}
}
}
关注点
我感兴趣的其他文章是