大地资源网视频在线观看新浪,日本春药精油按摩系列,成人av骚妻潮喷,国产xxxx搡xxxxx搡麻豆

您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>基于ActiveX技術(shù)的組態(tài)軟件通用報表控件的實現(xiàn)

直播推薦

更多>

企業(yè)動態(tài)

更多>

推薦展會

更多>

基于ActiveX技術(shù)的組態(tài)軟件通用報表控件的實現(xiàn)

2006年11月14日 15:45:15人氣:1136來源:煙臺勾股通信技術(shù)有限公司

1 引 言
通用組態(tài)軟件有著強大的功能,具有易用性,可以大大縮短用戶的開發(fā)時間,所以目前組態(tài)軟件在工業(yè)控制領(lǐng)域應(yīng)用的非常廣泛。作為通用得組態(tài)軟件,在某些方面可能不滿足我們的需求,這就要求我們通過其他工具進(jìn)行功能模塊開發(fā),集成到通用組態(tài)軟件中。
報表作為一種信息組織和分析的有力手段,是信息系統(tǒng)的重要組成部分。但很多組態(tài)軟件本身不具備報表功能,我們有必要開發(fā)通用報表控件,彌補組態(tài)軟件的不足,以滿足工程的需求。
要實現(xiàn)報表控件的通用性,zui根本的技術(shù)措施是用對象、組件技術(shù)去開發(fā),利用對象的機理去組織報表,提高報表模塊的通用性和重用性,基于COM組件的ActiveX 技術(shù)能夠滿足該需求。
2 ActiveX技術(shù)
ActiveX是Microsoft 提出的功能強大的程序設(shè)計和開發(fā)技術(shù),基于Component Object Model (COM)的可視化控件結(jié)構(gòu)的一種封裝技術(shù)。ActiveX控件是以二進(jìn)制代碼形式發(fā)布,具有與語言無關(guān)的特點,可以為任何支持COM 的語言及軟件所調(diào)用,有著較好的電腦移植性。利用組件技術(shù),可以實現(xiàn)一次編寫,多處使用,而不需要重新編譯鏈接,極大地推動了軟件的集成化[1] [2]。
可以用多種語言在WIN32環(huán)境下開發(fā)ActiveX組件,如MFC,ATL,VB,DELPHI等。在本文中,用VB對其進(jìn)行開發(fā)為例。VB提供了ActiveX控件界面向?qū)В梢苑奖阄覀兌x控件的屬性、方法和事件。
3 水晶報表控件
水晶報表(Crystal Reports)是一種報表系統(tǒng)常用的解決方案,能方便的與多種數(shù)據(jù)源建立連接,有著豐富的實現(xiàn)復(fù)雜報表格式和結(jié)構(gòu)、網(wǎng)絡(luò)輸出和打印輸出等功能。水晶報表主要有以下幾個重要組成部分組成: 報表引擎、報表設(shè)計器、報表查看控件、. rpt報表文件和數(shù)據(jù)源。
我們通過報表設(shè)計器來設(shè)計報表模板,如設(shè)計標(biāo)題,插入數(shù)據(jù)、公式、圖表、子報表等,并設(shè)置數(shù)據(jù)源,從而生成.rpt報表文件,在其他編程語言如VB中,可以通過報表引擎對報表數(shù)據(jù)進(jìn)行操作,通過報表查看控件預(yù)覽報表。
數(shù)據(jù)源作為報表非常重要的一個組成部分 。在拉模型中,驅(qū)動程序連接到數(shù)據(jù)庫并根據(jù)需要將數(shù)據(jù)“拉”進(jìn)來。使用這種模型,與數(shù)據(jù)庫的連接和為了獲取數(shù)據(jù)而執(zhí)行的SQL 命令都同時由Crystal 報表本身處理,不需要開發(fā)人員編寫代碼。與拉模型相反,推模型需要開發(fā)人員編寫代碼以連接到數(shù)據(jù)庫,執(zhí)行SQL 命令以創(chuàng)建與報表中的字段匹配的記錄集或數(shù)據(jù)集,并且將該對象傳遞給報表文件。該方法使您可以將連接共享置入應(yīng)用程序中,并在Crystal 報表收到數(shù)據(jù)之前先將數(shù)據(jù)篩選出來。


在組態(tài)軟件中直接引用水晶報表控件,存在著一些不足:報表是在數(shù)據(jù)庫的基礎(chǔ)上生成得,所以肯定有生成報表所要顯示得數(shù)據(jù)集,或者把報表要顯示的數(shù)據(jù)存儲到一個報表引用的臨時表。這個功能是需要和用戶進(jìn)行交互的,要通過寫代碼來實現(xiàn),而組態(tài)軟件的編程功能是相當(dāng)薄弱的,所以我們采取基于水晶報表來制作通用報表控件。
4 VB開發(fā)通用報表控件
4.1 報表控件設(shè)計的基本思路
作為的報表模塊,應(yīng)具備良好的用戶交互性,有著年月日報表、班報表、故障報表等供用戶選擇,并提供了打印、導(dǎo)出等功能。

 

為了方便滿足用戶的交互性,使用水晶報表的“拉模型”,當(dāng)用戶點擊顯示報表按鈕時,根據(jù)用戶的選擇,報表控件自動生成SQL語句,利用ADO技術(shù),從SQL server數(shù)據(jù)庫中提取出報表數(shù)據(jù),存儲到一個臨時數(shù)據(jù)庫表中,而此臨時表是預(yù)先設(shè)計好的水晶報表模板的數(shù)據(jù)存儲表,所以顯示報表時,驅(qū)動程序連接到數(shù)據(jù)庫的該臨時表并將數(shù)據(jù)“拉”進(jìn)來,生成報表。

 

