999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PowerBuilder客戶端程序開發(fā)的報表應用框架設計與應用

2010-07-07 08:47:58
制造業(yè)自動化 2010年9期
關鍵詞:數據庫

董 琴

(鹽城工學院 實驗教學部, 鹽城 224051)

1 PowerBuilder介紹

PowerBuilder提供了對目前流行的大多數關系數據庫管理系統(tǒng)的支持,由于在PowerBuilder的應用程序中對數據庫訪問的部分一般采用國際化標準數據庫查詢語言SQL,使得用PowerBuilder開發(fā)的應用程序可以不做修改或者只做少量的修改就可以在不同的后臺數據庫管理系統(tǒng)上使用。也就是說用PowerBuilder開發(fā)的應用程序是獨立于服務器上的數據庫管理系統(tǒng)的。PowerBuilder是一種面向對象的開發(fā)工具,各種WINDOWS應用程序中常見的窗口、菜單、控件等在PowerBuilder中都是一個個的對象。在PowerBuilder中我們還可以創(chuàng)建自己的用戶對象。特別要指出的是PowerBuilder提供了對面向對象方法中的各種技術的全面支持,我們可以利用面向對象方法中的對象的封裝性、繼承性、多態(tài)性等特點使得我們開發(fā)的應用程序具有極大的可重用性和可擴展性,而這一點正是軟件工程中對應用程序所提出的重要目標。

2 客戶端程序的開發(fā)

對客戶端軟件開發(fā)我們用PowerBuilder編程語言實現(xiàn)。PowerBuilder是一種目前流行的數據庫前端開發(fā)工具,相對于其他的客戶機/服務器開發(fā)工具而言,PowerBuilder提供的開發(fā)環(huán)境更加方便快捷,而且功能也更為強大,特別適合做信息系統(tǒng)的開發(fā),它為開發(fā)人員提供豐富的對象、控件、函數以及良好的用戶界面,支持目前流行的數據庫,支持Web應用的開發(fā),支持應用的跨平臺開發(fā)和分布,極大地減輕了程序員在不同平臺上移植程序的工作量。PowerBuilder提出了數據窗口(DataWindow)對象的概念。數據窗口對象是PowerBuilder中的一種對象類型,是專門為訪問后臺的數據庫服務的,在數據窗口對象中我們定義了數據的來源和數據的顯示風格。PowerBuilder在數據窗口對象中提供了豐富的數據顯示方式,可以滿足各種不同的需要。我們應用中的很多報表就是通過數據窗口對象來實現(xiàn)的,如果要更改報表的數據內容和顯示格式,也只要對相應的數據窗口對象進行修改就可以了。

PowerBuilder開發(fā)的應用服務器上的組件其實就是一個自定義的類。它基于面向對象的思想,將復雜的業(yè)務邏輯處理和數據訪問代碼封裝在其中,以實現(xiàn)邏輯獨立性和組件級的代碼共享,

便于維護。我們將組件方法調用中引用到的數據窗口對象(也就是報表對象)跟該組件對象的自定義對象存儲在同一個庫文件中,可以利用PowerBuilder開發(fā)工具中的很多向導一起發(fā)行并部署到EAServer上。EAServer作為Sybase公司提供的企業(yè)級應用服務器,支持用PB、Java、C等多種語言編寫的組件。EAServer為服務器端的組件提供了緩沖機制、安全性和事務處理等多方面的支持,可以使用EAServer提供的事務管理機制來取代傳統(tǒng)的使用Commit和Rollback的事務管理方法。

服務組件對后臺數據庫的訪問是通過通用數據庫接口(如ODBC)或者DBMS生產商提供的專用數據庫接口進行的。為了提高資源利用率,減少服務器的開銷,EAServer提供了數據庫連接緩沖機制。由于分布式應用中客戶端不直接訪問數據庫,而通過組件來訪問數據庫,PB開發(fā)的組件是通過使用PB傳統(tǒng)的非可視化數據訪問對象Datastore來訪問后臺數據庫,訪問方法與兩層C/S應用中的數據訪問方法相同。當數據存儲對象通過Retrieve函數把報表數據提取到數據存儲對象后,通過數據存儲對象的GetFullState函數再把它提取到一個Blob型的變量里。客戶端軟件通過遠程對象的方法調用再把Blob型的數據提取到客戶端,用SetFullState函數把Blob變量里的內容重新填入目標數據窗口中,以便再現(xiàn)從數據庫提取的報表內容和格式。

3 報表框架的設計與實現(xiàn)

3.1 系統(tǒng)的總體結構

如圖1所示,系統(tǒng)采用基于EAServer應用服務器的多層分布式結構。EAServer提供了對各類組件的管理和通信環(huán)境,報表引擎是封裝數據存儲和數據連接的一組組件,由客戶端的報表系統(tǒng)接口調用。其中數據連接對象用于與各種數據庫建立連接,支持PowerBuilder的內部接口和ODBC兩種接口,組件對象向客戶端提供了獲取報表數據的各種方法。

圖1 系統(tǒng)的總體結構

