數據填報修改時如何增長操做人員信息

需求描述:

用戶在頁面端修改數據時爲保證數據的可追溯性,能夠在數據表中增長修改人字段,用於保存修改人的信息,追溯數據的有效性。下面就介紹一下如何實現這個需求。數據庫

解決方案

一:填報表製做瀏覽器

按照用戶的需求製做填報表,如「訂單信息表」:安全

一、 新建填報表,新增參數:userid,用於接收系統傳進來的用戶信息。session

二、 在「數據處理」對話框中把「數據來源」設置爲使用「腳本」方式,如圖:jsp

1jpg

三、 在「數據處理」對話框中把「數據去向」也設置爲使用「腳本」,如圖:函數

2jpg

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

四、 製做填報表,以下圖:spa

3jpg

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

B3~E3 單元格類型設置成數值格,用於填寫信息,按照填報表取字段名稱規則,B3 單元格默認取其上方單元格爲字段名稱,因爲數據庫中存儲的是英文字段名「KHID」,和 B2 中的「客戶編號」不一致,因此爲取出正確數據,在 B3 單元格的字段名稱中設置「KHID」,指定單元格字段名稱,其他相似。對象

按照客戶樣式要求調整報表樣式,並保存報表便可。

五、 發佈報表並設置參數傳遞

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

參數能夠在 url 中傳遞,爲保證其安全性,用戶信息可能存在 session 中,那麼在 showInput.jsp 中獲取 session 中的用戶信息,並傳遞給報表標籤的 params 標籤便可,傳遞格式:參數名稱 = 參數值。

報表展示後,格式以下:

4jpg

頁面端修改數據保存後,去數據庫端查看數據發現,EDITUSER 字段數據爲傳入的用戶信息,以下圖:

5jpg

發現問題

實際使用中發現,用戶可能只修改了某幾條記錄,可是數據庫中的 EDITUSER 字段的全部數據都會發生變化,而用戶需求確定是只更改該用戶修改的數據。

問題緣由及解決辦法:

前面更新數據採用的是集算腳本中的 update 函數,該函數處理時會根據新舊對象數據進行判斷,從而斷定處理時是 update、insert 仍是 delete 操做。所以解決辦法就是在新舊對象中刪除沒有修改的數據便可,下面是更改後的數據去向腳本:

6jpg

B1 中經過 join 函數將兩個對象關聯在一塊兒,此時關聯字段是對象中的全部字段,這樣能夠找到沒有修改的數據。

C1 中取出兩個對象中全部數據相同 (沒有修改的) 的主鍵字段

A二、B2 中分別從兩個對象中根據 C1 的值過濾出沒有修改的數據

A三、B3 刪除沒有修改的數據,這樣兩個對象中的數據均爲用戶頁面端修改後的數據,再執行 update 操做便可。數據庫中數據以下:

7jpg

可見,只有頁面端修改的數據 EDITUSER 字段的值會發生變化,其他不變,這樣就能夠定位到具體哪些數據被哪些人作了修改。

總結:

本例中經過在腳本中對填報對象的數據進行修改,作到了在相應數據表中更新最後修改人字段,而且能精確到他修改的數據。實際應用中也能夠增長最後修改時間等,或者在腳本中作更復雜的業務處理。

相關文章
相關標籤/搜索