星期三, 8月 25, 2010

Crystal Reports XI R2在Server 2008 R2上ActiveX Viewer的問題

不知道各位的環境裏都用什麼軟體做報表呢?命運多舛的水晶報表Crystal Reports)廣為人知時是被Seagate買下並與VB5/VB6搭配開始。由於它具備強大的報表編修介面及深具彈性的程式化特性,因此許多企業都選擇它做為報表工具。但是因為一直被併購,因此網站的維護實在是爛到不行,雖然有放Service Pack但怎麼樣就是找不到,不管是用Google還是用網站內建的搜尋功能;我以前就向代理商精誠資訊抱怨過。好不容易等到Businiess Objects做出Crystal Reports Service Packs,後來被SAP併購後不知是不是Businiess Objects的員工離職還是怎樣,又一直沒更新,目前我所找到最完整的列表是Victoria Yudin整理的 Crystal Reports service packs and versions



敝公司在2002年買了一套Crystal Reports 9,後來隔三年又升級到Crystal Reports XI,Visual Studio 2002/2003搭配的是Crystal Reports 9,Visual Studio 2005/2008搭配的是Crystal Reports 10.5。如果有安裝Crystal Reports Developer Edition,可以安裝Visual Studio Add-On,會把Visual Studio裏的Crystal Reports升級,但是Crystal Reports 9/10只支援到Visual Studio 2003,Crystal Reports XI只支援到Visual Studio 2005。Crystal Reports 2008支援到Visual Studio 2008,至於Visual Studio 2010目前只能下載Beta版的Crystal Reports for Visual Studio 2010

Crystal Reports XI (11)有個嚴重的DEP(資料防止執行)問題,所以後來出的 Crystal Reports XI Release 2才能正常地在Windows Server 2003開啟DEP的情況下執行;若是購買 Crystal Reports XI的客戶都可以用原序號安裝Release 2。因為Server 2008隔了五年才出現,加上Visual Studio 2008也只搭配 Crystal Reports 10.5,微軟又推出好用的Reporting Service,所以企業也不太願意升級Crystal Reports 2008 :P

一切問題都出現在我把內網的Intranet IIS升級到Server 2008 R2,發現Java Viewer和AcitveX Viewer都不能用了,但是Asp.net Viewer正常。原來必須要買Crystal Reports 2008才能在Server 2008 R2正常使用AcitveX Viewer,但現在我想改用Reporting Service開發新報表,舊的報表就用Crystal Reports XI R2繼續跑不行嗎?原來的asp程式若要改用asp.net開發會浪費許多時間,最簡單的方法就是花錢了事,可惜敝公司不太可能為了這一兩支舊程式花錢。

後來終於找到Report Designer Component (RDC) in classic ASP applications on Win 2008 Server and Win 7 - Possible Solutions,基本上Java Viewer找不到解可能沒救了,但因為與ActiveX Viewer同樣透過Session傳參數,所以很容易改成ActiveX Viewer。主要的問題是出在 RDCrptserver115.asp,把
response.addheader "CONTENT-LENGTH", lenb(temp)
改成
response.addheader "CONTENT-LENGTH", lenb(temp + 0)
原本的空白畫面就會神奇地恢復正常。
修改前畫面:
修改後畫面:

主要的原因Server 2008 R2的ASP engine認為temp不是數字,所以加零讓它強制轉型。我對ASP不懂,但試過在上一行把 temp = goPage.Renderepf(8209) 改成 temp = goPage.Renderepf(8209) +0無效。

結論:幸好我沒有太早升級,否則一定找不到Solution。 <-- 我在搞笑

附註:以前MIS去上課學過Crystal Reports,但是我完全不會寫Crystal Reports,現在連Sample都很難抓,我在找到範例,連結如下:
crsdk_net_tutorials_110_en.zip 與 aspxmps115.zip

我是看如何在ASP.Net中使用CrystalReport,一邊翻著鄭淑芬Crystal Reports 9的書改成Asp.Net版,所以應該也不怕日後再更新。目前看到有人寫Reporting Service沒有Crystal Reports的PrintToPrinter功能,所以不方便在Server Side直接列印,這點有待高手指教。

7 則留言:

匿名 提到...

感謝你這篇文章~good for me

匿名 提到...

請問大大有發現在IE10 出現OLE物件圖片預覽顯示不出來的問題嗎轉出PDF格式則無此問題

Tseng Teng-Yi 提到...

現在我沒在用Crystal Reports耶,你有試著在頁面上加 X-UA-Compatible IE=9 嗎? 很大的機會加了就會好。

Jeremy 提到...

最近在幫公司升級 crystal report server 10 到 crystal report server 2011, 但從 2011 內建的 migration tool, 已經沒辦法支援太老舊的 10, 後來有看到網友有建議可以先升級到 report server 11/ 或 report server 2008, 然後再從report server 11/ 或 report server 2008 升級到2011, 可頭痛的是, 幾乎已經找不到report server 11/ 或 report server 2008 可以安裝了. 您有什麼建議嗎? 感恩~

Jeremy

Tseng Teng-Yi 提到...

Jeremy:
有的,關鍵字要下對,在 這裡,我想你下這個就夠了。

lan chun su 提到...

請教一下,crystal report 2011要跟哪個廠商購買?代理商?感恩!

Tseng Teng-Yi 提到...

代理商應該很多吧?我們是找精誠啦,看貴公司通常找誰買便宜就找誰呀!