為什么說報表是組態軟件中的雞肋呢?其實這個源于報表變化無窮的用戶需求,因為對于每個公司或者工廠以及業主來說,都有自己不同風格和樣式的報表。而不同的組態軟件廠商面對這樣應用的時候變得很頭疼,所以索性就放棄報表組件功能,而讓用戶選擇第三方的報表軟件,如intouch、ifix、citect、FTView SE等都不支持報表,只有wincc僅能支持簡單的報表功能。反觀國內組態軟件都帶有報表功能,但也是不能滿足國內用戶的需求,很多的技術支持都把精力放在支持報表功能上,而且國內的組態軟件也并不是自行開發報表功能,更多是采用通用報表組件比如CELL組件。
作為第三方的報表軟件,現在也是十分成熟的,像水晶報表、夢報表等,這些都是適用于工業自動化的報表,但是這種報表有一個通用的的問題:第一是價格太高,第二是報表數據庫不統一。一般來說成熟的第三方報表軟件根據頁面收費,一般一個項目都需要幾萬的費用,這不是中國客戶能夠接受的,有一些中國客戶冒著風險使用不穩定的盜版報表軟件,這樣對自己和對客戶都不是負責任的表現。另外數據庫不統一也是問題所在,因為這些成熟報表軟件多數采用OPC DA接口采集組態軟件的實時數據,根據客戶定義時間間隔來存儲所需要的數據,這樣就造成了組態軟件中存儲歷史數據和報表數據庫中時間不對應。當客戶根據某些時刻分析故障,就會發現歷史趨勢中某一刻數據和報表中這個時刻不同,這樣就造成了用戶無法分析故障。還有大量客戶退而求其次選擇組態軟件的腳本+excel來做報表,但這也有個比較痛苦的問題,第一個就是需要寫大量代碼來完成excel對象操作和組態軟件歷史數據庫操作;第二個就是excel生成報表不能嵌入到組態軟件中顯示,只能背景打印和存儲。基于此,現在客戶也是對于報表無從下手。
有沒有一種這樣的報表產品,能夠以組態軟件數據庫為報表歷史庫,無需復雜的腳本控制,價格低廉的報表軟件呢?高興的是我們看到了國內一些具有民族自主知識產權的廠商已經開發了我們所希望的這款產品。福澤科技剛剛開發了一款報表軟件,我們能夠看到這款軟件分為兩部分,第一部分就是常規的數據采集部分,他的采集器分為兩種,一種是通過OPC形式把組態軟件實時數據定時存儲,另一種就是可以同步wincc、intouch、Ifix、FTViewSE的歷史庫。第二種方式很有殺傷力,一般報表軟件多數采用OPC或者低級dde數據采集然后數據存儲,這樣會造成報表庫的數據和組態軟件的歷史庫數據在某一時間點上不一樣,但是它解決了這個問題,它是同步組態軟件的歷史數據保證數據統一性。這款軟件也沒有脫離其他報表軟件的俗套,同樣選取了SQL server來做報表數據庫載體。也許這是一個較為成熟的存儲方案,不過從數據獲取技術角度來看開發者確實煞費苦心。再來看看模版設計,算是一個不錯的設計理念,類似excel表格操作方式,最大的特點就是報表模版右側有三個list控件,分別顯示連接報表數據庫的庫名、數據庫中有那些數據表、表中有多少報表變量是有效的。這樣設計很有特點,常規報表工具都是需要用戶自己記錄變量名字,并設計擺放位置。開發者在設計連接數據庫的形式上采用OLEDB的彈出對話框形式,可以讓用戶選用SQL server然后選取庫體并寫入用戶名和密碼,通過測試以后剛才三個列表就會出現庫名、表名、變量名。通常報表都是要自己編寫odbc的DSN連接字或者自己寫OLEDB的連接串,這樣的報表數據庫連接是比較人性化和嚴謹的。
通過報表模版設計后就要進入腳本開發了,我發現模版設計就是設計靜態模版樣式,沒有任何地方寫公式或者查詢公式,但進入腳本開發環境我發現玄機在此,亮點也是在這里:此款腳本竟然支持VBS腳本!多數報表軟件的腳本只是支持簡單四則運算、最大值、最小值、平均值和SQL查詢,這款軟件更像excel支持VBA的形式,也能看得出來開發者借鑒了excel做報表的設計理念,對于表格的動態數據和運算以及從數據庫獲取都是通過VBS腳本來操作,它封裝了幾個對象:1.FthDB是報表數據庫的對象,它能夠支持OLEDB的字符串的連接和SQL查詢語法;2.FthRPT是報表模版對象,他能夠支持使用cellwrite和cellread兩個方法對報表模版進行讀寫;3.data數組對象,它是SQL查詢后返回的結果記錄集,以類型為string二維數組形式存在。但在編寫腳本時也發現一些問題,就是返回來的記錄集是字符串形式,如果需要計算或者求最大值、最小值和平均值,需要在腳本上使用類型轉換成real型再計算。這一點不是很方便,但是也可以理解開發者這樣處理的行為,因為返回數據類型并不知道是什么類型,只能采用String這種通用類型。有一點很爽,就是想怎么計算就可以怎么計算了,完全符合VBS語法以及支持VBS全部函數,就連msgbox和inputbox都能夠支持,真算是很強大了。此款軟件包含一個runtime的環境,可以運行測試報表模版和報表腳本是否正確顯示,并可以支持打印和導出為csv、xls形式,因為VBS語言屬于解釋性語言,沒有編譯功能,只能通過runtime運行一下才能看出來模版設計和動態數據的顯示效果,但這個runtime其實只是一個測試工具,真正的運行組件是一個叫fthrpt-share.ocx控件,它才是真正地運行內核,可以支持嵌入到任何組態軟件中,通過屬性設置報表模板路徑和報表腳本路徑,然后再調用方法run就可以在組態軟件運行當中看到你想要的報表,并可以通過調用方法printout和printpreview來實現報表打印和預覽,也可以通過調用方法export來把運行的報表數據導出為csv、xls形式存儲。
(本內容觀點只代表作者看法,僅供參考)
共0條 [查看全部] 網友評論