您好,登錄后才能下訂單哦!
【摘要】
在食品生產安全中現在提倡產地的可追溯性,同樣在數據安全方面同樣有相應的要求,要記錄什么人對哪些數據做了修改操作,這樣就要求業務人員錄入、修改數據時能夠將該人員信息一同保存下來,方便數據的可追溯,點擊 數據填報修改時如何增加操作人員信息 查看具體方法
需求描述:
用戶在頁面端修改數據時為保證數據的可追溯性,可以在數據表中增加修改人字段,用于保存修改人的信息,追溯數據的有效性。下面就介紹一下如何實現這個需求。
解決方案
一:填報表制作
按照用戶的需求制作填報表,如“訂單信息表”:
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 字段的值會發生變化,其余不變,這樣就可以定位到具體哪些數據被哪些人做了修改。
總結:
本例中通過在腳本中對填報對象的數據進行修改,做到了在相應數據表中更新最后修改人字段,并且能精確到他修改的數據。實際應用中也可以增加最后修改時間等,或者在腳本中做更復雜的業務處理。
詳情鏈接:
http://c.raqsoft.com.cn/article/1540825011256
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。