安装 Crystal Report 9.2 后产生的问题及解决方案[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 haibodotnet 的 blog

目录:
一、引言
二、概念与原理
三、问题
1、编译器错误信息: </b>bc30560: “crystalreportviewer”在命名空间“crystaldecisions.web”中不明确。
2、复制 crystal report viewer 时,显示“控件创建错误”。
3、创建 crystal report viewer 时,显示“控件创建错误”。
4、分析器错误信息: 基类包括字段“crystalreportviewer1”,但其类型 (crystaldecisions.web.crystalreportviewer) 与控件 (crystaldecisions.web.crystalreportviewer) 的类型不兼容。
5、分析器错误信息: 找到的名为“crystaldecisions.shared”的程序集清单定义与程序集引用不匹配。
6、问题:无效的报表源
7、如果你用的是 vs.net 2003……
8、问题:在 web.config 中新建一个工程时没有<assemblies><add assembly="crystaldecisions.crystalreports.engine, version=9.2.3300.0, culture=neutral, publickeytoken=692fbea5521e1304"/>
我手工添加后出现配置错误!!!
-------------------------------------------------------------------------
一、引言
在.net 里,dll hell 问题被解决——包含元数据的,具有自描述性的程序集及其 xcopy 部署!
但是,又似乎带来了新的问题——.net 程序升级、迁移问题……
升级不再只是简单安装,有工作不得不做了……
-------------------------------------------------------------------------
二、概念与原理
1、各种 crystal reports 程序的“程序集版本”……
crystal reports for visual studio .net 2002
crystal reports 管理组件的“程序集版本”为 9.1.3300。

crystal reports for visual studio .net 2003 的程序
crystal reports 管理组件的“程序集版本”为 9.1.5000.0。

crystal reports 9 的程序(仅限于 visual studio 2002)
crystal reports 管理组件的“文件版本”为 9.2.9466.x。

crystal reports 9.2 的程序(与 visual studio 2002 和 2003)
crystal reports 管理组件的“文件版本”为 9.2.9500.x。
------------------------------------------------
2、crystal report viewer
vs.net 里的 crystal report viewer 版本是 9.1.3300.0,
crystal report 9.2 里的 crystal report viewer 版本是 9.2.3300.0
为窗体添加 crystal report viewer 后,会在 aspx 文件里增加以下代码,缺一不可。
代码(1)<%@ register tagprefix="cr" namespace="crystaldecisions.web" assembly="crystaldecisions.web, version=9.1.3300.0, culture=neutral, publickeytoken=692fbea5521e1304" %>
是为了引入命名空间 crystaldecisions.web。
代码(2)<cr:crystalreportviewer id="crystalreportviewer1" runat="server" enabledrilldown="false" displaygrouptree="false" height="50px" width="350px"></cr:crystalreportviewer>
是表示 crystalreportviewer 控件的标签。
-------------------------------------------------------------------------
三、问题
1、编译器错误信息: </b>bc30560: “crystalreportviewer”在命名空间“crystaldecisions.web”中不明确。
-------------------------
问题分析:
在“设计视图”删除 crystal report viewer 后,代码(1)仍然存在,如果此时再次添加新版本的 crystal report viewer,会导致出现两个不同的代码(1):
<%@ register tagprefix="cr1" namespace="crystaldecisions.web" assembly="crystaldecisions.web, version=9.2.3300.0, culture=neutral, publickeytoken=692fbea5521e1304" %>
<%@ page language="vb" codebehind="analysis.aspx.vb" autoeventwireup="false" inherits="research_vb.analysis" %>
<%@ register tagprefix="cr" namespace="crystaldecisions.web" assembly="crystaldecisions.web, version=9.1.3300.0, culture=neutral, publickeytoken=692fbea5521e1304" %>
-------------------------
解决方案:
把 crystal report viewer 和所有代码(1)删除,重新添加 crystal report viewer。
------------------------------------------------
2、复制 crystal report viewer 时,显示“控件创建错误”。
-------------------------
问题分析:
复制 crystal report viewer 时,代码(1)不会被复制。
-------------------------
解决方案:
手工复制代码(1)。
------------------------------------------------
3、创建 crystal report viewer 时,显示“控件创建错误”。
-------------------------
问题分析:
如果不是残存代码(1),就是匪夷所思……
-------------------------
解决方案:
(1)先在“设计视图”删除 crystal report viewer 控件;
(2)再到“html 视图”删除代码(1)
(3)创建 crystal report viewer ;
如果显示“控件创建错误”,则切换到“html”视图,再切换会“设计”视图,自动恢复!!!
------------------------------------------------
4、分析器错误信息: 基类包括字段“crystalreportviewer1”,但其类型 (crystaldecisions.web.crystalreportviewer) 与控件 (crystaldecisions.web.crystalreportviewer) 的类型不兼容。
-------------------------
问题分析:
代码(1)不是当前 crystal report viewer 的版本
-------------------------
解决方案:
把 crystal report viewer 和所有代码(1)删除,重新添加 crystal report viewer。
------------------------------------------------
5、分析器错误信息: 找到的名为“crystaldecisions.shared”的程序集清单定义与程序集引用不匹配。
源文件: e:\web\venditionsystem\web.config    行: 15
程序集加载跟踪: 下列信息有助于确定程序集“crystaldecisions.shared”无法加载的原因。
-------------------------
问题分析:
程序集 crystaldecisions.shared 在 web.config 里的程序集清单定义是 cr for vs.net 版本的,而项目中引用的是 cr 9.x 版本的……
-------------------------
解决方案一:
新建一个解决方案,在窗体里添加 crystal report viewer,会自动在 web.config 中生成新版本的程序集清单定义,然后把这个 web.config 复制过来……
解决方案二:
修改 web.config 里的旧版本的程序集清单定义:
<add assembly="crystaldecisions.shared, version=9.1.3300.0, culture=neutral, publickeytoken=692fbea5521e1304"/>
把 version=9.1.3300.0 改成 version=9.2.3300.0。
-------------------------
总结:其它 crystaldecisions 程序集引用的冲突问题如:crystaldecisions.crystalreports.engine,解决方案同上。
------------------------------------------------
6、问题:无效的报表源
-------------------------
问题分析:
reportdocument、crystalreportviewer 组件和 crystaldecisions 程序集的版本不一致:
-------------------------
解决方案:
(1)删除所有的 crystaldecisions 程序集引用;

本文关键:水晶报表
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top