在客戶端應用中,連接對象負責與EAServer的通信聯(lián)系;代理對象封裝了EAServer組件的客戶端接口,使客戶端應用象訪問本地對象實例一樣訪問EAServer組件。報表接口就是封裝了連接對象和代理對象的客戶端應用接口,可以訪問報表引擎的所有功能。

3.2 報表引擎的設計

報表引擎運行在應用服務器EAServer上,為客戶端提供所有報表系統(tǒng)的功能服務。EAServer支持多種組件類型,如COM、CORBA、JavaBean/EJB和PowerBuilder NVO。PowerBuilder NVO組件具有跨平臺特性,可以高效穩(wěn)定地運行,因此報表引擎采用PowerBuilderNVO組件來實現(xiàn)。PowerBuilder是面向對象的可視化編程語言,支持類的繼承、封裝、重載和多態(tài)性。在報表引擎的實現(xiàn)中首先把數據庫連接、數據存儲和數據訪問做成基本類庫,供其他功能類繼承。組件類圖如圖2所示。

圖2 組件基本類庫

n_easdb為其他類的父類,主要方法有對事務服務對象、數據庫事務對象、錯誤日志對象的建立和對日志信息的記錄等,其中s_userinfo是一個包含客戶端用戶信息的參數類型,便于對客戶端的操作進行記錄,n_easdb類是跟數據操作相關類的基礎類。類n_rep用于從數據庫提取報表結構數據,其中of_getdw_withparm函數一般被子類調用,用于根據用戶參數生成對應報表的blob數據(帶有數據內容和格式);of_get_ddlb_reps函數用于提取客戶端框架窗口可以操作的報表對象名,以便客戶端用戶選擇對應報表;of_get_parm_window函數用于提取客戶端框架窗口對應的報表參數選擇窗口。類n_rep_sale用于根據客戶端框架窗口的選定參數提取對應報表的數據(通過調用of_getdw_withparm函數),生成組件后可以被客戶端通過代理對象進行遠程調用。根據不同的業(yè)務報表需要可以從n_rep繼承建立如發(fā)貨、庫存等相應類后生成組件對象。

3.3 客戶端報表框架的實現(xiàn)

客戶端程序的編寫可分為三個步驟:建立連接對象、建立組件代理對象和編寫客戶端應用。連接對象(Connection Object)負責客戶端應用與組件服務器之間的通信,代理對象(Proxy Object)是應用服務器中處理業(yè)務邏輯的組件在客戶端的代理,客戶端應用正是通過代理對象來使用遠程應用服務器的組件所提供的服務。可以利用PowerBuilder所提供的連接對象向導和組件代理向導就可以很容易地建立連接對象和代理對象。

筆者以實現(xiàn)銷售查詢和統(tǒng)計報表框架的實現(xiàn)為例說明客戶端報表框架的設計與實現(xiàn),其窗口對象的基本類圖如圖3所示。

圖3 窗口對象的基本類圖

w_rep為父類,具有一般報表窗口的基本功能,is_parmwindow屬性存儲框架窗口對應的參數選擇窗口對象,istru_parm,istru_pram_old屬性是一個結構對象,存儲報表對象名以及若干個選擇參數的值,每次打開報表參數選擇窗口后,只要比較該二個屬性的值就可以判斷用戶是否改變了報表參數,從而決定是否要重新從數據庫檢索數據。

類w_rep_sale中的屬性io_rep_sale是服務于該框架窗口的組件代理對象,通過代理對象,客戶端程序可以方便地調用組件的方法,根據報表參數檢索報表數據。根據不同的業(yè)務報表需要可以從w_rep繼承建立如發(fā)貨、庫存等相應類的報表框架窗口類,在實例對象時只要重載wf_retrieve函數和ue_open事件就可以了,例如w_rep_sale類實例對象的ue_open事件的主要代碼如下:

io_rep = CREATE no_rep_sale

io_rep.of_get_parm_window(gstru_user,this.classname(),is_parmwindow)//取對應參數選擇窗口名,gstru_user為一全局變量。

io_rep.of_get_ddlb_reps(istru_parm.parm4,istru_parm.parm5,this.classname()) //取對應框架窗口可以受理的報表對象名及報表標題,結果保存在參數中,以便在參數選擇窗口中顯示供選報表。

PostEvent("ue_select") //根據istru_parm值打開參數選擇窗口,以便用戶選擇報表參數,確認后調用wf_retrieve()函數。

wf_retrieve()函數的主要代碼如下:

long ll_ret

blob lbl_data

ll_ret= io_rep.of_rep_sale(gstru_user,istru_parm,lbl_data)//通過代理對象調用組件方法

ll_ret = dw_1.SetFullState(lbl_data)//把Blob變量里的內容重新填入報表框架的窗口數據

//窗口中,顯示報表內容和樣式。

