C#使用水晶报表详细教程

需积分: 9 5 下载量 15 浏览量 更新于2024-09-18 1 收藏 7KB TXT 举报
“C#水晶报表操作实例 - 使用C#在Visual Studio 2005中进行水晶报表的详细实例,包括PULL和PUSH两种数据填充模式。” 在C#编程中,水晶报表(Crystal Reports)是一种强大的报表设计工具,常用于生成复杂的业务报告。这个实例主要介绍了如何在VS2005环境下利用C#与水晶报表进行交互。水晶报表支持两种数据填充模式:PULL(拉取)和PUSH(推送)模式。 1. PULL(拉取)模式: 在这种模式下,报表引擎负责从数据源获取数据。开发者需要在SQL语句中使用参数化查询,例如`Select T1, T2, T3 FROM T Where T1 = '{?parm}'`,这里的`{?parm}`是一个参数占位符,通过`SetParameterValue`方法设置参数值。以下是一个简单的示例代码: ```csharp using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; protected void Button_pull_Click(object sender, EventArgs e) { // 加载报表文件 CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt")); // 设置数据库登录信息,包括用户名、密码、服务器名和数据库名 CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "123456", @"SYWZSWL\SQLEXPRESS", "Test"); // 设置参数值 CrystalReportSource1.ReportDocument.SetParameterValue("Title", "һԱ"); } ``` 2. PUSH(推送)模式: 与PULL模式不同,PUSH模式是将数据集(DataSet)直接推送到报表,而不是由报表引擎执行SQL查询。这种方式适用于已经处理过数据或需要在代码中控制数据流的情况。以下是一个简单的示例: ```csharp using System.Data.SqlClient; using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; protected void Button_push_Click(object sender, EventArgs e) { // 创建数据库连接 SqlConnection conn = new SqlConnection("Data Source=SYWZSWL\SQLEXPRESS;Initial Catalog=Test;User ID=sa;Password=123456"); conn.Open(); // 执行SQL查询并填充数据集 SqlCommand cmd = new SqlCommand("SELECT * FROM Table WHERE Column = @Parm", conn); cmd.Parameters.AddWithValue("@Parm", "Value"); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); // 关闭数据库连接 conn.Close(); // 加载报表并设置数据源 ReportDocument report = new ReportDocument(); report.Load(Server.MapPath("CrystalReport.rpt")); report.SetDataSource(dataSet); // 显示报表 CrystalReportViewer1.ReportSource = report; } ``` 在Web应用中,通常会使用`CrystalReportSource`和`CrystalReportViewer`控件。`CrystalReportSource`用于设置报表的来源,而`CrystalReportViewer`则用于在网页上显示报表。在FORM应用中,可以直接创建`CrystalReport`对象并设置其`ReportSource`属性来显示报表。 这个实例提供了C#操作水晶报表的基础知识,包括如何加载报表文件、设置数据库登录信息、参数化查询以及在PULL和PUSH模式下填充数据。这有助于开发者理解和实现自定义的报表功能。