使用 Crystal Report, 真的是吃了不少苦頭。
Crystal Report 的確有相當不少的優點。但也有不少的缺點。
- 對於開發人員不夠友善。例如想要全選/複製,就常常會碰釘子。小技巧:不要選到特殊的 image control,就可以多選。當多選時,找不到複製的編輯命令時,就代表有些 control 無法與別的 control 一起複製。
- 效能不佳。我想要使用 Crystal Report 輸出成 PDF,因為其輸出的 中文PDF 可以使用搜尋文字的功能,而Reporting Service 輸出的 中文PDF 卻不行。(20090217 見 http://msdn.microsoft.com/zh-tw/library/ms159713(SQL.90).aspx, 在 sql server 2005 sp3 已有 embbed font了,就可以搜尋)。但沒想到Crystal Report 輸出成 PDF 的效能卻奇差無比。每轉一張竟要 1.4 秒 (at Intel Core2 CPU 6300@1.86GHz, 3.00 GB Ram)
- 要license. Visual Studio 內附的是陽春版,只能同時 5 個 client存取。多了就會出 Exception. 不像 Reporting Service (Client, rdlc),是免費的。
- 買了開發版後,也有限制,PrintJobLimit 就是我碰的一例。
- 在開發機器裝了 Crystal Report 2008 後,可以開發了。但一旦重開機後,在 Visual Studio 2008 開啟報表,就會出現如圖一的嚴重錯誤。把整個 Visual Studio 弄掛掉。或者如圖二的錯誤訊息。圖二的錯誤訊息,相信寫 C++ 的人並不寞生,這是使用指標寫資料到memory,寫錯了長度造成的memory crash。
- 很秏資源。每產生一個 PDF 檔,伺服器Memory 就秏掉了2-3 MB,必須等到下一次的 Garbage Collection 時才會回收。在 C:\Windows\Temp 也需要產生 *.rpt 的暫存檔案。因為很秏資源,又無法改進,只好加入 PrintJobLimit 來限制出錢的客戶。雖然可以修改 registry 來修改限制的上限,那也只不過是倒果為因罷了。
我目前的建議:不要使用 Crystal Report,除非有特殊原因。因為感覺很差啦!
圖一:一打開就掛掉
圖二:有些則是