紫金橋監控組態軟件的內置SQL查詢功能,主要用于紫金橋實時數據庫查詢歷史數據和報警記錄,還可以查詢實時數據和統計數據,配合自由報表和起始時間控件,能夠快速靈活的查詢需要數據。
下面通過示例工程介紹內置SQL查詢歷史的使用方法。
首先來看一下運行時的畫面:
示例中使用了兩個時間組件,一個自由報表,三個按鈕。查詢歷史數據之前必須先連接數據源,右上方有顯示連接數據源的結果,是連接正常或是故障。連接狀態顯示正常后,分別選擇查詢數據的起始和結束時間,然后單擊‘查詢全部歷史’按鈕,在下面的列表就會顯示已經查詢到的歷史數據。查詢某一時刻的歷史,選擇起始時間即可,無需選擇結束時間,然后單擊‘查詢某刻歷史’,在報表中就能夠顯示查詢到的該時刻的歷史值了。
在組態中給各組件命名,開始時間組件的名稱是time1,結束時間組件的名稱是time2,報表名稱是fr。三個按鈕功能我們按照字面意思理解即可。
下面我們來看一下腳本部分,
連接數據源:
此部分只有一行腳本,其功能是連接‘本地’數據源,將返回值賦給一個窗口變量,用于查看數據源連接是否成功,連接狀態就是通過窗口變量‘ZT’做動畫連接顯示的。
ZT = #ObSql.Connect("");
查詢歷史數據:
這部分腳本分成了幾個部分,具體見下面的截圖,

這部分腳本內容簡單的說明一下,第一部分就是定義臨時變量,為了下面的使用方便;第二部分是把整型的時間值(紫金橋軟件里的時間默認都是整型值)轉換成字符型,用于下面拼接字符串;第三部分應該算是關鍵的部分,這里使用了內置SQL函數查詢歷史數據,而且字符串拼接需要特別注意,稍有大意就會導致數據查詢不成功。因為是示例工程,只做了兩個數據點,如果數據點較多,這部分字符串的拼接腳本可能要復雜一些;第四部分比較簡單,就是控制報表的行數,如果本次查詢的數據少于16條,那么報表保留16行,如果本次查詢數據多于16條,那么按照數據的數量調整報表的行數;最后一部分是將二維表里的數據顯示到報表中,該循環語句中每執行一次循環,是將二維表里的一條數據的時間、點名、數值放到報表的一行中,這部分主要需要注意的是二維表里數據的列號,如果取錯了列號,那就不是需要的數據了。
查詢某時刻的歷史值:
下面來看一下查詢時刻歷史的腳本,截圖如下:
這部分腳本與查詢全部歷史的差別不是非常大。因為查詢的是某一個時刻的歷史,所以這里只需要一個時間點即可;關于報表行數,由于本例中只用了兩個數據點,所以某刻的歷史只會有兩條數據,無需控制報表行數,直接保留16行;另外一點就是內置SQL查詢語句的字符串拼接部分略有不同。
內置SQL查詢歷史數據的功能介紹就是這樣,示例中的腳本可以靈活使用,以后會陸續發布關于內置SQL查詢的其他三個功能。
有任何關于組態軟件的技術問題或需要更多的技術資料,可以在微信(微信號:Realinfo)留下聯系方式或者到http://www.realinfo.cc/交流論壇里提出,我們將及時為您解答。