需求描述:
使用者在頁面端修改資料時為保證資料的可追溯性,可以在資料表中增加修改人欄位,用於儲存修改人的資訊,追溯資料的有效性。下面就介紹一下如何實現這個需求。
解決方案
一:填報表製作
按照使用者的需求製作填報表,如「訂單資訊表」:
1、 新建填報表,新增引數:userid,用於接收系統傳進來的使用者資訊。
2、 在「資料處理」對話方塊中中把「資料**」設定為使用「指令碼」方式,如圖:
3、 在「資料處理」對話方塊中把「資料去向」也設定為使用「指令碼」,如圖:
注意:b2 中 edituser 欄位為資料庫中的修改人欄位,將其賦值為 userid,表示更新時將引數 userid 的值儲存到對應欄位中。
4、 製作填報表,如下圖:
a3 設定單元格型別為維度格,表示式為 =dd.(ddid),dd 為資料**中定義的資料物件名稱,此單元格取表中 ddid 的值,欄位名稱中設定 dd.ddid。
b3~e3 單元格型別設定成數值格,用於填寫資訊,按照填報表取欄位名稱規則,b3 單元格預設取其上方單元格為欄位名稱,由於資料庫中儲存的是英文欄位名「khid」,和 b2 中的「客戶編號」不一致,所以為取出正確資料,在 b3 單元格的欄位名稱中設定「khid」,指定單元格欄位名稱,其餘類似。
按照客戶樣式要求調整報表樣式,並儲存報表即可。
5、 發布報表並設定引數傳遞
在瀏覽器中訪問該報表,並且在 url 中將使用者編號傳遞給引數 userid,如:http://localhost:6868/demo/reportjsp/showinput.jsp?sht=ddxx.sht&userid=zhangsan
引數可以在 url 中傳遞,為保證其安全性,使用者資訊可能存在 session 中,那麼在 showinput.jsp 中獲取 session 中的使用者資訊,並傳遞給報表標籤的 params 標籤即可,傳遞格式:引數名稱 = 引數值。
報表展現後,格式如下:
頁面端修改資料儲存後,去資料庫端檢視資料發現,edituser 字段資料為傳入的使用者資訊,如下圖:
發現問題
實際使用中發現,使用者可能只修改了某幾條記錄,但是資料庫中的 edituser 欄位的所有資料都會發生變化,而使用者需求肯定是只更改該使用者修改的資料。
問題原因及解決辦法:
前面更新資料採用的是集算指令碼中的 update 函式,該函式處理時會根據新舊物件資料進行判斷,從而判定處理時是 update、insert 還是 delete 操作。因此解決辦法就是在新舊物件中刪除沒有修改的資料即可,下面是更改後的資料去向指令碼:
b1 中通過 join 函式將兩個物件關聯在一起,此時關聯欄位是物件中的所有字段,這樣可以找到沒有修改的資料。
c1 中取出兩個物件中所有資料相同 (沒有修改的) 的主鍵字段
a2、b2 中分別從兩個物件中根據 c1 的值過濾出沒有修改的資料
a3、b3 刪除沒有修改的資料,這樣兩個物件中的資料均為使用者頁面端修改後的資料,再執行 update 操作即可。資料庫中資料如下:
可見,只有頁面端修改的資料 edituser 欄位的值會發生變化,其餘不變,這樣就可以定位到具體哪些資料被哪些人做了修改。
總結:
本例中通過在指令碼中對填報物件的資料進行修改,做到了在相應資料表中更新最後修改人欄位,並且能精確到他修改的資料。實際應用中也可以增加最後修改時間等,或者在指令碼中做更複雜的業務處理。
資料填報修改時如何增加操作人員資訊
需求描述 使用者在頁面端修改資料時為保證資料的可追溯性,可以在資料表中增加修改人欄位,用於儲存修改人的資訊,追溯資料的有效性。下面就介紹一下如何實現這個需求。解決方案 一 填報表製作 按照使用者的需求製作填報表,如 訂單資訊表 1 新建填報表,新增引數 userid,用於接收系統傳進來的使用者資訊。...
資料填報修改時如何增加操作人員資訊
需求描述 使用者在頁面端修改資料時為保證資料的可追溯性,可以在資料表中增加修改人欄位,用於儲存修改人的資訊,追溯資料的有效性。下面就介紹一下如何實現這個需求。解決方案 一 填報表製作 按照使用者的需求製作填報表,如 訂單資訊表 1 新建填報表,新增引數 userid,用於接收系統傳進來的使用者資訊。...
如何修改時間
date命令相關引數 date help s,set string 把時間設為字串所描述的時間 例 root xuegod63 date s 2018 11 2 22 30 2018年 11月 02日 星期五 22 30 00 cst f 完整日期格式,等價於 y m d root xuegod63...