通過單個報表實現主子表的業務邏輯,上面為訂單信息,數據來自訂單表;下面是該訂單的明細,數據來自於訂單明細表,通過訂單id進行關聯。
修改上方訂單信息及明細數據時,數據將分別回填至對應的數據表中。
下面我們就通過報表管理系統FineReport來進行介紹如何製作主從填報表。
工具/原料
報表管理系統FineReport7.1.1
大小:148.2M 適用平臺:windows/linux
方法/步驟
增加數據集
新建工作簿,增加數據集ds1,SQL語句為:SELECT * FROM [訂單]。
再增加一個數據集ds2,SQL語句為:SELECT * FROM [訂單明細]。
表樣設計
按照下圖所示設置表樣,並將對應的數據列拖入到對應的單元格中:
在D8單元格中填入公式:=round(sum(H12) + B6,2)。
注:公式的意義在於應付金額為數量*進價*(1-折扣)。
在H12單元格中填入公式:=C12 * D12 * (1 - E12)。
給B4,D4,F4以及A12單元格增加數據字典設置。
參數設置
點擊模板>報表參數,增加一個參數名為ID的報表參數,默認值為10001。
過濾條件設置
給A3設置過濾條件,過濾為訂單ID等於參數$ID。
行高列寬設置
將A3的行高與H12的列寬隱藏。
單元格編輯屬性設置
下拉框
設置B4,D4,F4,A12為下拉框,其數據字典都選擇數據庫表,選擇對應的實際值與顯示值。
數字
設置B6,B12,C12,D12,E12的控件類型為數字型。
文本型
設置D6和F6的控件類型為文本型。
按鈕
設置F12和G12的控件類型分別為插入行以及刪除行按鈕,其指定單元格都為A12。
報表填報屬性設置
按照下圖所示給報表增加兩個內置SQL。
內置SQL1:
內置SQL2
效果查看
點擊填報預覽,查詢訂單號為10001的數據,效果如下:
修改子表,修改數量與進價,點擊提交,提示成功。刷新瀏覽器,再選擇10001,可以看到數據已經改變,如下圖: