紫金橋?qū)崟r數(shù)據(jù)庫軟件里預(yù)置了一些組件,分別實現(xiàn)不同的特定功能,在工程組態(tài)的時候,恰當(dāng)利用這些組件來實現(xiàn)某些功能,會達到事半功倍的效果。
紫金橋?qū)崟r數(shù)據(jù)庫軟件里預(yù)置的歷史查詢組件,能夠按照需求查找一段時間內(nèi)的歷史數(shù)據(jù),然后通過報表顯示出來或者供其他使用。
本示例是通過歷史查詢組件支持的函數(shù),利用腳本對組件進行操作,關(guān)于組件支持的具體函數(shù),可以去軟件幫助中查找,這里不詳述。
下面主要講解一下歷史查詢組件的具體使用。
功能是這樣的:首先,將要查詢歷史的位號,添加到組件中,然后設(shè)定要查詢歷史的起始時間和結(jié)束時間,再設(shè)定要查詢的相鄰歷史數(shù)據(jù)之間的時間間隔,執(zhí)行查詢并把結(jié)果顯示到報表中,功能完成。
在窗口中添加歷史查詢組件,并將組件命名為His1,同時需要使用一個報表進行配合使用,新建一個自由報表命名為Tab1,該報表用來顯示查詢的結(jié)果。
下圖是運行后查詢數(shù)據(jù)的畫面:

下面就來說一下各部分的腳本,腳本一共3部分,分別是‘添加位號’、‘開始檢索’按鈕中的腳本,還有一部分是歷史查詢組件中的‘事件腳本’。
首先來看‘添加位號’按鈕中的腳本,如下圖:

因為本例中使用的點名是有規(guī)律的,所以使用一個循環(huán)腳本一次全添加到歷史查詢組件中,其中主要是使用了歷史查詢組件的函數(shù)AddTag(),讀者可以根據(jù)自己的實際情況使用該函數(shù)向組件中動態(tài)的添加要查詢的點。
接下來是‘開始檢索’按鈕的腳本,如下圖:

這里主要就是歷史查詢組件執(zhí)行Start()函數(shù),開始歷史檢索,但是由于函數(shù)參數(shù)需要,先計算出了指定時間范圍內(nèi)要查找的歷史數(shù)據(jù)個數(shù)以及相鄰歷史的時間間隔。
最后一部分腳本是歷史查詢組件里的‘事件腳本’,雙擊組件,在彈出窗口單機‘事件腳本’按鈕即進入腳本編輯框,在‘檢索完成時’選項卡里面,就是組件檢索完成歷史數(shù)據(jù)后要執(zhí)行的腳本,如下圖:

此部分前兩段分別是根據(jù)查詢到的歷史數(shù)據(jù)個數(shù)以及數(shù)據(jù)點的個數(shù),來設(shè)置報表的行數(shù)和列數(shù),最后一段的循環(huán)語句是把查詢到的數(shù)據(jù)添加到報表中,第一層循環(huán)是按行添加,循環(huán)內(nèi)的第一行是利用歷史查詢組件的函數(shù)GetTimeText()取得該行歷史數(shù)據(jù)的時刻,第二層循環(huán)是按列添加,循環(huán)內(nèi)的第一行使用GetTagName()函數(shù)取得每列的點名,添加到報表的表頭,第二行使用GetCell()取得每列在該行的歷史數(shù)據(jù),然后添加到報表中。
以上就是本例中歷史查詢組件通過函數(shù)的使用,適合需要查詢的位號較多并且位號名有一定規(guī)律的情況,如果需要查詢的位號較少,可以直接在歷史查詢組件的組態(tài)界面直接添加,然后直接執(zhí)行Start()函數(shù)即可。
另外,本例中為了方便觀察,設(shè)置了歷史查詢組件運行可見,實際上該組件默認在運行狀態(tài)是不顯示的,也沒有必要顯示,這一點可以在組件的組態(tài)界面中勾選或者取消‘運行時可見’即可。
讀者如果有些函數(shù)不十分清楚,可以查看紫金橋?qū)崟r數(shù)據(jù)庫的幫助文件。以后我們還會陸續(xù)推出其他組件的示例說明。
|