【摘要】
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了呼圖壁免費(fèi)建站歡迎大家使用!
在食品生產(chǎn)安全中現(xiàn)在提倡產(chǎn)地的可追溯性,同樣在數(shù)據(jù)安全方面同樣有相應(yīng)的要求,要記錄什么人對(duì)哪些數(shù)據(jù)做了修改操作,這樣就要求業(yè)務(wù)人員錄入、修改數(shù)據(jù)時(shí)能夠?qū)⒃撊藛T信息一同保存下來(lái),方便數(shù)據(jù)的可追溯,點(diǎn)擊 數(shù)據(jù)填報(bào)修改時(shí)如何增加操作人員信息 查看具體方法
需求描述:
用戶(hù)在頁(yè)面端修改數(shù)據(jù)時(shí)為保證數(shù)據(jù)的可追溯性,可以在數(shù)據(jù)表中增加修改人字段,用于保存修改人的信息,追溯數(shù)據(jù)的有效性。下面就介紹一下如何實(shí)現(xiàn)這個(gè)需求。
解決方案
一:填報(bào)表制作
按照用戶(hù)的需求制作填報(bào)表,如“訂單信息表”:
1、 新建填報(bào)表,新增參數(shù):userid,用于接收系統(tǒng)傳進(jìn)來(lái)的用戶(hù)信息。
2、 在“數(shù)據(jù)處理”對(duì)話(huà)框中把“數(shù)據(jù)來(lái)源”設(shè)置為使用“腳本”方式,如圖:
3、 在“數(shù)據(jù)處理”對(duì)話(huà)框中把“數(shù)據(jù)去向”也設(shè)置為使用“腳本”,如圖:
注意:B2 中 EDITUSER 字段為數(shù)據(jù)庫(kù)中的修改人字段,將其賦值為 userid,表示更新時(shí)將參數(shù) userid 的值保存到對(duì)應(yīng)字段中。
4、 制作填報(bào)表,如下圖:
A3 設(shè)置單元格類(lèi)型為維度格,表達(dá)式為 =dd.(DDID),dd 為數(shù)據(jù)來(lái)源中定義的數(shù)據(jù)對(duì)象名稱(chēng),此單元格取表中 DDID 的值,字段名稱(chēng)中設(shè)置 dd.DDID。
B3~E3 單元格類(lèi)型設(shè)置成數(shù)值格,用于填寫(xiě)信息,按照填報(bào)表取字段名稱(chēng)規(guī)則,B3 單元格默認(rèn)取其上方單元格為字段名稱(chēng),由于數(shù)據(jù)庫(kù)中存儲(chǔ)的是英文字段名“KHID”,和 B2 中的“客戶(hù)編號(hào)”不一致,所以為取出正確數(shù)據(jù),在 B3 單元格的字段名稱(chēng)中設(shè)置“KHID”,指定單元格字段名稱(chēng),其余類(lèi)似。
按照客戶(hù)樣式要求調(diào)整報(bào)表樣式,并保存報(bào)表即可。
5、 發(fā)布報(bào)表并設(shè)置參數(shù)傳遞
在瀏覽器中訪(fǎng)問(wèn)該報(bào)表,并且在 url 中將用戶(hù)編號(hào)傳遞給參數(shù) userid,如: http://localhost:6868/demo/reportJsp/showInput.jsp?sht=ddxx.sht&userid=zhangsan
參數(shù)可以在 url 中傳遞,為保證其安全性,用戶(hù)信息可能存在 session 中,那么在 showInput.jsp 中獲取 session 中的用戶(hù)信息,并傳遞給報(bào)表標(biāo)簽的 params 標(biāo)簽即可,傳遞格式:參數(shù)名稱(chēng) = 參數(shù)值。
報(bào)表展現(xiàn)后,格式如下:
頁(yè)面端修改數(shù)據(jù)保存后,去數(shù)據(jù)庫(kù)端查看數(shù)據(jù)發(fā)現(xiàn),EDITUSER 字段數(shù)據(jù)為傳入的用戶(hù)信息,如下圖:
發(fā)現(xiàn)問(wèn)題
實(shí)際使用中發(fā)現(xiàn),用戶(hù)可能只修改了某幾條記錄,但是數(shù)據(jù)庫(kù)中的 EDITUSER 字段的所有數(shù)據(jù)都會(huì)發(fā)生變化,而用戶(hù)需求肯定是只更改該用戶(hù)修改的數(shù)據(jù)。
問(wèn)題原因及解決辦法:
前面更新數(shù)據(jù)采用的是集算腳本中的 update 函數(shù),該函數(shù)處理時(shí)會(huì)根據(jù)新舊對(duì)象數(shù)據(jù)進(jìn)行判斷,從而判定處理時(shí)是 update、insert 還是 delete 操作。因此解決辦法就是在新舊對(duì)象中刪除沒(méi)有修改的數(shù)據(jù)即可,下面是更改后的數(shù)據(jù)去向腳本:
B1 中通過(guò) join 函數(shù)將兩個(gè)對(duì)象關(guān)聯(lián)在一起,此時(shí)關(guān)聯(lián)字段是對(duì)象中的所有字段,這樣可以找到?jīng)]有修改的數(shù)據(jù)。
C1 中取出兩個(gè)對(duì)象中所有數(shù)據(jù)相同 (沒(méi)有修改的) 的主鍵字段
A2、B2 中分別從兩個(gè)對(duì)象中根據(jù) C1 的值過(guò)濾出沒(méi)有修改的數(shù)據(jù)
A3、B3 刪除沒(méi)有修改的數(shù)據(jù),這樣兩個(gè)對(duì)象中的數(shù)據(jù)均為用戶(hù)頁(yè)面端修改后的數(shù)據(jù),再執(zhí)行 update 操作即可。數(shù)據(jù)庫(kù)中數(shù)據(jù)如下:
可見(jiàn),只有頁(yè)面端修改的數(shù)據(jù) EDITUSER 字段的值會(huì)發(fā)生變化,其余不變,這樣就可以定位到具體哪些數(shù)據(jù)被哪些人做了修改。
總結(jié):
本例中通過(guò)在腳本中對(duì)填報(bào)對(duì)象的數(shù)據(jù)進(jìn)行修改,做到了在相應(yīng)數(shù)據(jù)表中更新最后修改人字段,并且能精確到他修改的數(shù)據(jù)。實(shí)際應(yīng)用中也可以增加最后修改時(shí)間等,或者在腳本中做更復(fù)雜的業(yè)務(wù)處理。
詳情鏈接:
http://c.raqsoft.com.cn/article/1540825011256