4.2 報表控件屬性和方法
為了實現(xiàn)報表控件的通用性,該控件應(yīng)該具備完整的接口。

 

4.3 將此報表控件嵌入到組態(tài)軟件
在支持ActiveX控件的組態(tài)軟件或者其他軟件,如IE,WORD等,均可引用此報表控件,下面以INTOUCH9.5為例。
在INTOUCH中引AcitveX控件的主要步驟:WindowMaker---特別---配置---向?qū)?ActiveX安裝,在可用的AcitveX控件中,選擇我們做的通用報表控件-ReportCommon 1.0
INTOUCH使用此ActiveX控件范例如下:
#ReportCommon.Db_server="dataserver";
#ReportCommon.Initial_cata="intouch";
#ReportCommon.UserId="sa";
#ReportCommon.PassWord="intouch";以上為設(shè)置數(shù)據(jù)庫
#ReportCommon.RptSource="C:\RptSource\month.rpt";設(shè)置報表模板位置
#Report_common.RptPrinterName="printer1";選擇打印機
#Report_common.Autoprint_en=1;允許自動打印
#Report_common.Ymd_option=1;
#Report_common.Month_check=1;選擇月報表
#Report_common.ReportView();顯示報表
#Report_common. QuickPrint();打印報表
4.4 制作通用報表控件應(yīng)注意的問題
基于水晶報表做通用報表控件,可以大大簡化底層報表的具體設(shè)計工作,提率。在基于水晶報表設(shè)計通用報表控件時應(yīng)該注意以下事項:
①為了實現(xiàn)報表控件的通用性,要考慮周全控件的屬性和方法,這樣才能成為真正意義上的“通用報表控件”。
②為了方便編程,我們使用水晶報表的“拉”模型,所以只需在數(shù)據(jù)庫中針對每個報表模板定義一個表,只是在生成報表時使用此表。當(dāng)用戶要求生成報表時,首先清空此表,通過SQL語句按照用戶的選擇從歷史數(shù)據(jù)庫中提取數(shù)據(jù),寫入該表,然后再顯示報表。
③在使用分布式數(shù)據(jù)庫服務(wù)器,應(yīng)該注意在把數(shù)據(jù)寫入臨時表后,暫停一定時間,再顯示報表,因為SQL語句的查詢、寫入和計算機之間的數(shù)據(jù)傳送需要一定時間,所以在設(shè)計時,寫入臨時表數(shù)據(jù)后,暫停幾毫秒,再顯示報表,代碼如下:
'暫停0.05秒
Dim PauseTime, Start
PauseTime = 0.05 ' 設(shè)置暫停時間。
Start = Timer ' 設(shè)置開始暫停的時刻。
Do While Timer < Start + PauseTime
DoEvents ' 將控制讓給其他程序。
Loop
④在Windows XP操作系統(tǒng)下,使用水晶報表控件,顯示報表后,系統(tǒng)會在某個盤符的根目錄下,或者應(yīng)用程序所在的目錄下生成一些臨時文件,而報表關(guān)閉時,這些臨時文件不會自動刪除,所以我們需要在顯示完報表后,刪除這些臨時文件,代碼如下:
On Error Resume Next
Kill App.Path + "\*.tmp"
Kill "c:\*.tmp"
Kill "d:\*.tmp"
Kill "e:\*.tmp"
5結(jié)束語
基于ActiveX技術(shù)的通用報表控件,有著較好的移植性和重用性,并可方便的嵌入到組態(tài)軟件中,彌補了組態(tài)軟件的報表功能缺陷,避免了報表的重復(fù)設(shè)計和代碼的重復(fù)編寫。該報表控件成功的在某自來水廠自動化工程的INTOUCH組態(tài)軟件中使用,該組件運行可靠,解決了以往組態(tài)軟件缺少報表模塊的難題。
全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

免責(zé)聲明

  • 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.xashilian.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
  • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

<
更多 >

工控網(wǎng)機器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機械包裝機械印刷機械農(nóng)業(yè)機械食品加工設(shè)備制藥設(shè)備倉儲物流環(huán)保設(shè)備造紙機械工程機械紡織機械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機械印染機械制鞋機械玻璃機械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


我要投稿
  • 投稿請發(fā)送郵件至:(郵件標(biāo)題請備注“投稿”)1271141964.qq.com
  • 聯(lián)系電話0571-89719789
工業(yè)4.0時代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺
智能制造網(wǎng)APP

功能豐富 實時交流

智能制造網(wǎng)小程序

訂閱獲取更多服務(wù)

微信公眾號

關(guān)注我們

抖音

智能制造網(wǎng)

抖音號:gkzhan

打開抖音 搜索頁掃一掃

視頻號

智能制造網(wǎng)

公眾號:智能制造網(wǎng)

打開微信掃碼關(guān)注視頻號

快手

智能制造網(wǎng)

快手ID:gkzhan2006

打開快手 掃一掃關(guān)注
意見反饋
關(guān)閉
企業(yè)未開通此功能
詳詢客服 : 0571-87858618
主站蜘蛛池模板: 丁青县| 桐乡市| 青海省| 长沙市| 东平县| 临沂市| 清丰县| 女性| 西乡县| 潮州市| 遵化市| 四平市| 莱芜市| 泰州市| 青阳县| 察隅县| 兴海县| 连山| 嵊泗县| 铜陵市| 上杭县| 平阴县| 宜阳县| 赣州市| 财经| 昌乐县| 金门县| 闽侯县| 福清市| 西和县| 东乡族自治县| 辽宁省| 井冈山市| 玉屏| 巴青县| 稻城县| 乳山市| 玛多县| 景德镇市| 玛纳斯县| 泾阳县|