如何只更新當前修改行資料

2021-09-12 01:40:21 字數 2365 閱讀 4201

在實際的專案開發中,填報表的應用十分廣泛。

多數情況下,填報表會作為整個專案的一部分配合需求靈活使用,下面就舉例介紹一下。

要求

當前使用者在頁面上修改了某行資料,報表自動將使用者名稱更新到這些行的【操作人】字段,但在報表展現內容中不要顯示。

當前報表設計如下,首先實現基本的填報操作:

資料去向

至此,填報表的基本功能已經實現, 下面我們繼續以這個報表為例看一下怎麼實現只對修改過的行進行更新

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 操作。

所以,建議資料處理(資料**、資料去向)中的欄位名稱與報表中的欄位名稱個數要保持一致,不然填報更新時就會因新舊物件欄位不匹配導致更新失敗。

vue路由如何傳遞當前行資料

在當前頁面中,檢視當前行資料,如果是通過彈框的方式,我們可以通過方法帶的row,來展示當前行資料,但是如果是跳轉到新的頁面呢,我們如何在詳情頁拿到當前資料呢?通過後端提供的介面可以,通過瀏覽器儲存機制也可以,其實路由本身就提供了一種方式,那就是動態路由,通過動態路由,我們可以把資訊隱式的傳遞過去,當...

V5填報表只更新修改資料

潤幹v5填報儲存時是根據指令碼中的新舊物件進行判斷,然後通過update函式進行更新,目前是對裡邊的所有資料進行操作,也就是後所頁面中展現10條記錄,如果只修改一行的話,那麼儲存時10條就都會進行更新,一方面效率有些差,另外,有可能資料表中會有一些最後修改人等字段,只要求對該條資料修改的字段進行更新...

DataTable修改後,如何更新資料庫

datatable中的資料可以修改多個後,同時更新到資料庫,這樣比較方便。下面是實現的 datatable table new datatable 初始化乙個datatable物件 string sqlconnectionstring data source computername pc init...