填報表之資料留痕
隨著資訊時代的快速發展,報表工具的應用也越來越普遍,其中難免會涉及到很多填報需求。
比如:
資料採集錄入填報時如何只更新當前修改行、用報表工具實現樹狀層級結構的填報表、web 運算元據留痕等等,今天我們主要來介紹一下 web 運算元據留痕,簡單說就是填報表從 A 表取數,將 web 端修改記錄更新到 B 表儲存操作記錄……如果您還不明白,其實就相當於記錄您某個賬號的登入時間地點。
下面我們具體看一下。
工具:潤乾報表 oracle11g
資料庫表結構(SQL 語句):
A表
:create table GDFW_RB_FHQK_MX(
ID NUMBER,
JCSJ DATE not null,
TJRQ DATE,
TJSJ VARCHAR2(12),
QKJFH NUMBER(12,2)
)
B表
:create table GDFW_RB_FHQK_MX_HISTORY(
ID NUMBER,
JCSJ DATE not null,
TJRQ DATE,
TJSJ VARCHAR2(12),
QKJFH NUMBER(12,2),
CREATER NVARCHAR2(20) default ‘SYSTEM’,
CREATETIME DATE default SYSDATE,
XGYY NVARCHAR2(200) default ‘暫未填寫’
)
當前 報表設計如下,首先實現基本的行式填報操作:
資料來源:
資料去向:
至此,填報表的基本功能已經實現, 下面我們繼續以這個報表為例看一下怎麼實現 web 運算元據留痕。
-
保證資料來源、資料去向、報表中涉及到的欄位個數名稱一致。
-
在資料去向執行 update 前對要插入到 B 表的資料做處理。方式如下:
透過對比新舊物件的記錄來實現,以獲取到 web 端操作的記錄,因為行式填報表在 web 頁面上支援做增、刪、改三種操作,故不能保證新舊物件的記錄條數一致,所以這裡需要透過雙層迴圈來獲取新舊物件的差集(即 web 頁面操作的記錄集)。
注:舊物件儲存的是修改前的資料,新物件儲存的是修改後的資料。
- 具體的資料處理過程:
資料來源指令碼增加 XGYY,並且以物件(如物件:GDFW_RB_F HQK_MX)的方式返回新增後的結果集。如下:
資料去向指令碼修改如下:
其中:
第 2 行、第 8 行以及第 10 行的 debug 部分,是為了觀察各部操作前後資料的變化,有助於排查問題,最終可以視實際情況刪除或註釋。
3-7 行 使用雙層 for 迴圈對比 GDFW_RB_FHQK_MX 與 GDFW_RB_FHQK_MX_old 物件記錄並從 GDFW_RB_FHQK_MX 中刪除兩者相同的記錄,從而整理出 web 端操作的行;
for 迴圈原理:
for 舊物件
if(新物件主鍵對比舊物件主鍵)
for 新物件
if (舊物件記錄 == 新物件記錄)從新物件裡刪除
else 將 web 頁面刪除的記錄插入新物件
注:if…else…作用是對比主鍵保證 web 頁面上刪除的記錄也被記錄下來。
最後新物件中保留的記錄既是 web 端操作的行。
A9 單元格 使用 db.update@i() 函式實現更新入庫, 其中 @i 選項代表的是僅執行插入操作。
透過上面的修改後,我們就可以實現 web 運算元據留痕了。
效果如下:
web 操作前,B 表資料記錄。
在 web 端訪問報表,修改原有資料,並增加行(動圖)
web 操作後,在資料庫端查詢資料,檢查一下,我們會發現僅把 web 端操作的資料插入到資料庫中了,Bingo! 沒想到吧,就這麼輕鬆搞定了。
最後,課外知識擴充套件
1. 怎樣在不改變資料庫表結構的基礎上,增加欄位。
使用集算器函式 P.derive(xi :Fi,…),給序表 / 排列 _P_ 增加 Fi,…欄位,形成 "P 中原有的欄位, Fi,…" 結構的序表,然後對 P 的每條記錄遍歷,給每個 Fi 賦值為 xi。簡單說就是使用此函式可以複製原序表也可以在原序表的基礎上追加欄位。
2. 資料更新時,如何控制僅執行插入操作。
靈活運用 _db_.update_(A:A’,tbl,Fi:xi,…;P,…)_ 函式的選項。
@i 對比主鍵只生成 INSERT。無 _A’_ 時不再對比,直接用 A 插入到資料庫。
@u 對比主鍵只生成 UPDATE。無 _A’_ 時不再對比,直接用 _A_ 更新到資料庫。
@k 完成後不提交事務,預設將提交。
等等,具體參考集算器函式參考 doc.raqsoft.com.cn/esproc/func/update.html
3. 填報更新原理:
目前,行式填報表在提交的時會自動對比修改前和修改後的資料:首先對比主鍵,根據主鍵是否有新增或缺失確定資料的增刪操作;然後再針對前後都有的記錄對比每條記錄值是否有不同,如有不同則執行 update 操作。
所以,建議資料處理(資料來源、資料去向)中的欄位名稱與報表中的欄位名稱個數要保持一致,不然填報更新時就會因新舊物件欄位不匹配導致更新失敗。
另外細心的你也一定找到了更新前後的資料是分開編輯的的好處了吧–靈活、自由、不受約束!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2669211/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫登入留痕功能新增資料庫
- 皕傑報表之填報操作
- 報表開發工具FineReport報表填報資料校驗
- 填報指令碼之輕鬆搞定複雜表的資料入庫指令碼
- 資料填報、報表展示哪家強?億信ABI給你答案
- 普通填報表單元格實現資料二次篩選
- Linux作業系統登入留痕功能Linux作業系統
- 還在為多人填報資料而頭疼?這個工具吊打EXCEL,線上可填報Excel
- 潤乾填報時資料來源為nullNull
- 填報表如何生成 UUID 標識UI
- 填報表中也可以新增 html 事件HTML事件
- 填報-web報表軟體必不可少的功能Web
- 行式填報 資料校驗 --- 小計校驗
- BI 產品支援資料填報補錄功能嗎?
- 填報表中如何新增 html 程式碼HTML
- 填報表實現隔行異色的效果
- 怎樣實現填報表定時提交
- 帆軟基礎之填報入門
- 長沙市政協委員王佳建議:資料上鍊“全程留痕” 解決民生領域痛點
- 皕傑報表之資料校驗與處理
- 業務填報資料及時入庫
- 水晶報表中文資料
- 效能最佳化之報表資料預先計算
- 全球主要的留學目的地國家(附原資料表)
- 報表從資料庫中採集相關資料生成報表,資料太少怎麼辦?資料庫
- 報表資料外接計算
- 報表資料庫4031資料庫
- 怎樣報表資料庫資料庫
- 皕傑報表之引數為NULL時,取全部資料Null
- 有什麼工具可以上載複雜的 excel 資料填報到資料庫中Excel資料庫
- Excel都搞不定的多人填報,它能!還支援線上填報!Excel
- 資料辯論:留學值不值
- 報表資料的可控快取快取
- 報表資料分庫儲存
- 資料分析報表怎麼做
- 大資料集報表點選表頭排序大資料排序
- 網售志願填報卡:大資料成賣點 相關部門否認提供資料大資料
- 巧用標誌欄位實現填報資料的暫存與鎖定