第十七章 以ChatCoder設計表單第十七章 以ChatCoder設計表單\17-12 ChatCoder報表截圖開發實例三

17-12 ChatCoder報表截圖開發實例三

前面示範的報表,其後端的資料來源都剛好有現成的Server端模組(InfoCommand)可以使用,本例將示範"採購明細表",報表中的資料來源有兩個實體資料表,一個為採購單主表,另一個為採購單明細表(一對多的關係),因為隸屬兩個獨立的資料表要同時輸出到本例的採購明細表中,所以,Server端就不須額外使用Left Join的方式將兩個表合併成一個表。在眾多的報表實例中,通常很難有直接寫好現成可以用的資料來源(InfoCommand),必須在後端先建立好報表相對應的ViewSQL語句。

Step1>       ChatCoder右鍵新增一個ChatCoder的節點,並輸入"採購明細表",同上,切換到"報表截圖"的頁簽,並按下來上傳一個報表截圖,這裡我們選擇"採購明細表"的這個截圖檔案。

這是採購明細表的截圖內容,報表中以採購單為單位列出其採購單下的所有採購項目明細等資料,並進行加總,為了節省報表的寬度空間,會將採購單主表的欄位列印於GroupHeader中。

Step2>       上傳完畢,接著按下"送出",即可透過GPT來分析報表格式,如下的Layout格式:

其中,GroupHeader有解析到採購單主表的欄位,Detail除了前面兩個欄位也是採購單主表外,其餘都是採購明細表的欄位。因為報表的"資料表來源"必須使用以上兩個表的合併內容,所以我們必須透過ServerInfoCommand來重新設計。

Step3>       打開現有的Server"採購單"模組,透過"工具箱"拖拉一個新的InfoCommand組件:

點一下InfoCommandCommandText屬性,打開"SQL Command Text Editor"來編輯新的SQL語法,如下:

先勾選採購單的所有欄位,然後取消沒有要印出的欄位,按下下方的"新增"按鈕即可產生採購單的SQL語法。接著持續勾選"採購單明細"的欄位:

勾選採購單明細欄位,然後將重複的"採購單號""進貨單號"取消,按下"新增"時,因為Command Text內已經有SQL語法了,所以會彈出關聯的Join選項,此時系統會自動建議為Left Join與關聯欄位,如果沒有問題按下確定即可,此時採購單就會自動Left Join明細資料進來,按下"查詢"即可驗證SQL的執行結果:

然後我們將InfoCommand更名為"採購單明細查詢",方便識別,最後按下"存檔"儲存此Server端模組。

Step4>       接著回到ChatCoder的報表Layout設定,將"資料表來源"選擇剛剛新增上去的"採購單明細查詢",如下:

再來,因為Header上的訂購日期需要一個區間查詢,所以我們將"採購日期"拖到"訂購日期"下,另外再拖一個放在右邊,並將"訂購日期"統一改成"採購日期"GroupFooter中的"合計"我們將其移動到"金額"的下方。並在最下方的Footer拖入一個"金額"代表總計(因為GPT沒有識別出來)

接著設定GroupFooter"合計"Footer"金額"屬性(右鍵),如下:

類型都設定為"加總",欄位名稱為"金額"代表針對此欄位加總,欄位型別為"數值"即可。

Step5>       接著進行"匯出iTable"的動作,因為報表很多欄位標題與資料來源的欄位名稱不同,所以經過檢查有三個欄位不同,如下,透過"新增欄位"的拖拉功能即可進行更新正確的欄位名稱(標題不更新,只更新欄位名稱/類型/欄位寬度)

Step6>       匯出iTable時,同時選擇要產生Excel套表,如下圖將產生iTable的畫面,同樣按下上方的"存檔"來產生RWD表單。

Step7>       最後按下預覽,如下的頁面:

可以透過日期範圍按下"查詢"再按下"印表",將產生如下的Excel報表:

明細(Detail)中如果要"日期""廠商名稱"重複只印第一筆,則可以設定這兩個欄位為"群組"即可達成。


 

Top of Page