VS.NET下水晶报表分发时的问题及解决

** 一、载入报表时报错 **

千辛万苦 , 总算作完了程序 , 报表在开发机器上测试一切正常 , 做安装项目 , 生成后兴冲冲的拿到客户机上去试验,晕,载入报表时却报错(如图 1 ),怎么会 ??? 仔细检查了程序代码 , 实在没有任何错误 , 看来问题出在报表发布上了。


图 1

经过一番苦苦寻觅,总算找到了问题所在。原来 VS.NET 环境下发布项目时水晶报表需要包含以下三种组件:
报表( *.rpt )
模块( *.msm )
运行库( *.msm )

这些模块文件是在 C:\Program Files\Common Files\Merge Modules\ 目录里面,别急,让我慢慢跟您说。
1 、报表( *.rpt )
用户编程时创建的水晶报表文件,这个很简单,你不会找不到它吧,哈哈。
2 、模块( *.msm )
** ** ** Managed.msm
** 该模块包含了 CR for VS .NET 的管理模块,如
CrystalDecisions 、 CrystalReports.Engine.DLL 、 CrystalDecisions.Web.DLL, 和 CrystalDecisions.Windows.Forms.DLL.……
Managed_chs.msm 是该模块的中文版语言支持。
** ** ** Database_Access.msm **
该模块包含了数据库的驱动、与不同数据库的联结、报表导出为 RTF 和 HTML 格式的文档和图表组件。
Database_Access_chs.msm 是此模块的中文版语言支持。
** ** ** Regwiz.msm
** 注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过,如图 2 所示。 我使用的 VS.NET2003 自带的 CrystalReport 的 License Key 是“ AP5GKS0000GDE100DS ”。


图 2

3 、 .. 运行库( *.msm )
如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_CRT.msm 和 VC_STL.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的 "Module Retargetable Folder" 项必须修改成为系统目录,如图 3 所示。


图 3

现在,我们知道答案了,在 VS.NET 安装工程中,系统检测出来的依赖项只有 dotNETFXRedist_x86_chs.msm 和 Managed.msm 这两个模块,其他的模块我们需要手动加入。
1 、在解决方案资源管理器里,右键单击安装项目选择 " 添加 "- 〉 " 合并模块( M ) ", 如图 4 所示。


图 4

2 、在 " 添加模块 " 对话窗体,选择 Managed_chs.msm 、 Database_Access, Database_Access_chs, regwiz 、 VC_CRT.msm 和 VC_STL.msm 模块,如图 5 所示。


图 5

3 、重新生成安装项目,没问题,只是生成的安装程序一下子大了七、八兆。

** 二、系统注册 **

报表在部分 Win98 的客户端可以载入,在部分 Win98 的客户端载入报表时却提示 "Load Report Failed" (如图 6 ),可恶,居然还出错,怎么回事?


图 6

原来,这是因为水晶报表运行时所需的 CRQE.dll 在客户端的系统注册不正确,而原因又是 ATL.dll 的版本不对( Windows 98/ME 下的正确版本号应为 3.0.8449 )。解决办法有两条:
1 、 在客户端安装 IE6.0 ,难怪有的客户端运行正常。
2 、 将 ATL.msm 模块添加到安装工程, ATL.msm 是 Visual Studio installer 1.1 的一部分,可以去微软的网站 http://msdn.microsoft.com/vstudio/downloads/vsi/ 免费下载, 添加办法同前。

三、语言的支持

报表在 Win2000 的客户端一切正常,在 Win98 的客户端运行提示 " 该字段名未知 " (如图 7 ),不会要客户端都装 2000 吧,要求也太高了?


图 7

仔细分析,原来是报表使用到的 sql server 数据库中的字段名为中文的缘故,也许是 .net 的缘故,程序对中文字段名支持得不错,没想到报表这里还是过不了关,将其字段名改名为英文字段名,再测试就一切 ok 了。

好了,顺利过关!希望本文对您处理 VS.NET 下水晶报表发布问题时能有所帮助。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus