溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何通過腳本實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)更新

發(fā)布時(shí)間:2020-08-06 22:55:20 來源:ITPUB博客 閱讀:139 作者:rqgxy 欄目:編程語言

在數(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)表,如下圖所示:

如何通過腳本實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)更新

小技巧

如果對(duì)采集規(guī)則不熟悉,那么可以對(duì)第二行每個(gè)單元格設(shè)置字段名稱:對(duì)象. 字段

第二步  定義參數(shù)

在填報(bào)–參數(shù)配置頁面中新增需要的參數(shù),本文需要定義 type 參數(shù)作為數(shù)據(jù)更新處理方式判斷依據(jù),如下圖所示:

如何通過腳本實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)更新

第三步  修改腳本,實(shí)現(xiàn)動(dòng)態(tài)更新數(shù)據(jù)處理

來源腳本為默認(rèn)生成的腳本:

如何通過腳本實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)更新

其中,

B2 的語句:>EMPLOYEE=A1.query(“SELECT EID,NAME,SURNAME,BIRTHDAY,HIREDATE from EMPLOYEE”)   從 demo 庫中查詢 employee 表的數(shù)據(jù),并將結(jié)果寫到 employee 對(duì)象中

去向腳本修改為如下圖所示的內(nèi)容:

如何通過腳本實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tà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


向AI問一下細(xì)節(jié)

免責(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)容。

AI