關(guān)鍵詞:紫金橋,組態(tài)軟件,SQL,歷史數(shù)據(jù)查詢(xún),自由報(bào)表
紫金橋監(jiān)控組態(tài)軟件的內(nèi)置SQL查詢(xún)功能,主要用于紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)查詢(xún)歷史數(shù)據(jù)和報(bào)警記錄,還可以查詢(xún)實(shí)時(shí)數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù),配合自由報(bào)表和起始時(shí)間控件,能夠快速靈活的查詢(xún)需要數(shù)據(jù)。
下面通過(guò)示例工程介紹內(nèi)置SQL查詢(xún)歷史的使用方法。
首先來(lái)看一下運(yùn)行時(shí)的畫(huà)面:

示例中使用了兩個(gè)時(shí)間組件,一個(gè)自由報(bào)表,三個(gè)按鈕。查詢(xún)歷史數(shù)據(jù)之前必須先連接數(shù)據(jù)源,右上方有顯示連接數(shù)據(jù)源的結(jié)果,是連接正?;蚴枪收?。連接狀態(tài)顯示正常后,分別選擇查詢(xún)數(shù)據(jù)的起始和結(jié)束時(shí)間,然后單擊‘查詢(xún)?nèi)繗v史’按鈕,在下面的列表就會(huì)顯示已經(jīng)查詢(xún)到的歷史數(shù)據(jù)。查詢(xún)某一時(shí)刻的歷史,選擇起始時(shí)間即可,無(wú)需選擇結(jié)束時(shí)間,然后單擊‘查詢(xún)某刻歷史’,在報(bào)表中就能夠顯示查詢(xún)到的該時(shí)刻的歷史值了。
在組態(tài)中給各組件命名,開(kāi)始時(shí)間組件的名稱(chēng)是time1,結(jié)束時(shí)間組件的名稱(chēng)是time2,報(bào)表名稱(chēng)是fr。三個(gè)按鈕功能我們按照字面意思理解即可。
下面我們來(lái)看一下腳本部分:
連接數(shù)據(jù)源:
此部分只有一行腳本,其功能是連接‘本地’數(shù)據(jù)源,將返回值賦給一個(gè)窗口變量,用于查看數(shù)據(jù)源連接是否成功,連接狀態(tài)就是通過(guò)窗口變量‘ZT’做動(dòng)畫(huà)連接顯示的。
ZT =
#ObSql.Connect("");
查詢(xún)歷史數(shù)據(jù):
這部分腳本分成了幾個(gè)部分,具體見(jiàn)下面的截圖:

這部分腳本內(nèi)容簡(jiǎn)單的說(shuō)明一下,第一部分就是定義臨時(shí)變量,為了下面的使用方便;第二部分是把整型的時(shí)間值(紫金橋軟件里的時(shí)間默認(rèn)都是整型值)轉(zhuǎn)換成字符型,用于下面拼接字符串;第三部分應(yīng)該算是關(guān)鍵的部分,這里使用了內(nèi)置SQL函數(shù)查詢(xún)歷史數(shù)據(jù),而且字符串拼接需要特別注意,稍有大意就會(huì)導(dǎo)致數(shù)據(jù)查詢(xún)不成功。因?yàn)槭鞘纠こ?,只做了兩個(gè)數(shù)據(jù)點(diǎn),如果數(shù)據(jù)點(diǎn)較多,這部分字符串的拼接腳本可能要復(fù)雜一些;第四部分比較簡(jiǎn)單,就是控制報(bào)表的行數(shù),如果本次查詢(xún)的數(shù)據(jù)少于16條,那么報(bào)表保留16行,如果本次查詢(xún)數(shù)據(jù)多于16條,那么按照數(shù)據(jù)的數(shù)量調(diào)整報(bào)表的行數(shù);最后一部分是將二維表里的數(shù)據(jù)顯示到報(bào)表中,該循環(huán)語(yǔ)句中每執(zhí)行一次循環(huán),是將二維表里的一條數(shù)據(jù)的時(shí)間、點(diǎn)名、數(shù)值放到報(bào)表的一行中,這部分主要需要注意的是二維表里數(shù)據(jù)的列號(hào),如果取錯(cuò)了列號(hào),那就不是需要的數(shù)據(jù)了。
查詢(xún)某時(shí)刻的歷史值:
下面來(lái)看一下查詢(xún)時(shí)刻歷史的腳本,截圖如下:

這部分腳本與查詢(xún)?nèi)繗v史的差別不是非常大。因?yàn)椴樵?xún)的是某一個(gè)時(shí)刻的歷史,所以這里只需要一個(gè)時(shí)間點(diǎn)即可;關(guān)于報(bào)表行數(shù),由于本例中只用了兩個(gè)數(shù)據(jù)點(diǎn),所以某刻的歷史只會(huì)有兩條數(shù)據(jù),無(wú)需控制報(bào)表行數(shù),直接保留16行;另外一點(diǎn)就是內(nèi)置SQL查詢(xún)語(yǔ)句的字符串拼接部分略有不同。
內(nèi)置SQL查詢(xún)歷史數(shù)據(jù)的功能介紹就是這樣,示例中的腳本可以靈活使用,以后會(huì)陸續(xù)發(fā)布關(guān)于內(nèi)置SQL查詢(xún)的其他三個(gè)功能。