Visual Studio 2008自带的Crystal Reports Basic版本,事实上它的ActiveX组件版本是10.5的,关键的组件有两个:craxddrt.dll和crviewer.dll。本文简要介绍如何在C#项目中使用Crystal Reports Basic的ActiveX组件,以及如何发布带有该组件的项目。
基本思路是使用craxddrt.dll中的ApplicationClass打开一个报表,然后将报表实例赋给crviewer.dll的ActiveX控件以显示报表,现假设报表文件(*.rpt)中没有任何参数设置,数据库连接使用*.rpt模板中的默认连接。要在C#中打开一个rpt报表,首先需要添加对craxddrt.dll的COM引用:
然后,打开需要添加report viewer的Windows Forms窗体,在工具栏上点右键添加如下工具:
C#代码大致如下:
using CRAXDDRT; ApplicationClass applicationClass = new ApplicationClass(); Report report = applicationClass.OpenReport(@"c:\test.rpt", null); reportViewer1.ReportSource = report; reportViewer1.ViewReport();
现在开始制作安装程序。制作安装程序的时候,注意Visual Studio 2008的Setup Project向导会自动分析你代码的关联性(Dependencies),然后会把craxddrt.dll和crviewer.dll放在“Detected Dependencies”节点下,并会将这两个文件复制到安装目录中。此时,记得在File System Editor中,分别将这两个文件的Register属性改为vsdrfCOM:
编译Setup Project后生成Setup.msi文件。
部署的时候,客户机上需要首先安装Crystal Reports的组件,安装文件可以在开发机器的%program files%\Microsoft SDKs\windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5目录中找到。找到后,在客户机器上首先运行CRRedist2008_x86.msi(32位)或CRRedist2008_x64.msi(64位)安装程序,再运行刚刚编译得到的Setup.msi文件即可。