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