不知道各位的環境裏都用什麼軟體做報表呢?命運多舛的水晶報表(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,把
修改前畫面:
修改後畫面:
主要的原因是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直接列印,這點有待高手指教。
敝公司在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直接列印,這點有待高手指教。
留言
Jeremy
有的,關鍵字要下對,在 這裡,我想你下這個就夠了。