

水晶报表.NET 2003 下使用水晶报表(Crystal Report)
Crystal Reports for Visual Studio .NET 是用于 Visual Studio .NET 的标准报表开发工具, 使用他可以快速创建各种类型的报表(如交叉表、子报表、图表……)并能同时承载于Web和 Windows平台,还可将 Crystal 报表作为报表 Web 服务在 Web 服务器上发布。
一、在第一次使用.NET自带的水晶报表设计器时,设计器会提示注册。
注册号: 6655108968
密钥号:AAP5GKS0000S 272000F
二、将数据加载到报表并显示数据。
Crystal Reports提供拉模型和推模型两种数据访问方式,在拉模型中,驱动程序将直接连接到数据库并根据需要将数据“拉”进来,使用这种模型时,为了获取数据而执行的 SQL 命令由 Crystal Reports 本身处理,不需要开发人员编写代码,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集(DataSet),并且将该数据集传递给报表。
使用ADO.NET 数据集创建报表:
1、 添加数据集框架文件,将文件命名为DataSet1.xsd。
2、 向DataSet1.xsd添加数据集框架,可以手动添加框架也可以从“服务器资源管理器”中将数据库中的数据表拖拉到DataSet1.xsd中自动生成数据的框架。
3、 创建新报表。
①、在 Visual Studio .NET 解决方案资源管理器中,右击您的项目以显示快捷菜单。
②、指向“添加”,单击“添加新项”。
③、在“添加新项”对话框中,从“模板”区域选择“Crystal Report”。单击“打开”。
④、在 Crystal Report 库中,选择下列选项之一:
a) 使用报表专家——指导您完成报表的创建过程,并将您的选择添加到 Crystal Report Designer。
b) 作为空白报表——打开 Crystal Report Designer。
c) 来自于现有的报表——创建新报表,它与指定的另一报表设计相同。
⑤、向报表添加数据集框架,打开报表设计器后,右击“字段资源管理器”中的数据库字段项,选择“添加或删除数据库”项打开“数据库专家”。点击“项目数据”—>“ADO.NET”将刚才创建的DataSet1.xsd添加到报表中。
⑥、使用数据表中的字段设计报表,详细的设计可以参考开发工具中的帮助文档。
4、 使用CrystalReportViewer报表查看器,查看报表数据,Web 应用程序使用 Web 窗体CrystalReportViewer,而Windows 应用程序则使用 Windows 窗体 CrystalReportViewer
5、 将CrystalReportViewer从工具箱中拖到web或windows窗体上。
6、 通过程序将报表绑定到CrystalReportViewer上,并将数据集中的数据显示到CrystalReportViewer上。
ReportDocument repDoc= new ReportDocument(); //报表类
repDoc.Load(m_ReportPath); //加载报表文件,m_ReportPath为报表文件的物理路径。
repDoc.SetDataSource(ds); //设置报表的数据源,ds表示与上面创建的DataSet1.xsd具有相同框架的数据集。
crViewer.ReportSource = repDoc; //将报表对象绑定到CrystalReportViewer报表查看器的ReportSource属性上。
7、 将报表数据导成 .PDF,.RTF,.DOC,.HTML,.XLS等文件格式,程序如下:
ReportDocument repDoc= new ReportDocument(); //报表类
repDoc.Load(m_ReportPath); //加载报表文件,m_ReportPath为报表文件的物理路径。
repDoc.SetDataSource(ds); //设置报表的数据源,ds表示与上面创建的DataSet1.xsd具有相同框架的数据集。
ExportOptions exOpt=repDoc.ExportOptions; //创建输出对象exOpt
exOpt.ExportDestinationType=ExportDestinationType.DiskFile; //设置导出目标类型,diskfile为磁盘文件
DiskFileDestinationOptions diskOpt = new DiskFileDestinationOptions ();
exOpt.DestinationOptions =diskOpt; //为exOpt属性DestinationOptions设置值
diskOpt.DiskFileName=C:/ ReportTemp/report.pdf ; //设置导出文档的路径和文件名
exOpt.ExportFormatType=ExportFormatType.PortableDocFormat//设置导出文档的格式为pdf格式。这里可以设置其他文件格式。
repDoc.Export(); //将文件导出。
三、部署报表。
要运行报表程序,必须在目标机器上部署Crystal Reports 合并模块,可以创建web安装项目或windows安装项目来部署合并模块,创建安装项目时需要将下列合并模块添加到项目中
Crystal_Database_Access2003.msm
Crystal_Database_Access2003_chs.msm
Crystal_Managed2003.msm
Crystal_Managed2003_chs.msm
Crystal_regwiz2003.msm
VC_User_CRT71_RTL_X86_---.msm (被基于 ADO.NET 的报表使用)
VC_User_STL71_RTL_X86_---.msm (被基于 ADO.NET 的报表使用)
创建步骤:
1、创建一个安装项目。
2、向项目中添加报表的合并模块。
在注册模块Regwiz的属性license key 添入密钥号:AAP5GKS0000S
272000F
(否则运行报表时报表引擎会报“无效密钥”的错误)
3、生成项目
四、使用报表中可以出现的各种问题
1、 水晶报表查询引擎出错的问题:
设计时的数据集框架和数据源中数据集框架不同引起的(如列名不同,表名不同….)
2、 水晶报表登陆出错的问题,可能原因:
①、报表文件不存在
②、存放报表文件的文件夹的权限问题(NTFS格式的文件),可以给EveryOne用户添加完全控制权限。
③、水晶报表 Web 查看器文件夹 NTFS 权限的问题 涉及的文件夹
VS.NET Crystal Reports: C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers
④、导出时的目标文件夹(临时文件夹) NTFS 权限的问题.需要EveryOne完全控制权限。
3、 水晶报表加载出错的问题,可能原因:
需要加载的报表文件不存在,或物理路径不对。