用戶查詢和統(tǒng)計銷售數據時對應報表框架窗口及參數選擇窗口界面如圖4所示。客戶銷售統(tǒng)計表框架窗口具有報表的打印、另存、放大、縮小、標尺預覽等常規(guī)操作功能,檢索功能可以打開框架窗口對應的報表參數選擇窗口,以便用戶可以方便地選擇要檢索數據的相應條件,也可以選擇報表框架窗口可以處理的其他報表對象。用戶對報表的內容和格式要求有變化的時候,只要修改對應的組件庫中的Datawindow對象就可以,如果用戶要增加一個關于客戶銷售類的報表,也只要在對應的組件庫文件中增加新的DataWindow對象,并在數據庫的表sys_ddlb_rep中增加一條跟該報表框架窗口關聯(lián)的記錄,INSERT語句如下:

INSERT INTO sys_ddlb_rep VALUES (

'd_rep_custdaysale',

//新的datawindow對象名

'客戶日銷售統(tǒng)計表',

//報表的標題名稱

'w_rep_sale',

//報表框架窗口對象名

'w_rep_sale_parm_select');

//報表框架窗口對應參數選擇窗口對象名

圖4 運行時銷售報表框架窗口界面

4 結束語

開發(fā)基于網絡的、具有較高的邏輯獨立性、可擴展性和可復用性的分布式報表應用是企業(yè)信息系統(tǒng)的發(fā)展趨勢。本文介紹了一種基于EAServer應用框架的分布式報表系統(tǒng)的開發(fā)技術,相信會給廣大軟件開發(fā)人員提供一個新的報表應用的開發(fā)思路。筆者運用該技術為家紡企業(yè)的銷售與分銷管理開發(fā)了一個報表應用軟件,投入使用一年多來,性能穩(wěn)定、運行良好,且易維護,充分體現(xiàn)了分布式應用的各種優(yōu)勢。

[1] William Green John D.Olson,李洪發(fā),王海峰,等譯.Power-Builder Internet及分布式應用開發(fā)[M].北京:機械工業(yè)出版社,2004.

[2] 華銓平.PowerBuilder程序設計[M].北京:清華大學出版社、北方交通大學出版社,2004.

[3] 白尚旺.PowerDesigner軟件工程技術[M].北京:電子工業(yè)出版社,2004.

[4] 楊曦.基于組件技術的信息系統(tǒng)設計與實現(xiàn)[J].福州大學學報(自然科學版),2006(11).

[5] 劉華成.基于PowerBuilder 10.5數據報表系統(tǒng)的設計與實現(xiàn)[J].電腦知識與技術 2009.(21).

[6] 海濤.課程管理系統(tǒng)PowerBuilder實現(xiàn)[J].計算機技術與發(fā)展,2009,(02).

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产欧美综合在线观看第七页| 国产美女无遮挡免费视频网站| 一本视频精品中文字幕| 99精品伊人久久久大香线蕉 | 亚洲婷婷丁香| 国产欧美精品专区一区二区| 中文字幕在线观看日本| 国产剧情国内精品原创| 午夜性爽视频男人的天堂| 亚洲精品桃花岛av在线| 少妇极品熟妇人妻专区视频| 91久草视频| 国产一级毛片高清完整视频版| 日本成人福利视频| 成人午夜天| 亚洲国产日韩在线观看| 在线va视频| 在线观看国产精品第一区免费| 日韩在线网址| 67194亚洲无码| 中文国产成人久久精品小说| 国产另类视频| 亚洲首页国产精品丝袜| 成人精品亚洲| 99这里只有精品免费视频| 日韩免费毛片| 日韩成人午夜| 在线毛片免费| 日韩欧美中文字幕在线精品| 99这里只有精品免费视频| 亚洲AⅤ综合在线欧美一区| 国产人人乐人人爱| 色视频国产| 亚洲日韩Av中文字幕无码| 99久久精品美女高潮喷水| 欧美日韩精品在线播放| 国产成人精品男人的天堂下载| 色视频国产| 国产无码网站在线观看| 婷婷六月在线| 欧美一区二区三区香蕉视| 99re热精品视频国产免费| 亚洲色图综合在线| 国产熟睡乱子伦视频网站| 亚洲高清免费在线观看| 国产日韩欧美黄色片免费观看| 全午夜免费一级毛片| 久草国产在线观看| 亚洲国产日韩视频观看| 久久久久国色AV免费观看性色| 国产无人区一区二区三区| 在线国产毛片| 亚洲另类色| 国产一级二级在线观看| 久久综合亚洲鲁鲁九月天| 成人国内精品久久久久影院| а∨天堂一区中文字幕| 草逼视频国产| 国产呦精品一区二区三区下载| 操操操综合网| 亚洲第一黄片大全| 免费a级毛片视频| 午夜毛片免费观看视频 | 亚洲视频免费在线看| 国产精女同一区二区三区久| 免费jjzz在在线播放国产| 国产丝袜无码精品| 国产麻豆另类AV| 美女潮喷出白浆在线观看视频| 亚洲一级毛片免费观看| 亚洲第一视频网站| 久久婷婷人人澡人人爱91| 亚洲天堂日韩在线| 亚洲乱码视频| 91久久青青草原精品国产| 国产一级α片| 中文无码精品A∨在线观看不卡| 一级看片免费视频| 国产一区二区三区在线观看免费| 五月天婷婷网亚洲综合在线| 五月天综合网亚洲综合天堂网| 无码福利视频|