永遠值得記住的教訓,水晶報表9.2與Vs.net2003的問題

以前裝的水晶報表,都是8.5的,看不出問題,於是導致了一場悲劇,白白浪費了我2天時間,用來在代碼之間探索.下面列出9.2的水晶報表與vs.net 2003發生故障的解決方法.

如果你用的是 VS.NET  2003,則 Crystal Reports 9 (版本 9.2.0.x) 不能正確運行,需要升級到 CR 9 (版本 9.2.2.x).  
——————————————————————————————————————
引言:
  期盼已久的,基於 Web 的,水晶報表打印,導出功能已經在 Crystal Report 9.2 裏實現!
  但安裝 Crystal Report 9.2 後,原有的 .NET 程序仍然無法擁有這些超級實用功能,原因何在?!
  在.NET 裏,DLL Hell 問題被解決——包含元數據的,具有自描述性的程序集及其 XCopy 部署!
  但是,又似乎帶來了新的問題——.NET 程序升級、遷移問題……
  升級不再只是簡單安裝,有工作不得不做了……
——————————————————————————————————————
目錄
1、安裝 Crystal Report 9.2……
2、修改 Visual Studio.NET 的工具箱設置
3、“舊版本的報表文件”的升級……
4、“舊版本的 CrystalDecisions 程序集引用”的修改……
5、“Web 窗體文件中,水晶報表命名空間引用”升級……
6、“Web.config 中的,水晶報表相關的程序集”升級……
7、問題:我升級了CrystalReport9.2,現在CrystalReportViewer不能往設計視圖上拖放了,爲什麼?
8、問題:在web.config中新建一個工程時沒有<assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
9、問題:就是不行。 升級後沒有拖放控件沒有代碼(1)!!!
10、問題:無效的報表源
——————————————————————————————————————
1、安裝 Crystal Report 9.2……
首先卸載以前版本的 Crystal Report,如 Crystal Report For VS.NET,Crystal Report 9.0……
然後安裝!
這樣可以避免很多問題:
——————————————————————————————————————
2、修改 Visual Studio.NET 的工具箱設置
(1)右擊“工具箱”,選擇“自定義工具箱”,進入“自定義工具箱”對話框;
(2)選擇“.NET 框架組件”選項卡,點擊“程序集名稱”列標題,使其根據“程序集名稱”排序顯示;
(3)取消選擇所有 CrystalDecisions 版本爲 9.1.xxxx.x 的組件;
(4)點擊“瀏覽”按鈕,選擇“C:/Program Files/Common Files/Crystal Decisions/2.0/managed”文件夾,分別添加
CrystalDecisions.CrystalReports.Engine.dll:增加組件 ReportDocument、ReportClass,
CrystalDecisions.Web.dll:增加組件 CrystalReportViewer
CrystalDecisions.Windows.Forms.dll:增加組件 CrystalReportViewer
——————————————————————————————————————
3、“舊版本的報表文件”的升級……
用 Crystal Report 9.2 打開報表,做任意操作,然後撤銷,最後保存,就會升級報表。
注意:升級後,不能用舊版本的 Crystal Decisions 產品使用……
——————————————————————————————————————
4、“舊版本的 CrystalDecisions 程序集引用”的修改……
(1)CrystalDecisions 程序集:
CrystalDecisions.CrystalReports.Engine
CrystalDecisions.Web
CrystalDecisions.Enterprise.Report
CrystalDecisions.ReportSource
CrystalDecisions.Shared
等等……
(2)存放“程序集引用”的文件——項目文件;擴展名爲 ??proj,例如:C# 項目擴展名爲 csproj
原引用,如 crystaldecisions.web:
<Reference
       Name = "crystaldecisions.web"
       AssemblyName = "CrystalDecisions.Web"
       HintPath = "../../../winnt/assembly/gac/crystaldecisions.web/9.1.3300.0__692fbea5521e1304/crystaldecisions.web.dll"
/>
升級後的引用:
<Reference
    Name = "crystaldecisions.web"
    AssemblyName = "CrystalDecisions.Web"
    HintPath = "../../../winnt/assembly/gac/crystaldecisions.web/9.2.3300.0__692fbea5521e1304/crystaldecisions.web.dll"
/>
(3)修改項目的“引用路徑”:
在解決方案資源管理器裏,右擊項目,選擇屬性,進入項目屬性頁;
選擇通用屬性-〉引用路徑:
c:/winnt/assembly/gac/crystaldecisions.web/9.2.3300.0__692fbea5521e1304/
——————————————————————————————————————
5、“Web 窗體文件中,水晶報表命名空間引用”升級……
原引用:
<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.1.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
升級後的引用:
<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
——————————————————————————————————————
6、“Web.config 中的,水晶報表相關的程序集”升級……
原引用:
<compilation defaultLanguage="c#" debug="true"><assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.1.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
……
升級後的引用:
<compilation defaultLanguage="vb" debug="true"><assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
……
——————————————————————————————————————
7、問題:我升級了CrystalReport9.2,現在CrystalReportViewer不能往設計視圖上拖放了,爲什麼?
解決方案:
1、右擊“工具箱”上的選項卡,選擇“自定義工具箱”,進入“自定義工具箱”對話框,選擇“.NET框架組件”選項卡;
2、有四個 CrystalReportViewer,分別是:
CrystalDecisions.Web(9.2……
CrystalDecisions.Web(9.1……
CrystalDecisions.Windows.Forms(9.2……
CrystalDecisions.Windows.Forms(9.1……
選中:
CrystalDecisions.Web(9.2……
CrystalDecisions.Windows.Forms(9.2……
去除:
CrystalDecisions.Web(9.1……
CrystalDecisions.Windows.Forms(9.1……
總結:
可以看出,其實就是 9.1.3300.0 改成 9.2.3300.0!!!
這樣,升級水晶報表文件後,直接替換所有文件(Web.config,項目文件,Aspx 文件)中該替換的地方,OK!!!
——————————————————————————————————————
8、問題:在web.config中新建一個工程時沒有<assemblies><add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.2.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
我手工添加後出現配置錯誤!!!
解決方案:
新建一個解決方案,添加 Crystal Report Viewer,然後用它的 Web.config 覆蓋原來的程序……
——————————————————————————————————————
9、問題:就是不行。 升級後沒有拖放控件沒有代碼(1)!!!
問題分析:
如果你用的是 VS.NET 2003,則 Crystal Reports 9 (版本 9.2.0.x) 不能正確運行,需要升級到 CR 9 (版本 9.2.2.x). 
具體問題如下:
- 添加新報表到項目,卻沒有生成相應的報表類文件
- 添加新報表或者報表查看器(viewer)到項目,卻沒有自動添加必需的引用
- 不能創建強類型報表(strongly-typed report)的實例
解決方案:
升級到 CR 9 (版本 9.2.2.x). 
——————————————————————————————————————
10、問題:無效的報表源
問題分析:
ReportDocument、CrystalReportViewer 組件和 CrystalDecisions 程序集的版本不一致:
解決方法:
(1)刪除所有的 CrystalDecisions 程序集引用;
(2)刪除所有的ReportDocument、CrystalReportViewer 組件;
(3)按照2、修改 Visual Studio.NET 的工具箱設置;
(4)重新添加組件,自動生成新引用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章