顯示具有 Crystal Reports 標籤的文章。 顯示所有文章
顯示具有 Crystal Reports 標籤的文章。 顯示所有文章

2022年4月7日 星期四

[Crystal Reports] 用公式格式化數字?

Crystal Reports 的文字物件,格式物件的公式內,可以將數字像 Excel 那樣格式化。方式很相似。


參考一:可以將含有小數點的數字格式化。

"共計:" + CStr ( {數字欄位} , '##0') + " 天"


 參考二:可以將數字補零。

"共計:" + CStr ( {數字欄位} , '000') + " 天"

若值是1天,會變成001天。 


參考三:可以加上千分位符號「,」。

"共計:" + CStr ( {數字欄位} , '###,###,##0') + " 元"

 

參考四:文字欄位要先轉型成數字。

 "共計:" + CStr (CDbl ( {數字欄位} , '##0')) + " 天"

2012年9月20日 星期四

Crystal Reports 指定子報表接收DataTable資料


建立Crystal Reports報表,使用XML Schema File,使用Crystal Reports中資料庫 > 設定資料來源位置 > 建立新連結 > ADO.NET(XML)來設定報表欄位的方式,這些步驟就先略過了。直接跳回VB端,紀錄塞資料給指定子報表的方式。


REM 宣告 Table
Dim print_Main As New DataTable
Dim print_TermsOfPayment As New DataTable
Dim print_Building As New DataTable
Dim print_Agreement As New DataTable

REM 取得報表資料:
print_Main = Wer_Service_Name( Mode=2, "參數", ServerVer)
print_TermsOfPayment = Wer_Service_Name( Mode=3, "參數", ServerVer)
print_Building = Wer_Service_Name( Mode=4, "參數", ServerVer)
print_Agreement = Wer_Service_Name( Mode=5, "參數", ServerVer)

REM 載入資料至主報表:
rptDoc_R001.SetDataSource(print_Main)

REM 載入資料至子報表:
REM 方法一,直接指定子報表名稱並匯入資料。
rptDoc_R001.Subreports.Item("R001_TermsOfPayment.rpt").SetDataSource(print_TermsOfPayment)
rptDoc_R001.Subreports.Item("R001_building.rpt").SetDataSource(print_Building)
rptDoc_R001.Subreports.Item("R001_agreement.rpt").SetDataSource(print_Agreement)
REM 方法二,以順序指定子報表並匯入資料。
rptDoc_R001.Subreports.Item(0).SetDataSource(print_TermsOfPayment)
rptDoc_R001.Subreports.Item(1).SetDataSource(print_Building)
rptDoc_R001.Subreports.Item(2).SetDataSource(print_Agreement)

備註:
使用方法二,要注意子報表名稱的排序,需跟子報表放置順序一樣,否則很容易出錯。也就是最好把子報表的名稱R001_TermsOfPayment.rptR001_building.rptR001_agreement.rpt,改成R001_0.rpt""R001_1.rpt""R001_2.rpt"這樣的名稱,這樣給資料到子報表時才不會出錯。 


傳值到子報表需在報表端設定。

子報表端設定:
對子報表點選右鍵 > 變更子報表連結... > 設定要連結的欄位。

























除了可以連結欄位之外,也可以用來傳值到子報表。

先分別設定好母報表端的「參數欄位」以及子報表的「參數欄位」,接著設定子報表連結。
當母報表接收到傳入值時,就可以透過子報表連結傳遞到子報表端。