您好,登錄后才能下訂單哦!
在數據填報的場景中,常常會遇到根據條件動態更新數據的需求,例如:在條件 A 下將頁面所有數據插入到數據庫表中,而在條件 B 下則將頁面中做了修改的數據更新到數據庫表中。
遇到這種需求,腦海中的第一個想法就是:存儲過程更新、或者 java 代碼更新。不過,這兩種實現方式的工作量和后期維護卻實在讓人頭疼不已。那么,還有其他什么實現方式嗎?而且最好是能和報表完美整合到一起的那種….
這樣的美事兒,還真有!潤乾報表提供了腳本模式的填報表制作方式,通過腳本,可以實現你各種天馬行空想法。具體怎么操作呢?且聽我慢慢道來。
下面我們以動態更新 demo 庫中雇員表數據為例,當 type 參數的值為 1 時,將頁面中 employee 表的所有數據更新入庫;否則只將做了修改的 employee 記錄更新入庫。操作步驟如下:
第一步 制作行式填報
我們先使用行式填報制作向導制作一個簡單的行式填報表,如下圖所示:
【 小技巧 】
如果對采集規則不熟悉,那么可以對第二行每個單元格設置字段名稱:對象. 字段
第二步 定義參數
在填報–參數配置頁面中新增需要的參數,本文需要定義 type 參數作為數據更新處理方式判斷依據,如下圖所示:
第三步 修改腳本,實現動態更新數據處理
來源腳本為默認生成的腳本:
其中,
B2 的語句:>EMPLOYEE=A1.query(“SELECT EID,NAME,SURNAME,BIRTHDAY,HIREDATE from EMPLOYEE”) 從 demo 庫中查詢 employee 表的數據,并將結果寫到 employee 對象中
去向腳本修改為如下圖所示的內容:
動態更新數據時,需要用到 if 函數來動態判斷,這里著重講解下 if 的相關配置:
A2:if type==1 // 判斷是否滿足 type 參數值是 1 的條件
B3:>A1.update@ik(EMPLOYEE, 雇員, 雇員 ID:EID, 姓氏:NAME, 名字:SURNAME, 出生日期:BIRTHDAY, 雇用日期:HIREDATE ; 雇員 ID) // 當滿足 if 條件時,將 EMPLOYEE 對象中的數據全部插入到雇員表中,update@i 表示只執行插入更新操作
A4:else // 不滿足條件,type 參數值不是 1
B5:>A1.update@k(EMPLOYEE:EMPLOYEE_old, 雇員, 雇員 ID:EID, 姓氏:NAME, 名字:SURNAME, 出生日期:BIRTHDAY, 雇用日期:HIREDATE; 雇員 ID) // 當不滿足 if 條件時,將頁面中 EMPLOYEE 對象修改了的數據更新到數據庫中,當 update 后無其他選項時,表示執行智能更新
【 小技巧 】
在不確定如何處理數據或者檢查計算結果時,我們可以使用 debug()或者 output() 函數輸出需要檢查的信息,通過觀察控制臺結果來調試和判斷。
【延伸】
類似場景:
1)type 參數是否為 1 只是我們假設的一個條件,實際的條件可能更加靈活和復雜。例如動態更新數據的判斷依據可能是某個結果集是否為空,我們就可以使用 T.len() 獲取結果集的長度,當長度為 0 時,表示結果集為空。
2)假設示例中的需求修改為:當 type 的值不是 1 時,將雇員表和 EMPLOYEE 對象的數據作比較,然后將差異數據更新入庫。而雇員表數據在 guyuan 對象中,那么此時可以將 update 的寫法改為:
A1.update@k(EMPLOYEE:guyuan, 雇員, 雇員 ID:EID, 姓氏:NAME, 名字:SURNAME, 出生日期:BIRTHDAY, 雇用日期:HIREDATE; 雇員 ID)
至此,我們就實現了在腳本模式下制作填報表,進而動態更新數據的效果。這里需要重點理解的是 if 和 update 函數的使用,不過顯然也是比較簡單的哦 ~ 當我們遇到需要用腳本進行數據處理的情況,不要害怕,盤它就對了,盤的多了,你會發現原來腳本真的是很有意思的一種處理方式。
更多填報表制作技巧在這里: http://c.raqsoft.com.cn/tag/Report?t= 填報技巧
詳情鏈接: http://c.raqsoft.com.cn/article/1550469839038 ?r=gxy
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。