2012年7月29日 星期日

vs2010 crystal report,和rdl(c)的差異?

之前一直習慣使用微軟的Reporting Service來製作報表(.rdl)
然後再將rdl改命名為rdlc就可以在visual studio使用報表.

所以不懂VS開發程式的同事就可以在BIDS中先做好rdl報表並測試其執行後的報表格式及資料後,再把rdl更改副檔名為rdlc後再給負責開發網站的同事進行coding.
這樣的分工我覺得挺方便的.一來可借助熟DB的同事做好報表,二來也可加快程式員專注在寫code上.

不知crystal report 和reporting service 有何設計上的差異呢?

接下來,我就先建一個小小的下crystal report來測試一下二者差異性吧.

以下就將reporting service 簡稱RS,crystal report 簡稱CR


設計版面:
二者該有的表頭表尾明細群組都有,但CR的layout是free form的任意位置方式,RS的layout則是像Excel方式的表格方.前者的好處應是可以自由擺放報表欄位,後則則是設計方式就如同在操作Excel一樣方便.
個人比較喜歡RS的方式,因為不用一直在那邊對textbox進行上下左右的對齊動作.不過遇到那種複雜版面的報表會比較辛苦.但如果要顯示Grid那種加線條的表格,RS應該是"一塊小蛋糕"吧!










屬性使用:
 CR13.X版報表預覽時,工具列的擺法就和10.X版不一樣. 多了一個主報表的頁籤,舊版似乎是採工具列上的下拉選單.另外GroupTree也預設出現, 因不是很了解這個功能,所以我想把他隱藏起來, Crystal Report Viewer的屬性很令我不直覺,光找一個屬性我就測半天.

RS新舊版的工具列基本上都只有在那一行工具列上變化,屬性使用也很直覺.
下列是個人覺得應設的CR Viewer屬性.
  <CR:CrystalReportViewer ID="crv" AutoDataBind="true" runat="server" PrintMode="ActiveX"
            HasCrystalLogo="false" HasToggleGroupTreeButton="false" ToolPanelView ="None" grouEnableDatabaseLogonPrompt="False"/>

報表來源:
二者報表都是先指定報表名稱,再指定DataSource. 果然是同源產品.

報表呈現:
報表預覽後,CR一直有個地方困擾我, 就是字體看來有點不對齊的感覺,
明明我都設了相同的字體,大小,欄位的高度,也向上對齊 (align tops)
但預覽後的效果,我總是覺在CR中的textbox與資料庫欄位讀出來的textbox對不齊.
像種類:犬, 犬字似乎和種類:沒有平頭對齊??



最後,有一點我也不太理解的是,升級後的有些報表,在執行階段時,一直在
crv.ReportDocument.Load(reportPath)時出現 報表檔案名稱是空的錯誤訊息?雖然檔名及檔案都是正確的.
最後在這篇討論文章找到原因
只要將 ReportDocument.Load(reportPath)改成CrystalReportSource.report.file=reportPath 就OK了

報表工具應該都大同小異,熟悉就好. 不同需求各有擅長. 只要符合需求的都好啦.


沒有留言:

張貼留言

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...