反饋已提交
網絡繁忙
在實際填報表設計中,主從表是常見的一種填報場景,主表中的一條記錄對應從表中的多條記錄,例如「訂單表」和「訂單明細表」,「訂單表」的一個訂單可能對應「訂單明細表」中的多條產品資料,透過「訂單 ID」欄位進行聯動。
像這樣資料來自於多個資料源,填報時資料回填到多個表中的報表,也可以稱之為多源填報表。
首先透過設定過濾條件,將表與表聯動起來,然後透過定義多個內建 SQL 提交將資料回填到不同的資料表中。
建立普通報表,建立兩個資料庫查詢,SQL 查詢語句分別為:
ds1:SELECT * FROM 訂單
ds2:SELECT * FROM 訂單明細
按照下圖所示設定表樣,並將對應的資料列拖入到對應的儲存格中:
將 B4、B6、B8 儲存格的「左父格」均設定為 A3 儲存格,其餘儲存格為預設,即資料均是根據「訂單 ID」擴展得來。
1)各儲存格新增元件類型如下表所示:
2)設定 B4、D4、F4、B8、A12 儲存格「下拉框元件」的「資料字典」,並且設定 B4、D4、F4、A12 儲存格的「儲存格屬性>形態」也為「資料字典」,具體設定均如下表所示:
元件「資料字典」設定如下圖:
儲存格形態「資料字典」設定如下圖:
3)設定 F12 和 G12 的「按鈕元件」分別為「插入行」和「刪除行」按鈕,其指定儲存格都為 A12 儲存格。如下圖所示:
在 H12 儲存格中插入公式:C12 * D12 * (1 - E12),即:數量*進價*(1-折扣)。
在 D8 儲存格中插入公式:round(sum(H12) + B6,2)。表示「應付金額」為數量*進價*(1-折扣)+運貨費。
注:round() 表示應付金額保留兩位小數,函式詳細解譯可參考Round函式。
選中 H12 儲存格,點選右側面板「儲存格屬性>其他」,將插入行策略設定為「原值」,確定儲存格公式在插入行時被保留。
1)點選菜單欄「範本>範本參數」,新增一個參數名為 ID 的範本參數,預設值為 10001。如下圖所示:
2)在參數介面新增參數生成相應元件,元件類型選擇為「下拉框元件」,並設定下拉框元件的資料字典:資料庫表為「訂單」,實際值和顯示值均為第 1 列:訂單 ID。如下圖所示:
雙擊 A3 儲存格,設定過濾條件,條件為普通條件:「訂單 ID 」列等於參數 $ID。如下圖所示:
雙擊 A12 儲存格,設定過濾條件,條件為普通條件:「訂單 ID」 列等於儲存格 A3。
1)A3 儲存格只是作為過濾資料使用,不需要展示在頁面上,所以需要隱藏。可以直接選中第 3 行的行序號,按滑鼠右鍵選擇隱藏,如下圖所示:
也可以透過給 A3 儲存格新增一個行高為 0 的條件屬性,如下圖所示:
2)同樣點選 H 列,按滑鼠右鍵選擇隱藏,將 H12 儲存格隱藏。
點選菜單欄「範本>報表填報屬性」,按照下圖所示給報表增加兩個內建 SQL 提交。
內建 SQL1:
內建 SQL2:
儲存報表,點選「填報預覽」,查詢訂單號為 10001 的資料,效果如下圖所示:
修改子表,修改數量與進價,點選提交,提示成功。重新整理瀏覽器,再選擇10001,可以看到資料已經改變,如下圖:
App 端和 HTML5 端均支援,效果如下圖所示:
已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Form\MultiFormReport\主從表填報.cpt
點選下載範本:主从表填报.cpt
若一個填報範本中定義了多個內建 SQL,其執行順序會按照定義的順序執行,若在執行其中一個內建 SQL 時出錯,會停止下面內建 SQL 的執行並對已執行的內建 SQL 進行回滾,回滾具體請查看 報表填報屬性。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