1. 問題描述
我們在做一張報表填報的時候經常會遇到需要在一行進行添加動作,將該行數據直接與數據庫交互,執行存儲過程過程。我們可以通過每一行增加帆軟“插入”按鈕實現插入動作,並且在控件事件中增加和數據庫的交互,但當事件過多時帆軟無法穩定地實現交互,會出現數據丟失或者數據庫連接出錯等問題。因此,這篇文檔介紹一種單行數據和數據庫交互的方法
2. 實現思路
在帆軟報表的設計思路中,通過模板-->報表填報屬性實現和數據庫的交互纔是常規手段,且過程穩定不容易出錯。因此,採用在按鈕事件中寫入JS事件,調用填報屬性,並且用填報條件來限制入庫數據來實現單行填報。
3. 示例
我們假設產品庫存量爲現有量,然後申請訂購後就從庫存量裏減去訂購的數量,在每一行的數據進入數據庫後,可以看到庫存量的變化
3.1打開報表
3.2編輯Js語句記錄訂購產品名
右鍵產品名稱-->控件設置-->事件編輯-->新建事件-->編輯結束。寫js語句,contentPane.setCellValue("G1",null,this.getValue());。將新增記錄在G1單元格。
3.3調用填報功能,設置填報條件
模板-->報表填報屬性-->內置SQL-->提交類型選擇智能提交,在提交內容中分別將要提交的字段和單元格一一對應。
通過驗證添加的數據是否是最新的數據來進行篩選。注意,G1單元格一定要設置成文本控件
3.4編輯添加按鈕,調用填報事件
在倒數第二個單元格添加按鈕控件,並對該控件的圖標、類型進行設置。注意,所有的單元格都要設置成向下的擴展方向,帶有sql語句的單元格插入行策略都是原值,按鈕對應的擴展單元格是B3。
對按鈕進行事件編輯,點擊-->編寫Js語句:_g().writeReport();調用填報功能。
3.5保存並預覽
保存模板,點擊填報預覽,效果如下
可以看到庫存量發生了變化(此處爲demo數據庫,無法增加新的字段,讀者在實際使用的時候可以在數據庫中增加一個字段,專門用來存放原始的庫存量,爲了頁面美觀,可以將H列隱藏