永遠值得記住的教訓,水晶報表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)重新新增元件,自動生成新引用。