asp.net2.0中水晶报表的应用实例
水晶报表的应用
本节将通过一个实例来介绍如何在Windows应用程序中使用水晶报表。实例运行结果如图1所示。
程序开发步骤如下所示。
(1)新建一个Windows应用程序,命名为28_01,其主窗体默认为Form1.cs。
(2)Form1.cs窗体中,添加一个ToolTip控件和一个CrystalReportViewer控件,分别用来作为工具栏和显示用户信息报表。
(3)在当前项目中,新建一张Crystal报表,命名为CrystalReport1.rpt,它主要用来显示用户信息。
(4)程序主要代码如下。
Form1窗体在运行时,将数据表中的所有记录显示在CrystalReport1.rpt报表中,并通过crystalReportViewer1控件显示出来。Form1窗体的Load事件代码如下:
private void Form1_Load(object sender, EventArgs e)
{
sqlcon = new SqlConnection(M_str_sql);
myda = new SqlDataAdapter("select * from tb_01", sqlcon);
myds = new DataSet();
myda.Fill(myds, "tb_01");
CrystalReport1 CReport = new CrystalReport1();
CReport.SetDataSource(myds.Tables["tb_01"]);
crystalReportViewer1.ReportSource = CReport;
}
单击【查找】按钮,程序使用ReportDocument 类对象的Load()方法加载指定报表,并通过设置DataDefinition类RecordSelectionFormula属性,将指定SQL查询语句的执行结果绑定到水晶报表上。【查找】按钮的Click事件代码如下:
private void toolStripButton1_Click(object sender, EventArgs e)
{
string P_str_sql = " {tb_01.Sex} like '" + toolStripComboBox1.Text.Trim() + "'";
ReportDocument reportDocument = new ReportDocument();
string P_str_creportPath = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0,
Application.StartupPath.LastIndexOf("")).LastIndexOf(""));
P_str_creportPath += "CrystalReport1.rpt";
reportDocument.Load(P_str_creportPath);
reportDocument.DataDefinition.RecordSelectionFormula = P_str_sql;
crystalReportViewer1.ReportSource = reportDocument;
}
完整程序代码如下:
★ ★★★★CrystalReport1.cs类文件完整程序代码★★★★★
//------------------------------------------------------------------------------
//
// 此代码由工具生成。
// 运行库版本:2.0.50727.42
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
namespace _8_01 {
using System;
using System.ComponentModel;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;
public class CrystalReport1 : ReportClass {
public CrystalReport1() {
}
public override string ResourceName {
get {
return "CrystalReport1.rpt";
}
set {
// Do nothing
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section1 {
get {
return this.ReportDefinition.Sections[0];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section2 {
get {
return this.ReportDefinition.Sections[1];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section3 {
get {
return this.ReportDefinition.Sections[2];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section4 {
get {
return this.ReportDefinition.Sections[3];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section5 {
get {
return this.ReportDefinition.Sections[4];
}
}
}
[System.Drawing.ToolboxBitmapAttribute(typeof(CrystalDecisions.Shared.ExportOptions), "report.bmp")]
public class CachedCrystalReport1 : Component, ICachedReport {