亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于PowerBuilder客戶端程序開發(fā)的報(bào)表應(yīng)用框架設(shè)計(jì)與應(yīng)用

        2010-07-07 08:47:58
        制造業(yè)自動(dòng)化 2010年9期
        關(guān)鍵詞:數(shù)據(jù)庫

        董 琴

        (鹽城工學(xué)院 實(shí)驗(yàn)教學(xué)部, 鹽城 224051)

        1 PowerBuilder介紹

        PowerBuilder提供了對(duì)目前流行的大多數(shù)關(guān)系數(shù)據(jù)庫管理系統(tǒng)的支持,由于在PowerBuilder的應(yīng)用程序中對(duì)數(shù)據(jù)庫訪問的部分一般采用國際化標(biāo)準(zhǔn)數(shù)據(jù)庫查詢語言SQL,使得用PowerBuilder開發(fā)的應(yīng)用程序可以不做修改或者只做少量的修改就可以在不同的后臺(tái)數(shù)據(jù)庫管理系統(tǒng)上使用。也就是說用PowerBuilder開發(fā)的應(yīng)用程序是獨(dú)立于服務(wù)器上的數(shù)據(jù)庫管理系統(tǒng)的。PowerBuilder是一種面向?qū)ο蟮拈_發(fā)工具,各種WINDOWS應(yīng)用程序中常見的窗口、菜單、控件等在PowerBuilder中都是一個(gè)個(gè)的對(duì)象。在PowerBuilder中我們還可以創(chuàng)建自己的用戶對(duì)象。特別要指出的是PowerBuilder提供了對(duì)面向?qū)ο蠓椒ㄖ械母鞣N技術(shù)的全面支持,我們可以利用面向?qū)ο蠓椒ㄖ械膶?duì)象的封裝性、繼承性、多態(tài)性等特點(diǎn)使得我們開發(fā)的應(yīng)用程序具有極大的可重用性和可擴(kuò)展性,而這一點(diǎn)正是軟件工程中對(duì)應(yīng)用程序所提出的重要目標(biāo)。

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

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

        PowerBuilder開發(fā)的應(yīng)用服務(wù)器上的組件其實(shí)就是一個(gè)自定義的類。它基于面向?qū)ο蟮乃枷?,將?fù)雜的業(yè)務(wù)邏輯處理和數(shù)據(jù)訪問代碼封裝在其中,以實(shí)現(xiàn)邏輯獨(dú)立性和組件級(jí)的代碼共享,

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

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

        3 報(bào)表框架的設(shè)計(jì)與實(shí)現(xiàn)

        3.1 系統(tǒng)的總體結(jié)構(gòu)

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

        圖1 系統(tǒng)的總體結(jié)構(gòu)

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

        3.2 報(bào)表引擎的設(shè)計(jì)

        報(bào)表引擎運(yùn)行在應(yīng)用服務(wù)器EAServer上,為客戶端提供所有報(bào)表系統(tǒng)的功能服務(wù)。EAServer支持多種組件類型,如COM、CORBA、JavaBean/EJB和PowerBuilder NVO。PowerBuilder NVO組件具有跨平臺(tái)特性,可以高效穩(wěn)定地運(yùn)行,因此報(bào)表引擎采用PowerBuilderNVO組件來實(shí)現(xiàn)。PowerBuilder是面向?qū)ο蟮目梢暬幊陶Z言,支持類的繼承、封裝、重載和多態(tài)性。在報(bào)表引擎的實(shí)現(xiàn)中首先把數(shù)據(jù)庫連接、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)訪問做成基本類庫,供其他功能類繼承。組件類圖如圖2所示。

        圖2 組件基本類庫

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

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

        客戶端程序的編寫可分為三個(gè)步驟:建立連接對(duì)象、建立組件代理對(duì)象和編寫客戶端應(yīng)用。連接對(duì)象(Connection Object)負(fù)責(zé)客戶端應(yīng)用與組件服務(wù)器之間的通信,代理對(duì)象(Proxy Object)是應(yīng)用服務(wù)器中處理業(yè)務(wù)邏輯的組件在客戶端的代理,客戶端應(yīng)用正是通過代理對(duì)象來使用遠(yuǎn)程應(yīng)用服務(wù)器的組件所提供的服務(wù)??梢岳肞owerBuilder所提供的連接對(duì)象向?qū)Ш徒M件代理向?qū)Ь涂梢院苋菀椎亟⑦B接對(duì)象和代理對(duì)象。

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

        圖3 窗口對(duì)象的基本類圖

        w_rep為父類,具有一般報(bào)表窗口的基本功能,is_parmwindow屬性存儲(chǔ)框架窗口對(duì)應(yīng)的參數(shù)選擇窗口對(duì)象,istru_parm,istru_pram_old屬性是一個(gè)結(jié)構(gòu)對(duì)象,存儲(chǔ)報(bào)表對(duì)象名以及若干個(gè)選擇參數(shù)的值,每次打開報(bào)表參數(shù)選擇窗口后,只要比較該二個(gè)屬性的值就可以判斷用戶是否改變了報(bào)表參數(shù),從而決定是否要重新從數(shù)據(jù)庫檢索數(shù)據(jù)。

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

        io_rep = CREATE no_rep_sale

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

        io_rep.of_get_ddlb_reps(istru_parm.parm4,istru_parm.parm5,this.classname()) //取對(duì)應(yīng)框架窗口可以受理的報(bào)表對(duì)象名及報(bào)表標(biāo)題,結(jié)果保存在參數(shù)中,以便在參數(shù)選擇窗口中顯示供選報(bào)表。

        PostEvent("ue_select") //根據(jù)istru_parm值打開參數(shù)選擇窗口,以便用戶選擇報(bào)表參數(shù),確認(rèn)后調(diào)用wf_retrieve()函數(shù)。

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

        long ll_ret

        blob lbl_data

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

        ll_ret = dw_1.SetFullState(lbl_data)//把Blob變量里的內(nèi)容重新填入報(bào)表框架的窗口數(shù)據(jù)

        //窗口中,顯示報(bào)表內(nèi)容和樣式。

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

        INSERT INTO sys_ddlb_rep VALUES (

        'd_rep_custdaysale',

        //新的datawindow對(duì)象名

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

        //報(bào)表的標(biāo)題名稱

        'w_rep_sale',

        //報(bào)表框架窗口對(duì)象名

        'w_rep_sale_parm_select');

        //報(bào)表框架窗口對(duì)應(yīng)參數(shù)選擇窗口對(duì)象名

        圖4 運(yùn)行時(shí)銷售報(bào)表框架窗口界面

        4 結(jié)束語

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

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

        [2] 華銓平.PowerBuilder程序設(shè)計(jì)[M].北京:清華大學(xué)出版社、北方交通大學(xué)出版社,2004.

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

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

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

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

        猜你喜歡
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        亚洲国产日韩精品一区二区三区 | 日韩极品免费在线观看| 亚洲一品道一区二区三区| 亚洲精品无码永久在线观看| 性一交一乱一伦a片| 亚洲国产精品悠悠久久琪琪| 精品国产一区二区av麻豆不卡| 日本精品一区二区三区福利视频| 双腿张开被9个男人调教| 国产美熟女乱又伦av果冻传媒| 亚洲区一区二区三区四| 日本一级特黄aa大片| 久久精品噜噜噜成人| 欧美成人中文字幕| 蜜桃av福利精品小视频| 精品天堂色吊丝一区二区| 男男受被攻做哭娇喘声视频| 日本久久久免费高清| 亚洲最大不卡av网站| 无码国产精品一区二区av| 亚洲色大成网站www永久一区| 国产欧美激情一区二区三区| av中文字幕一区人妻| 国产乡下三级全黄三级| 日韩视频第二页| 国产一区二区三区免费小视频| 亚洲高清在线天堂精品| 好屌草这里只有精品| 加勒比在线一区二区三区| 国产av天堂一区二区二区| 亚洲av无码av在线播放| 日韩A∨精品久久久久| av成人资源在线播放| 人人人妻人人人妻人人人| 福利视频一二三在线观看| 国产呦系列呦交| 精品人妻av一区二区三区麻豆| 亚洲码国产精品高潮在线| 国产成+人+综合+亚洲专| 青青久久精品一本一区人人| 亚洲国产精品无码专区在线观看 |