我们采用下面的几步使用
Push
模式执行水晶报表:
1. 设计一个 DataSet
2. 创建一个 .rpt 文件同时将其指定给上一步建立的 DataSet 。
3. 在 aspx 页面中拖放一个 CrystalReportViewer 控件同时将其与前面的 rpt 文件建立联系。
4. 在代码中访问数据库并把数据存入 DataSet
5. 调用 DataBind 方法。
设计一个 DataSet
1) 右击 “ 解决方案浏览器 ” ,选择 “ 添加 ”--“ 添加新项 ”-->“ 数据集 ”
2) 从 “ 服务器资源管理器 ” 中的 “SQL Server” 中拖放 “Stores” 表 ( 位于 PUBS 数据库中 ) 。
1. 设计一个 DataSet
2. 创建一个 .rpt 文件同时将其指定给上一步建立的 DataSet 。
3. 在 aspx 页面中拖放一个 CrystalReportViewer 控件同时将其与前面的 rpt 文件建立联系。
4. 在代码中访问数据库并把数据存入 DataSet
5. 调用 DataBind 方法。
设计一个 DataSet
1) 右击 “ 解决方案浏览器 ” ,选择 “ 添加 ”--“ 添加新项 ”-->“ 数据集 ”
2) 从 “ 服务器资源管理器 ” 中的 “SQL Server” 中拖放 “Stores” 表 ( 位于 PUBS 数据库中 ) 。
3)
此时在数据集中就会有一个
Stores
表的结构图。
- .xsd 文件中仅仅包含一个结构图,但是不会有任何数据在里面。
创建 .rpt 文件 :
4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5) 建立 .rpt 文件之后,右击 “ 详细资料 ”-->" 添加/删除数据库 “
6) 在 ” 数据库专家 “ 窗口中,展开 ” 项目数据 “( 代替以前的 OleDb) ,展开 “ADO.Net 数据集 ”--"DataSet1“ ,选择 ”Stores“ 表。
7) 将 ”Stores" 表添加到 “ 选定的表 ” 中,点击 “OK”
- .xsd 文件中仅仅包含一个结构图,但是不会有任何数据在里面。
创建 .rpt 文件 :
4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5) 建立 .rpt 文件之后,右击 “ 详细资料 ”-->" 添加/删除数据库 “
6) 在 ” 数据库专家 “ 窗口中,展开 ” 项目数据 “( 代替以前的 OleDb) ,展开 “ADO.Net 数据集 ”--"DataSet1“ ,选择 ”Stores“ 表。
7) 将 ”Stores" 表添加到 “ 选定的表 ” 中,点击 “OK”
8)
使用
PULL
模式下的方法,建立一个
WebForm
建立一个 Crystal Report Viewer 控件
9) 建立一个 Crystal Report Viewer 控件,并设定其属性,此处与 PULL 模式下是一致的。
Code Behind 代码 :
10) 在 Page_Load 方法中使用下面的子函数:
VB.Net 代码:
Sub BindReport()
Dim myConnection As New SqlClient.SqlConnection()
myConnection.ConnectionString= "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes"
Dim MyCommand As New SqlClient.SqlCommand()
MyCommand.Connection = myConnection
MyCommand.CommandText = "Select * from Stores"
MyCommand.CommandType = CommandType.Text
Dim MyDA As New SqlClient.SqlDataAdapter()
MyDA.SelectCommand = MyCommand
Dim myDS As New Dataset1()
' 这就是我们在设计模式上使用的 DataSet
MyDA.Fill(myDS, "Stores")
' 你不得不使用与你前面 DataSet 相同名字。
Dim oRpt As New CrystalReport1()
' 水晶报表绑定
oRpt.SetDataSource(myDS)
' 设定水晶报表的 ReportSource
CrystalReportViewer1.ReportSource = oRpt
End Sub
C# 代码:
private void BindReport()
{
string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
CrystalReport1 oCR = new CrystalReport1();
Dataset1 ds = new Dataset1();
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from Stores";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"stores");
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = oCR;
}
注意:在上面的代码中,你得注意一下 oRpt 是 "Strongly Typed" 的报表文件。如果你需要使用 "UnTyped" 报表,你得使用 ReportDocument 对象,然后再调用报表文件。
运行你的程序。
11) 运行你的程序
将报表文件导出成为其它格式
建立一个 Crystal Report Viewer 控件
9) 建立一个 Crystal Report Viewer 控件,并设定其属性,此处与 PULL 模式下是一致的。
Code Behind 代码 :
10) 在 Page_Load 方法中使用下面的子函数:
VB.Net 代码:
Sub BindReport()
Dim myConnection As New SqlClient.SqlConnection()
myConnection.ConnectionString= "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes"
Dim MyCommand As New SqlClient.SqlCommand()
MyCommand.Connection = myConnection
MyCommand.CommandText = "Select * from Stores"
MyCommand.CommandType = CommandType.Text
Dim MyDA As New SqlClient.SqlDataAdapter()
MyDA.SelectCommand = MyCommand
Dim myDS As New Dataset1()
' 这就是我们在设计模式上使用的 DataSet
MyDA.Fill(myDS, "Stores")
' 你不得不使用与你前面 DataSet 相同名字。
Dim oRpt As New CrystalReport1()
' 水晶报表绑定
oRpt.SetDataSource(myDS)
' 设定水晶报表的 ReportSource
CrystalReportViewer1.ReportSource = oRpt
End Sub
C# 代码:
private void BindReport()
{
string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
CrystalReport1 oCR = new CrystalReport1();
Dataset1 ds = new Dataset1();
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from Stores";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"stores");
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = oCR;
}
注意:在上面的代码中,你得注意一下 oRpt 是 "Strongly Typed" 的报表文件。如果你需要使用 "UnTyped" 报表,你得使用 ReportDocument 对象,然后再调用报表文件。
运行你的程序。
11) 运行你的程序
将报表文件导出成为其它格式
你能够将报表文件导出成为下列格式:
1. PDF (Portable Document Format)
1. 2. DOC (MS Word Document)
2. 3. XLS (MS Excel Spreadsheet)
3. 4. HTML (Hyper Text Markup Language – 3.2 or 4.0 compliant)
4. 5. RTF (Rich Text Format)
使用
Pull
模式导出报表
1. PDF (Portable Document Format)
1. 2. DOC (MS Word Document)
2. 3. XLS (MS Excel Spreadsheet)
3. 4. HTML (Hyper Text Markup Language – 3.2 or 4.0 compliant)
4. 5. RTF (Rich Text Format)
当导出使用 Pull 模式创建的文件时,水晶报表准确地打开所需要的数据,下面是执行导出功能的代码:
C# 代码 :
VB.Net 代码 :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myReport As CrystalReport1 = New CrystalReport1()
' 注意:这里我们建立一个 strong-typed 的水晶报表实例。
Dim DiskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions()
myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile
' 导出成为其它文件时也需要这个选项
' 如 Microsoft Exchange, MAPI 等 .
myReport.ExportOptions.ExportFormatType = CrystalDecisions. [Shared].ExportFormatType.PortableDocFormat
' 这里我们导出成为 .pdf 格式文件,你也能选择上面的其它类型文件
DiskOpts.DiskFileName = "c:\Output.pdf"
' 如果你不指定确切的目录,那么文件就会保存到[ Windows]\System32 目录中去了
myReport.ExportOptions.DestinationOptions = DiskOpts
' 水晶报表文件不包含直接的 FileName 属性,因此你不能直接指定保存的文件名
' 所以你不得不使用 DiskFileDestinationOptions 对象,设置它的 DiskFileName 属性
' 为你想要的路径,最后将水晶报表的 DestinationsOptions 属性指定为上面的 DiskFileDestinationOption
myReport.Export()
' 上面的代码将完成导出工作。
End Sub
使用 PUSH 模式导出水晶报表
当导出的报表是由 PUSH 模式建立的时,第一步就是通过编程建立连接并组装 DataSet ,设置报表的的 SetDataSource 属性。再下面的步骤就有 Pull 模式一样的了。
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203450,如需转载请自行联系原作者