|
關鍵字:紫金橋;組態軟件;SQL;曆史數據查詢;自由報表
紫金橋監控組態軟件的內置SQL查zha詢xun功gong能neng,主zhu要yao用yong於yu紫zi金jin橋qiao實shi時shi數shu據ju庫ku查zha詢xun曆li史shi數shu據ju和he報bao警jing記ji錄lu,還hai可ke以yi查zha詢xun實shi時shi數shu據ju和he統tong計ji數shu據ju,配pei合he自zi由you報bao表biao和he起qi始shi時shi間jian控kong件jian,能neng夠gou快kuai速su靈ling活huo的de查zha詢xun需xu要yao數shu據ju。
下麵通過示例工程介紹內置SQL查詢曆史的使用方法。
首先來看一下運行時的畫麵:
 
示(shi)例(li)中(zhong)使(shi)用(yong)了(le)兩(liang)個(ge)時(shi)間(jian)組(zu)件(jian),一(yi)個(ge)自(zi)由(you)報(bao)表(biao),三(san)個(ge)按(an)鈕(niu)。查(zha)詢(xun)曆(li)史(shi)數(shu)據(ju)之(zhi)前(qian)必(bi)須(xu)先(xian)連(lian)接(jie)數(shu)據(ju)源(yuan),右(you)上(shang)方(fang)有(you)顯(xian)示(shi)連(lian)接(jie)數(shu)據(ju)源(yuan)的(de)結(jie)果(guo),是(shi)連(lian)接(jie)正(zheng)常(chang)或(huo)是(shi)故(gu)障(zhang)。連(lian)接(jie)狀(zhuang)態(tai)顯(xian)示(shi)正(zheng)常(chang)後(hou),分(fen)別(bie)選(xuan)擇(ze)查(zha)詢(xun)數(shu)據(ju)的(de)起(qi)始(shi)和(he)結(jie)束(shu)時(shi)間(jian),然(ran)後(hou)單(dan)擊(ji)‘查詢全部曆史’按鈕,在下麵的列表就會顯示已經查詢到的曆史數據。查詢某一時刻的曆史,選擇起始時間即可,無需選擇結束時間,然後單擊‘查詢某刻曆史’,在報表中就能夠顯示查詢到的該時刻的曆史值了。
在組態中給各組件命名,開始時間組件的名稱是time1,結束時間組件的名稱是time2,報表名稱是fr。三個按鈕功能我們按照字麵意思理解即可。
下麵我們來看一下腳本部分:
連接數據源:
此部分隻有一行腳本,其功能是連接‘本地’數據源,將返回值賦給一個窗口變量,用於查看數據源連接是否成功,連接狀態就是通過窗口變量‘ZT’做動畫連接顯示的。
ZT = #ObSql.Connect("");
查詢曆史數據:
這部分腳本分成了幾個部分,具體見下麵的截圖:
 
這部分腳本內容簡單的說明一下,第一部分就是定義臨時變量,為了下麵的使用方便;第二部分是把整型的時間值(紫金橋軟件裏的時間默認都是整型值)轉換成字符型,用於下麵拚接字符串;第三部分應該算是關鍵的部分,這裏使用了內置SQL函(han)數(shu)查(zha)詢(xun)曆(li)史(shi)數(shu)據(ju),而(er)且(qie)字(zi)符(fu)串(chuan)拚(pin)接(jie)需(xu)要(yao)特(te)別(bie)注(zhu)意(yi),稍(shao)有(you)大(da)意(yi)就(jiu)會(hui)導(dao)致(zhi)數(shu)據(ju)查(zha)詢(xun)不(bu)成(cheng)功(gong)。因(yin)為(wei)是(shi)示(shi)例(li)工(gong)程(cheng),隻(zhi)做(zuo)了(le)兩(liang)個(ge)數(shu)據(ju)點(dian),如(ru)果(guo)數(shu)據(ju)點(dian)較(jiao)多(duo),這(zhe)部(bu)分(fen)字(zi)符(fu)串(chuan)的(de)拚(pin)接(jie)腳(jiao)本(ben)可(ke)能(neng)要(yao)複(fu)雜(za)一(yi)些(xie);第四部分比較簡單,就是控製報表的行數,如果本次查詢的數據少於16條,那麼報表保留16行,如果本次查詢數據多於16條,那麼按照數據的數量調整報表的行數;最後一部分是將二維表裏的數據顯示到報表中,該循環語句中每執行一次循環,是將二維表裏的一條數據的時間、點名、數值放到報表的一行中,這部分主要需要注意的是二維表裏數據的列號,如果取錯了列號,那就不是需要的數據了。
查詢某時刻的曆史值:
下麵來看一下查詢時刻曆史的腳本,截圖如下:
 
這部分腳本與查詢全部曆史的差別不是非常大。因為查詢的是某一個時刻的曆史,所以這裏隻需要一個時間點即可;關於報表行數,由於本例中隻用了兩個數據點,所以某刻的曆史隻會有兩條數據,無需控製報表行數,直接保留16行;另外一點就是內置SQL查詢語句的字符串拚接部分略有不同。
內置SQL查詢曆史數據的功能介紹就是這樣,示例中的腳本可以靈活使用,以後會陸續發布關於內置SQL查詢的其他三個功能。
|