溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數(shù)據(jù)修改時如何留痕

發(fā)布時間:2020-08-11 07:50:05 來源:ITPUB博客 閱讀:256 作者:rqgxy 欄目:編程語言

【摘要】

在食品生產(chǎn)安全中現(xiàn)在提倡產(chǎn)地的可追溯性,同樣在數(shù)據(jù)安全方面同樣有相應的要求,要記錄什么人對哪些數(shù)據(jù)做了修改操作,這樣就要求業(yè)務人員錄入、修改數(shù)據(jù)時能夠將該人員信息一同保存下來,方便數(shù)據(jù)的可追溯,點擊 數(shù)據(jù)填報修改時如何增加操作人員信息 查看具體方法

需求描述:

用戶在頁面端修改數(shù)據(jù)時為保證數(shù)據(jù)的可追溯性,可以在數(shù)據(jù)表中增加修改人字段,用于保存修改人的信息,追溯數(shù)據(jù)的有效性。下面就介紹一下如何實現(xiàn)這個需求。

解決方案

一:填報表制作

按照用戶的需求制作填報表,如“訂單信息表”:

1、 新建填報表,新增參數(shù):userid,用于接收系統(tǒng)傳進來的用戶信息。

2、 在“數(shù)據(jù)處理”對話框中把“數(shù)據(jù)來源”設置為使用“腳本”方式,如圖:

數(shù)據(jù)修改時如何留痕

3、 在“數(shù)據(jù)處理”對話框中把“數(shù)據(jù)去向”也設置為使用“腳本”,如圖:

數(shù)據(jù)修改時如何留痕

注意:B2 中 EDITUSER 字段為數(shù)據(jù)庫中的修改人字段,將其賦值為 userid,表示更新時將參數(shù) userid 的值保存到對應字段中。

4、 制作填報表,如下圖:

數(shù)據(jù)修改時如何留痕

A3 設置單元格類型為維度格,表達式為 =dd.(DDID),dd 為數(shù)據(jù)來源中定義的數(shù)據(jù)對象名稱,此單元格取表中 DDID 的值,字段名稱中設置 dd.DDID。

B3~E3 單元格類型設置成數(shù)值格,用于填寫信息,按照填報表取字段名稱規(guī)則,B3 單元格默認取其上方單元格為字段名稱,由于數(shù)據(jù)庫中存儲的是英文字段名“KHID”,和 B2 中的“客戶編號”不一致,所以為取出正確數(shù)據(jù),在 B3 單元格的字段名稱中設置“KHID”,指定單元格字段名稱,其余類似。

按照客戶樣式要求調(diào)整報表樣式,并保存報表即可。

5、 發(fā)布報表并設置參數(shù)傳遞

在瀏覽器中訪問該報表,并且在 url 中將用戶編號傳遞給參數(shù) userid,如: http://localhost:6868/demo/reportJsp/showInput.jsp?sht=ddxx.sht&userid=zhangsan

參數(shù)可以在 url 中傳遞,為保證其安全性,用戶信息可能存在 session 中,那么在 showInput.jsp 中獲取 session 中的用戶信息,并傳遞給報表標簽的 params 標簽即可,傳遞格式:參數(shù)名稱 = 參數(shù)值。

報表展現(xiàn)后,格式如下:

數(shù)據(jù)修改時如何留痕

頁面端修改數(shù)據(jù)保存后,去數(shù)據(jù)庫端查看數(shù)據(jù)發(fā)現(xiàn),EDITUSER 字段數(shù)據(jù)為傳入的用戶信息,如下圖:

數(shù)據(jù)修改時如何留痕

發(fā)現(xiàn)問題

實際使用中發(fā)現(xiàn),用戶可能只修改了某幾條記錄,但是數(shù)據(jù)庫中的 EDITUSER 字段的所有數(shù)據(jù)都會發(fā)生變化,而用戶需求肯定是只更改該用戶修改的數(shù)據(jù)。

問題原因及解決辦法:

前面更新數(shù)據(jù)采用的是集算腳本中的 update 函數(shù),該函數(shù)處理時會根據(jù)新舊對象數(shù)據(jù)進行判斷,從而判定處理時是 update、insert 還是 delete 操作。因此解決辦法就是在新舊對象中刪除沒有修改的數(shù)據(jù)即可,下面是更改后的數(shù)據(jù)去向腳本:

數(shù)據(jù)修改時如何留痕

B1 中通過 join 函數(shù)將兩個對象關聯(lián)在一起,此時關聯(lián)字段是對象中的所有字段,這樣可以找到?jīng)]有修改的數(shù)據(jù)。

C1 中取出兩個對象中所有數(shù)據(jù)相同 (沒有修改的) 的主鍵字段

A2、B2 中分別從兩個對象中根據(jù) C1 的值過濾出沒有修改的數(shù)據(jù)

A3、B3 刪除沒有修改的數(shù)據(jù),這樣兩個對象中的數(shù)據(jù)均為用戶頁面端修改后的數(shù)據(jù),再執(zhí)行 update 操作即可。數(shù)據(jù)庫中數(shù)據(jù)如下:

數(shù)據(jù)修改時如何留痕

可見,只有頁面端修改的數(shù)據(jù) EDITUSER 字段的值會發(fā)生變化,其余不變,這樣就可以定位到具體哪些數(shù)據(jù)被哪些人做了修改。

總結:

本例中通過在腳本中對填報對象的數(shù)據(jù)進行修改,做到了在相應數(shù)據(jù)表中更新最后修改人字段,并且能精確到他修改的數(shù)據(jù)。實際應用中也可以增加最后修改時間等,或者在腳本中做更復雜的業(yè)務處理。


詳情鏈接: http://c.raqsoft.com.cn/article/1540825011256


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI