数据采集录入填报时如何只更新当前修改行
在實際的項目開發中,填報表的應用十分廣泛。
多數情況下,填報表會作為整個項目的一部分配合需求靈活使用,下面就舉例介紹一下。
要求:
當前用戶在頁面上修改了某行數據,報表自動將用戶名更新到這些行的【操作人】字段,但在報表展現內容中不要顯示。
當前報表設計如下,首先實現基本的填報操作:
數據來源:
數據去向:
至此,填報表的基本功能已經實現, 下面我們繼續以這個報表為例看一下怎么實現只對修改過的行進行更新。
1. 報表底端增加輔助格,用于獲取用戶名。
2. 在數據回填執行 update 前對要更新的數據做處理。方式如下:
通過對比新舊對象的記錄來實現,如果新舊對象不同,則在新對象中保留不同的記錄供后面更新使用,如果新舊對象一致則不參與執行更新,以此達到只更新修改行的效果。
注:舊對象保存的是修改前的數據,新對象保存的是修改后的數據。
3. 具體的數據處理過程如下:
數據來源腳本不做任何修改,數據去向腳本修改如下:
其中:
B1 單元格表達式:=employee.([編號, 部門, 姓名, 性別, 出生日期, 入職日期, 籍貫, 工資]),列出對象 employee 中需要對比的字段;
C1 單元格表達式: =employee_old.([編號, 部門, 姓名, 性別, 出生日期, 入職日期, 籍貫, 工資]),列出對象 employee_old 中需要對比的字段;
2-3 行 使用 for 循環對比 employee 與 employee_old 對象記錄并從 employee 中刪除兩者相同的記錄,從而整理出被用戶修改的行;
A5 單元格 使用 db.update() 函數實現更新,這里用變量 Operator 模擬后臺獲取的用戶名。
其中,后臺獲取當前用戶名可以參考以下實例:
在報表展現界面 showInput.jsp 中獲取用戶名,并將其拼接到系統變量 param 中,供更新使用
通過上面的腳本,我們就可以實現只對修改過的行標記【操作人】了。
效果如下:
修改前,操作人為空。
在 Web 端訪問報表,修改其中任意幾行
然后,在數據庫端查詢數據,檢查一下,我們會發現只有剛才修改過的幾行才標記了【操作人】,Bingo!沒想到吧,就這么輕松搞定了。
最最后,一定不要忘記把輔助格隱藏起來噢!!!
輔助行,行高設置為 0,這樣就完美了。
課外知識擴展
什么是填報表:
通常我們看到的報表基本都是對已有數據的讀取展現,但還有一類報表不僅能讀取展現數據還可以做增刪改的操作并與數據庫交互,這類報表我們稱為填報表。
填報表的用處有哪些:
作為一種“介質”,如:收集各地區的某項指標數據,供中央匯總統計使用;
作為審核流程的“材料”,如:項目經理填寫預算報表,提交后由對應部門審批處理。
填報更新原理:
目前,行式填報表在提交的時會自動對比修改前和修改后的數據:首先對比主鍵,根據主鍵是否有新增或缺失確定數據的增刪操作;然后再針對前后都有的記錄對比每條記錄值是否有不同,如有不同則執行 update 操作。
所以,建議數據處理(數據來源、數據去向)中的字段名稱與報表中的字段名稱個數要保持一致,不然填報更新時就會因新舊對象字段不匹配導致更新失敗。
另外細心的你會發現,更新前后的數據是分開編輯的,這樣設計有什么好處?容我賣個關子,想了解更多的就關注關注我吧!!!
轉載于:https://www.cnblogs.com/IBelieve002/p/10437108.html
總結
以上是生活随笔為你收集整理的数据采集录入填报时如何只更新当前修改行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的企业微信开发 前后端
- 下一篇: HoloLens开发手记- Specta