顯示具有 CrystalReport 標籤的文章。 顯示所有文章
顯示具有 CrystalReport 標籤的文章。 顯示所有文章

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了

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


vs2010 crystal report,初使用


現在接了一個用vs2005開發的既存在專案,報表的部份需要使用到crystal report.
因為想改用vs2010來開發,而且以前從未使用者這個水晶報表,所以做了以下的測試

首先是環境的建置:
因為vs2010未內建crystal report,所以要先到sap 網站去下載 最後版本,
點選SAP Crystal Reports, version for Visual Studio 2010 - Standard 下載(2012/07/29下載的版本是CRforVS_13_0_4.exe)

如要個別下載及查看release not可到 Crystal Reports for Visual Studio 2010 Updates & Runtime Downloads

安裝完畢後,打開VS2010把原先VS2005專案開啟, 過程中會詢問是否要以較版本crystal reprot進行昇級


選擇轉換方案及備份位置,按下確定
接著詢問是否升級到.net framework  4.0, 這時要按Yes, 因為要昇級為targetFramework=4.0



試著build website,發現有些參考上的錯誤
在任一個已存在的aspx網頁上,由toolbox中將Crystal Report Viewr拖進來後再刪除, web.config就會自動加入相關的assembly定義了 .如下
 <assemblies>
        <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
        <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
        <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
        <add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
        <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
      </assemblies>

如果不想每個頁面註冊crystal report viewer,且統一tagname,則也可在web.config加入以下
 <pages>
      <controls>
        <add tagPrefix="CR" assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"  namespace="CrystalDecisions.Web" />       
      </controls>
    </pages>

到此,試著把原先的vs2005 + crystal report 10.*的原網站就順利昇級起來了.


IIS 網站無法下載中文檔名檔案因為取消高位元字元

 網址+中文檔案名稱方式下載檔案顯示 404 - 找不到檔案或目錄。 但英數字檔案名稱則可下載。 因為設定GCB IIS,其中1項 將高位元字元預設取消勾選了。 27 TWGCB-04-014-0028 要求篩選與其他限制模組 允許高位元字元 這項原則設定決定查詢...