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

转载 2006年05月23日 09:06:00

转自网上的一篇经典文章,关于水晶报表的部署问题解决,放于此处,方便查阅和他人参考!

 

一、载入报表时报错

  千辛万苦,总算作完了程序,报表在开发机器上测试一切正常,做安装项目,生成后兴冲冲的拿到客户机上去试验,晕,载入报表时却报错(如图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所示。



图 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下水晶报表发布问题时能有所帮助。

***汇编语言 实验10.2 解决除法溢出的问题

汇编语言 实验10.2 解决除法溢出的问题写给自己的一些题外话: 因为各种各样(考试,加上萎靡的精神状态)的原因,在这一题卡了好几天,就是搞不懂商和余数的表示,直到今天才恍然大悟,下面我先总结一下di...
  • lucas_w17
  • lucas_w17
  • 2017年05月23日 23:42
  • 311

银行家算法解决死锁问题

参考文献:http://www.docin.com/p-1491046367.html 银行家算法安全性序列分析 摘要:在操作系统的处理机调度的过程中,由于竞争资源或者进程间推进顺序非法,都会导致死锁...
  • xiaobangkuaipao
  • xiaobangkuaipao
  • 2017年07月23日 15:42
  • 322

SSH中解决NoSession问题

openSessionInView     org.springframework.orm.hibernate3.support.OpenSessionInViewFilter openS...
  • u011957679
  • u011957679
  • 2014年05月22日 15:14
  • 1554

程序员遇到问题时怎么办

技术区: 程序员遇到问题时怎么办: 根本的指导方针 1.首先写代码的时候最好不要有缺陷。最好的修复方法就是让bug胎死腹中。 良好的单元测试强制数据库约束使用输入验证框架避免未...
  • lijia791541916
  • lijia791541916
  • 2016年06月23日 13:19
  • 1935

浅谈以数据结构的视角去解决算法问题的步骤

浅谈以数据结构的视角去解决算法问题的步骤 在程序设计中,很多复杂的算法设计问题,从数据结构的角度来看其实都可以按照这种思路来解决: 1.对于要处理的一组数据,根据实际需求整理出要处理的数据元素...
  • zolalad
  • zolalad
  • 2014年05月14日 14:49
  • 1513

Handler事件分发机制

Handler基础Handler事件分发相关类1.Message:消息对象,可通过Bundle存储数据及Runable存储业务逻辑。 Message的属性: long when; ...
  • BlogLaughFace
  • BlogLaughFace
  • 2016年04月29日 16:11
  • 614

php钩子和简单的分发方式

//简单的钩子实现例子 class tool{ public static function main($class, $fun, $data = ''){ //前置公共操作 ...
  • u014017080
  • u014017080
  • 2016年11月16日 11:02
  • 732

事件分发机制原理

之前讲解了很多与View绘图相关的知识,你可以在 安卓自定义View教程目录 中查看到这些文章,如果你理解了这些文章,那么至少2D绘图部分不是难题了,大部分的需求都能满足,但是关于View还有很多知识...
  • qianqianyihao
  • qianqianyihao
  • 2016年10月11日 14:12
  • 1725

HashMap对HashCode碰撞的处理

先说Java之外的,什么是拉链法?怎么解决冲突的: 拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数...
  • skiof007
  • skiof007
  • 2016年11月09日 17:15
  • 1947

MFC与.net区别对比

1.     MFC是在API的基础上封装出来的一个类库,给C++程序员在Windows上快速开发用的。 .Net类库是在Windows非托管API的基础上封装出来的一个托管类库,给程序员在各种Win...
  • qq_17242957
  • qq_17242957
  • 2014年10月10日 10:34
  • 1035
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS.NET下水晶报表分发时的问题及解决
举报原因:
原因补充:

(最多只允许输入30个字)