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