易同貿(mào)
提要:該文介紹子數(shù)據(jù)窗口對象(DataWindowChild )的概念及使用方法和技巧,以財務(wù)管理系統(tǒng)設(shè)計為例,研究動態(tài)字段查詢的實現(xiàn)方法,利用開發(fā)工具PB特有的數(shù)據(jù)窗口技術(shù),實現(xiàn)了按照所選字段的動態(tài)查詢,滿足系統(tǒng)查詢的需要。
關(guān)鍵詞:PowerBuilder;子數(shù)據(jù)窗口對象;(DataWindowChild )動態(tài)查詢
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)29-6871-05
PowerBuilder(簡稱PB)是一個功能超群、使用方便、易于開發(fā)復(fù)雜應(yīng)用系統(tǒng)的前端數(shù)據(jù)庫開發(fā)工具。PB一直深受國內(nèi)外廣大用戶喜愛,擁有廣泛的用戶群。作為跨平臺的面向?qū)ο蟮牡谒拇臄?shù)據(jù)庫開發(fā)工具,PB有著許多優(yōu)勢和其獨到之處, 其中一個很大的特點就是提出了數(shù)據(jù)窗口對象(DataWindow)的概念。數(shù)據(jù)窗口對象也PB的一種對象類型,與其它對象不同的是,數(shù)據(jù)窗口對象是專門為了訪問后臺的數(shù)據(jù)庫服務(wù)的,在數(shù)據(jù)窗口對象中可以定義數(shù)據(jù)的來源和數(shù)據(jù)的顯示風(fēng)格,這樣在開發(fā)應(yīng)用程序過程中,我們就可以把主要精力放在對數(shù)據(jù)的處理上,而不用關(guān)心具體數(shù)據(jù)的來源,因為在數(shù)據(jù)窗口對象中已經(jīng)定義好了數(shù)據(jù)的來源??梢哉f,數(shù)據(jù)窗口是PowerBuilder的核心,在對數(shù)據(jù)庫的開發(fā)過程中,無論是錄入、查詢、統(tǒng)計還是報表,都離不開數(shù)據(jù)窗口。在實際編程過程中,如何用好用活數(shù)據(jù)窗口對象是開發(fā)出的產(chǎn)品好壞的重要標(biāo)志。為了使數(shù)據(jù)窗口更靈活、更方便,我們經(jīng)常要使用到子數(shù)據(jù)窗口對象(DataWindowChild )。什么是子數(shù)據(jù)窗口對象?何時用到子數(shù)據(jù)窗口對象?如何操縱子數(shù)據(jù)窗口對象?使用過程中有什么技巧?等等這些問題是PB軟件開發(fā)者必須重視的和必然要面臨的,在此,該文將給以介紹:
1 數(shù)據(jù)窗口對象的概念
子數(shù)據(jù)窗口對象也是一種數(shù)據(jù)窗口對象,只是它嵌入在其它的數(shù)據(jù)窗口對象(父對象)中,于是形象地稱之為子數(shù)據(jù)窗口對象。
2 子數(shù)據(jù)窗口對象的類型
子數(shù)據(jù)窗口對象通常有三種形式:
1) 合成數(shù)據(jù)窗口對象(Composite)內(nèi)的子數(shù)據(jù)窗口對象
為了達(dá)到不同的設(shè)計風(fēng)格和效果,PB系統(tǒng)中預(yù)先設(shè)定數(shù)據(jù)窗口對象的數(shù)據(jù)表現(xiàn)風(fēng)格有11種,合成數(shù)據(jù)窗口對象是其中一種。它是在合成數(shù)據(jù)窗口對象內(nèi)又包含其他數(shù)據(jù)窗口對象,將多種數(shù)據(jù)報表組合在一起,達(dá)到真實報表的效果。合成數(shù)據(jù)窗口對象實際上只是一個框架或容器,事先要設(shè)置好子數(shù)據(jù)窗口,通過PB向?qū)⒆訑?shù)據(jù)窗口嵌入到框架中,保存合成數(shù)據(jù)窗口后還可以通過插入方式往框架內(nèi)添加新的子數(shù)據(jù)窗口,同時也可以刪除不要的子數(shù)據(jù)窗口。合成數(shù)據(jù)窗口對象內(nèi)包含兩個子數(shù)據(jù)窗口,這兩個子數(shù)據(jù)窗口分別顯示不同的內(nèi)容。
2) 報表形式(Report)的子數(shù)據(jù)窗口對象
這種數(shù)據(jù)窗口與上種形式上很相似,通過插入方式往框架內(nèi)添加新的子數(shù)據(jù)窗口控件(Report)。具體操作為:在一個數(shù)據(jù)窗口畫板中先點擊菜單insert→control→report,選擇已經(jīng)存在的某個數(shù)據(jù)窗口,再點擊數(shù)據(jù)窗口所在地方就可以產(chǎn)生一個報表形式(Report)的子數(shù)據(jù)窗口對象。與上種不同的是,這種數(shù)據(jù)窗口內(nèi)自身就存在數(shù)據(jù)源,可以根據(jù)要求選擇相應(yīng)的字段(列),并且還可以對它們進(jìn)行各種修改和控制,而上種數(shù)據(jù)窗口沒有這樣的特點。父數(shù)據(jù)窗口為有一個子數(shù)據(jù)窗口,其中父數(shù)據(jù)窗口和子數(shù)據(jù)窗口的數(shù)據(jù)源是不一樣,在程序中可以分別加以控制,使程序更靈活多樣。
3) 下 拉 式 數(shù) 據(jù) 窗 口 (DropDown DataWindow)
這種類型的數(shù)據(jù)窗口與前面的類型是完全不同的。在一個數(shù)據(jù)窗口對象(父對象)中將其某列掛接到另一個數(shù)據(jù)窗口(子對象),當(dāng)點擊該列時,就彈出一個下拉框,用戶可以從下拉框中選擇所需數(shù)據(jù),大大提高錄入效率,這樣的子數(shù)據(jù)窗口就稱之為下 拉 式 數(shù) 據(jù) 窗 口。如圖所示,父數(shù)據(jù)窗口對象中的列“總帳科目”掛接到另一個數(shù)據(jù)窗口(用于顯示總帳科目的編碼和名稱),程序運行時,每當(dāng)點擊“總帳科目”列,就會彈出一個下 拉 式 數(shù) 據(jù) 窗 口,顯示所有的總帳科目的編碼和名稱,用戶只須點擊即可,這樣既方便用戶又提高效率。
子數(shù)據(jù)窗口總共有三種形式,它們有相似之處,也有許多差異,那么它們分別用于什么情況呢?
數(shù)據(jù)窗口的主要目的就是對數(shù)據(jù)的處理,大致可分為三個方面:1) 數(shù)據(jù)的錄入和修改,其中包含有插入、刪除和保存等功能;2) 數(shù)據(jù)的統(tǒng)計分析,如學(xué)生成績的總分和平均分?jǐn)?shù)以及排名次,有時候用到統(tǒng)計表,有時候用到統(tǒng)計圖,而且有時候用到統(tǒng)計表和統(tǒng)計圖混用,并且還需要將所得結(jié)果打印出來,達(dá)到所見即所得;3) 數(shù)據(jù)的查詢和打印,有簡單的固定式的查詢方式,有高級的自定義的查詢方式,如全字段查詢和選字段查詢,還用到模糊查詢技術(shù)。數(shù)據(jù)的處理是非常復(fù)雜的,在數(shù)據(jù)庫管理系統(tǒng)軟件開發(fā)過程中占有重要的地位,通過單一的數(shù)據(jù)窗口是難以完成如此復(fù)雜的數(shù)據(jù)處理的,因此編程中要注視多數(shù)據(jù)窗口的協(xié)同作用,也就是在一個數(shù)據(jù)窗口中嵌入其它的數(shù)據(jù)窗口(子數(shù)據(jù)窗口)。
眾所周知,為了節(jié)省儲存空間,我們通常將一些字段設(shè)置成數(shù)值型的,而在用戶錄入或修改這些字段內(nèi)容時我們要給用戶以字符型的交互界面,怎么樣達(dá)到這種設(shè)計呢?這時,第三種子數(shù)據(jù)窗口就有了用武之地,它可以很輕松地將數(shù)值型和字符型的數(shù)據(jù)加以轉(zhuǎn)換,不僅如此,還可以保證數(shù)據(jù)的有效性和完整性。既給用戶提供了良好的交互界面,同時又大大提高用戶的工作效率。因此下拉式數(shù)據(jù)窗口在數(shù)據(jù)的錄入和修改過程中的使用的非常普通和常見的。
現(xiàn)實生活中圖表和報表種類繁多形式多樣,編制出的軟件一定要符合用戶的習(xí)慣,要設(shè)計出與實際表樣相符合的用戶界面,程序設(shè)計中要充分分析各種報表的結(jié)構(gòu),設(shè)計出相應(yīng)的數(shù)據(jù)窗口。對于復(fù)雜的報表和圖表,我們就要利用合成數(shù)據(jù)窗口對象加以實現(xiàn),或者在已設(shè)計好的數(shù)據(jù)窗口中再根據(jù)需要插入新的報表(Report)。endprint
在PB數(shù)據(jù)庫管理系統(tǒng)編程中子數(shù)據(jù)窗口技術(shù)運用非常廣泛,它們可以說是無所不能的,如何正確使用它們呢?
3 子數(shù)據(jù)窗口對象的使用
可以分成靜態(tài)的和動態(tài)的使用:前者是在設(shè)計階段將各數(shù)據(jù)窗口對象按要求設(shè)計好,并將其與一個數(shù)據(jù)窗口控件連接起來,執(zhí)行程序過程中打開相應(yīng)窗口即實現(xiàn)其功能;后者是在程序運行階段動態(tài)地生成各數(shù)據(jù)窗口對象,并將其與一個數(shù)據(jù)窗控件連接起來,同樣也可達(dá)到相應(yīng)的效果。在實際編程過程中,由于程序的復(fù)雜性不同,可以選擇不同的方式來使用。前者設(shè)計簡單方便,不需要進(jìn)行編碼,但實現(xiàn)的功能比較簡單,相反后者設(shè)計比較復(fù)雜,必需進(jìn)行一定的編碼,但是,它可以在用戶的執(zhí)行過程中動態(tài)的實現(xiàn)所需的數(shù)據(jù)窗口,具有非常強的靈活性。在此,該文要針對后者加以論述。主要有兩種方式來加以實現(xiàn):
方式一、先使用函數(shù)GetChild(()獲取子數(shù)據(jù)窗口的句柄,再利用數(shù)據(jù)窗口的有關(guān)屬性或函數(shù)來達(dá)到各種操縱數(shù)據(jù)的目的。
方式二、通過編碼改變數(shù)據(jù)窗口控件的DataObject屬性,通過編碼動態(tài)創(chuàng)建一個新的數(shù)據(jù)窗口對象,并將其與一個數(shù)據(jù)窗口控件連接起來。
根據(jù)子數(shù)據(jù)窗口的不同類型,要選擇不同的方式來實現(xiàn)。對于合成數(shù)據(jù)窗口內(nèi)的子數(shù)據(jù)窗口和下拉式數(shù)據(jù)窗口,兩種方式都可以使用,但對于報表形式的子數(shù)據(jù)窗口卻只能用方式二來加以實現(xiàn)。
4 子數(shù)據(jù)窗口對象的使用及技巧
筆者曾在編制某單位的財務(wù)管理系統(tǒng)中大量使用子數(shù)據(jù)窗口技術(shù),下面結(jié)合實例介紹子數(shù)據(jù)窗口的使用方法及一些技巧。熟悉財務(wù)管理工作的人都很清楚,會計憑證是會計工作的重要環(huán)節(jié),同樣會計憑證管理模塊也是財務(wù)管理系統(tǒng)的一個重要組成部分。會計憑證的處理包括錄入、修改、審核以及查詢等等。財務(wù)制度對會計憑證的錄入(修改)有很高的要求,其中對會計科目的要求是這樣的:會計科目采用二級管理,總賬科目和明細(xì)科目,每筆記錄中總賬科目和明細(xì)科目不能為空,并且總賬科目和明細(xì)科目要配套。例如總賬科目為現(xiàn)金101,相應(yīng)的明細(xì)科目(系統(tǒng)管理員預(yù)設(shè))有人民幣10101或美元10102,則明細(xì)科目只能從人民幣或美元選擇,不能選擇其它內(nèi)容。又例如總賬科目沒有相應(yīng)的明細(xì)科目(系統(tǒng)管理員預(yù)設(shè)),則明細(xì)科目必須和總帳科目相同,不能選擇其它內(nèi)容。會計科目(總賬科目和明細(xì)科目)的名稱和代碼的設(shè)置由系統(tǒng)管理員(或財務(wù)主管)負(fù)責(zé),會計在錄入(修改)憑證時只能從中選擇內(nèi)容,不能自己進(jìn)行修改。如何保證錄入(修改)憑證時會計科目的正確性呢?
下面先將后端數(shù)據(jù)庫的設(shè)計介紹一下。共有三個表:分別為憑證表、科目表和人員表。
1) 靜態(tài)設(shè)計下拉式數(shù)據(jù)窗口
首先對憑證表和科目表設(shè)計兩個數(shù)據(jù)窗口dw_main和dw_code,其中dw_main包括字段id,摘要、總帳科目、明細(xì)科目、借方金額和貸方金額;dw_code包括字段科目級次、科目編碼和科目名稱。打開dw_main數(shù)據(jù)窗口畫板,用鼠標(biāo)右鍵點擊字段總帳科目(或明細(xì)科目),在下拉菜單中選擇Properties...(屬性),則系統(tǒng)會彈出該列的屬性對話框,在其中選擇Edit(編輯)項,并在Style(風(fēng)格)下拉列表框中選擇DropDownDW 項, 然后在下面的Options(選項)框中作具體的選項配置:在DataWindow 下拉框中選擇已設(shè)計好的代碼數(shù)據(jù)窗口dw_code 作為下拉式數(shù)據(jù)窗口;在DisplayColumn(顯示列)下拉框中選擇科目名稱字段;在Data Column(數(shù)據(jù)列)下拉框中選擇科目編碼字段,這表示顯示的是科目名稱字段的內(nèi)容,而實際存于憑證表中的是科目編碼字段的內(nèi)容。 至此,數(shù)據(jù)窗口設(shè)計完畢。
值得強調(diào)的是,在設(shè)計數(shù)據(jù)窗口時一定要將需掛接下拉式數(shù)據(jù)窗口的字段的屬性Edit→AutoRetrieve設(shè)置為NO,即去掉前面的勾,否則上述代碼不起作用。
通過上述兩個事件可有效地控制總帳科目和明細(xì)科目的彈出內(nèi)容。當(dāng)點擊總帳科目時就彈出所有的總帳科目供用戶選擇,當(dāng)點擊明細(xì)科目時就彈出與當(dāng)前行的總帳科目相應(yīng)的明細(xì)科目供用戶選擇,不會出現(xiàn)其它內(nèi)容。如此這樣,不僅給用戶良好的錄入界面,快捷的輸入方式,而且還保證了錄入數(shù)據(jù)的準(zhǔn)確性和完整性,從而圓滿的完成了設(shè)計任務(wù)。
上面介紹了下拉式數(shù)據(jù)窗口的典型應(yīng)用之一,在整個程序設(shè)計中還用到了其它形式的子數(shù)據(jù)窗口,在此就不詳細(xì)介紹了。總而言之,子數(shù)據(jù)窗口是對一般簡單的數(shù)據(jù)窗口的補充和完善,它可以完成更復(fù)雜的設(shè)計要求,是PB程序設(shè)計人員的一個重要手段和法寶。
參考文獻(xiàn):
[1] PB技術(shù)精粹四CHM-PB書籍教程[EB/OL].[2009-12-03]. http://www.hur.cn/soft/2009/3748.html.
[2] 下拉數(shù)據(jù)窗口(DropDown DataWindow)的使用范例_點點滴滴[EB/OL].http://blog.sina.com.cn/s/blog_54497f4d0100ldmf.html.
[3] 王建華.PowerBuilder中下拉數(shù)據(jù)窗口應(yīng)用探討[J].平頂山師專學(xué)報,2003(5).
[4] 張志遠(yuǎn).PowerBuilder應(yīng)用技巧講座(三)——之?dāng)?shù)據(jù)窗口及打印程序的實現(xiàn)[J].電腦編程技巧與維護,2003(8).endprint
在PB數(shù)據(jù)庫管理系統(tǒng)編程中子數(shù)據(jù)窗口技術(shù)運用非常廣泛,它們可以說是無所不能的,如何正確使用它們呢?
3 子數(shù)據(jù)窗口對象的使用
可以分成靜態(tài)的和動態(tài)的使用:前者是在設(shè)計階段將各數(shù)據(jù)窗口對象按要求設(shè)計好,并將其與一個數(shù)據(jù)窗口控件連接起來,執(zhí)行程序過程中打開相應(yīng)窗口即實現(xiàn)其功能;后者是在程序運行階段動態(tài)地生成各數(shù)據(jù)窗口對象,并將其與一個數(shù)據(jù)窗控件連接起來,同樣也可達(dá)到相應(yīng)的效果。在實際編程過程中,由于程序的復(fù)雜性不同,可以選擇不同的方式來使用。前者設(shè)計簡單方便,不需要進(jìn)行編碼,但實現(xiàn)的功能比較簡單,相反后者設(shè)計比較復(fù)雜,必需進(jìn)行一定的編碼,但是,它可以在用戶的執(zhí)行過程中動態(tài)的實現(xiàn)所需的數(shù)據(jù)窗口,具有非常強的靈活性。在此,該文要針對后者加以論述。主要有兩種方式來加以實現(xiàn):
方式一、先使用函數(shù)GetChild(()獲取子數(shù)據(jù)窗口的句柄,再利用數(shù)據(jù)窗口的有關(guān)屬性或函數(shù)來達(dá)到各種操縱數(shù)據(jù)的目的。
方式二、通過編碼改變數(shù)據(jù)窗口控件的DataObject屬性,通過編碼動態(tài)創(chuàng)建一個新的數(shù)據(jù)窗口對象,并將其與一個數(shù)據(jù)窗口控件連接起來。
根據(jù)子數(shù)據(jù)窗口的不同類型,要選擇不同的方式來實現(xiàn)。對于合成數(shù)據(jù)窗口內(nèi)的子數(shù)據(jù)窗口和下拉式數(shù)據(jù)窗口,兩種方式都可以使用,但對于報表形式的子數(shù)據(jù)窗口卻只能用方式二來加以實現(xiàn)。
4 子數(shù)據(jù)窗口對象的使用及技巧
筆者曾在編制某單位的財務(wù)管理系統(tǒng)中大量使用子數(shù)據(jù)窗口技術(shù),下面結(jié)合實例介紹子數(shù)據(jù)窗口的使用方法及一些技巧。熟悉財務(wù)管理工作的人都很清楚,會計憑證是會計工作的重要環(huán)節(jié),同樣會計憑證管理模塊也是財務(wù)管理系統(tǒng)的一個重要組成部分。會計憑證的處理包括錄入、修改、審核以及查詢等等。財務(wù)制度對會計憑證的錄入(修改)有很高的要求,其中對會計科目的要求是這樣的:會計科目采用二級管理,總賬科目和明細(xì)科目,每筆記錄中總賬科目和明細(xì)科目不能為空,并且總賬科目和明細(xì)科目要配套。例如總賬科目為現(xiàn)金101,相應(yīng)的明細(xì)科目(系統(tǒng)管理員預(yù)設(shè))有人民幣10101或美元10102,則明細(xì)科目只能從人民幣或美元選擇,不能選擇其它內(nèi)容。又例如總賬科目沒有相應(yīng)的明細(xì)科目(系統(tǒng)管理員預(yù)設(shè)),則明細(xì)科目必須和總帳科目相同,不能選擇其它內(nèi)容。會計科目(總賬科目和明細(xì)科目)的名稱和代碼的設(shè)置由系統(tǒng)管理員(或財務(wù)主管)負(fù)責(zé),會計在錄入(修改)憑證時只能從中選擇內(nèi)容,不能自己進(jìn)行修改。如何保證錄入(修改)憑證時會計科目的正確性呢?
下面先將后端數(shù)據(jù)庫的設(shè)計介紹一下。共有三個表:分別為憑證表、科目表和人員表。
1) 靜態(tài)設(shè)計下拉式數(shù)據(jù)窗口
首先對憑證表和科目表設(shè)計兩個數(shù)據(jù)窗口dw_main和dw_code,其中dw_main包括字段id,摘要、總帳科目、明細(xì)科目、借方金額和貸方金額;dw_code包括字段科目級次、科目編碼和科目名稱。打開dw_main數(shù)據(jù)窗口畫板,用鼠標(biāo)右鍵點擊字段總帳科目(或明細(xì)科目),在下拉菜單中選擇Properties...(屬性),則系統(tǒng)會彈出該列的屬性對話框,在其中選擇Edit(編輯)項,并在Style(風(fēng)格)下拉列表框中選擇DropDownDW 項, 然后在下面的Options(選項)框中作具體的選項配置:在DataWindow 下拉框中選擇已設(shè)計好的代碼數(shù)據(jù)窗口dw_code 作為下拉式數(shù)據(jù)窗口;在DisplayColumn(顯示列)下拉框中選擇科目名稱字段;在Data Column(數(shù)據(jù)列)下拉框中選擇科目編碼字段,這表示顯示的是科目名稱字段的內(nèi)容,而實際存于憑證表中的是科目編碼字段的內(nèi)容。 至此,數(shù)據(jù)窗口設(shè)計完畢。
值得強調(diào)的是,在設(shè)計數(shù)據(jù)窗口時一定要將需掛接下拉式數(shù)據(jù)窗口的字段的屬性Edit→AutoRetrieve設(shè)置為NO,即去掉前面的勾,否則上述代碼不起作用。
通過上述兩個事件可有效地控制總帳科目和明細(xì)科目的彈出內(nèi)容。當(dāng)點擊總帳科目時就彈出所有的總帳科目供用戶選擇,當(dāng)點擊明細(xì)科目時就彈出與當(dāng)前行的總帳科目相應(yīng)的明細(xì)科目供用戶選擇,不會出現(xiàn)其它內(nèi)容。如此這樣,不僅給用戶良好的錄入界面,快捷的輸入方式,而且還保證了錄入數(shù)據(jù)的準(zhǔn)確性和完整性,從而圓滿的完成了設(shè)計任務(wù)。
上面介紹了下拉式數(shù)據(jù)窗口的典型應(yīng)用之一,在整個程序設(shè)計中還用到了其它形式的子數(shù)據(jù)窗口,在此就不詳細(xì)介紹了??偠灾?,子數(shù)據(jù)窗口是對一般簡單的數(shù)據(jù)窗口的補充和完善,它可以完成更復(fù)雜的設(shè)計要求,是PB程序設(shè)計人員的一個重要手段和法寶。
參考文獻(xiàn):
[1] PB技術(shù)精粹四CHM-PB書籍教程[EB/OL].[2009-12-03]. http://www.hur.cn/soft/2009/3748.html.
[2] 下拉數(shù)據(jù)窗口(DropDown DataWindow)的使用范例_點點滴滴[EB/OL].http://blog.sina.com.cn/s/blog_54497f4d0100ldmf.html.
[3] 王建華.PowerBuilder中下拉數(shù)據(jù)窗口應(yīng)用探討[J].平頂山師專學(xué)報,2003(5).
[4] 張志遠(yuǎn).PowerBuilder應(yīng)用技巧講座(三)——之?dāng)?shù)據(jù)窗口及打印程序的實現(xiàn)[J].電腦編程技巧與維護,2003(8).endprint
在PB數(shù)據(jù)庫管理系統(tǒng)編程中子數(shù)據(jù)窗口技術(shù)運用非常廣泛,它們可以說是無所不能的,如何正確使用它們呢?
3 子數(shù)據(jù)窗口對象的使用
可以分成靜態(tài)的和動態(tài)的使用:前者是在設(shè)計階段將各數(shù)據(jù)窗口對象按要求設(shè)計好,并將其與一個數(shù)據(jù)窗口控件連接起來,執(zhí)行程序過程中打開相應(yīng)窗口即實現(xiàn)其功能;后者是在程序運行階段動態(tài)地生成各數(shù)據(jù)窗口對象,并將其與一個數(shù)據(jù)窗控件連接起來,同樣也可達(dá)到相應(yīng)的效果。在實際編程過程中,由于程序的復(fù)雜性不同,可以選擇不同的方式來使用。前者設(shè)計簡單方便,不需要進(jìn)行編碼,但實現(xiàn)的功能比較簡單,相反后者設(shè)計比較復(fù)雜,必需進(jìn)行一定的編碼,但是,它可以在用戶的執(zhí)行過程中動態(tài)的實現(xiàn)所需的數(shù)據(jù)窗口,具有非常強的靈活性。在此,該文要針對后者加以論述。主要有兩種方式來加以實現(xiàn):
方式一、先使用函數(shù)GetChild(()獲取子數(shù)據(jù)窗口的句柄,再利用數(shù)據(jù)窗口的有關(guān)屬性或函數(shù)來達(dá)到各種操縱數(shù)據(jù)的目的。
方式二、通過編碼改變數(shù)據(jù)窗口控件的DataObject屬性,通過編碼動態(tài)創(chuàng)建一個新的數(shù)據(jù)窗口對象,并將其與一個數(shù)據(jù)窗口控件連接起來。
根據(jù)子數(shù)據(jù)窗口的不同類型,要選擇不同的方式來實現(xiàn)。對于合成數(shù)據(jù)窗口內(nèi)的子數(shù)據(jù)窗口和下拉式數(shù)據(jù)窗口,兩種方式都可以使用,但對于報表形式的子數(shù)據(jù)窗口卻只能用方式二來加以實現(xiàn)。
4 子數(shù)據(jù)窗口對象的使用及技巧
筆者曾在編制某單位的財務(wù)管理系統(tǒng)中大量使用子數(shù)據(jù)窗口技術(shù),下面結(jié)合實例介紹子數(shù)據(jù)窗口的使用方法及一些技巧。熟悉財務(wù)管理工作的人都很清楚,會計憑證是會計工作的重要環(huán)節(jié),同樣會計憑證管理模塊也是財務(wù)管理系統(tǒng)的一個重要組成部分。會計憑證的處理包括錄入、修改、審核以及查詢等等。財務(wù)制度對會計憑證的錄入(修改)有很高的要求,其中對會計科目的要求是這樣的:會計科目采用二級管理,總賬科目和明細(xì)科目,每筆記錄中總賬科目和明細(xì)科目不能為空,并且總賬科目和明細(xì)科目要配套。例如總賬科目為現(xiàn)金101,相應(yīng)的明細(xì)科目(系統(tǒng)管理員預(yù)設(shè))有人民幣10101或美元10102,則明細(xì)科目只能從人民幣或美元選擇,不能選擇其它內(nèi)容。又例如總賬科目沒有相應(yīng)的明細(xì)科目(系統(tǒng)管理員預(yù)設(shè)),則明細(xì)科目必須和總帳科目相同,不能選擇其它內(nèi)容。會計科目(總賬科目和明細(xì)科目)的名稱和代碼的設(shè)置由系統(tǒng)管理員(或財務(wù)主管)負(fù)責(zé),會計在錄入(修改)憑證時只能從中選擇內(nèi)容,不能自己進(jìn)行修改。如何保證錄入(修改)憑證時會計科目的正確性呢?
下面先將后端數(shù)據(jù)庫的設(shè)計介紹一下。共有三個表:分別為憑證表、科目表和人員表。
1) 靜態(tài)設(shè)計下拉式數(shù)據(jù)窗口
首先對憑證表和科目表設(shè)計兩個數(shù)據(jù)窗口dw_main和dw_code,其中dw_main包括字段id,摘要、總帳科目、明細(xì)科目、借方金額和貸方金額;dw_code包括字段科目級次、科目編碼和科目名稱。打開dw_main數(shù)據(jù)窗口畫板,用鼠標(biāo)右鍵點擊字段總帳科目(或明細(xì)科目),在下拉菜單中選擇Properties...(屬性),則系統(tǒng)會彈出該列的屬性對話框,在其中選擇Edit(編輯)項,并在Style(風(fēng)格)下拉列表框中選擇DropDownDW 項, 然后在下面的Options(選項)框中作具體的選項配置:在DataWindow 下拉框中選擇已設(shè)計好的代碼數(shù)據(jù)窗口dw_code 作為下拉式數(shù)據(jù)窗口;在DisplayColumn(顯示列)下拉框中選擇科目名稱字段;在Data Column(數(shù)據(jù)列)下拉框中選擇科目編碼字段,這表示顯示的是科目名稱字段的內(nèi)容,而實際存于憑證表中的是科目編碼字段的內(nèi)容。 至此,數(shù)據(jù)窗口設(shè)計完畢。
值得強調(diào)的是,在設(shè)計數(shù)據(jù)窗口時一定要將需掛接下拉式數(shù)據(jù)窗口的字段的屬性Edit→AutoRetrieve設(shè)置為NO,即去掉前面的勾,否則上述代碼不起作用。
通過上述兩個事件可有效地控制總帳科目和明細(xì)科目的彈出內(nèi)容。當(dāng)點擊總帳科目時就彈出所有的總帳科目供用戶選擇,當(dāng)點擊明細(xì)科目時就彈出與當(dāng)前行的總帳科目相應(yīng)的明細(xì)科目供用戶選擇,不會出現(xiàn)其它內(nèi)容。如此這樣,不僅給用戶良好的錄入界面,快捷的輸入方式,而且還保證了錄入數(shù)據(jù)的準(zhǔn)確性和完整性,從而圓滿的完成了設(shè)計任務(wù)。
上面介紹了下拉式數(shù)據(jù)窗口的典型應(yīng)用之一,在整個程序設(shè)計中還用到了其它形式的子數(shù)據(jù)窗口,在此就不詳細(xì)介紹了??偠灾?,子數(shù)據(jù)窗口是對一般簡單的數(shù)據(jù)窗口的補充和完善,它可以完成更復(fù)雜的設(shè)計要求,是PB程序設(shè)計人員的一個重要手段和法寶。
參考文獻(xiàn):
[1] PB技術(shù)精粹四CHM-PB書籍教程[EB/OL].[2009-12-03]. http://www.hur.cn/soft/2009/3748.html.
[2] 下拉數(shù)據(jù)窗口(DropDown DataWindow)的使用范例_點點滴滴[EB/OL].http://blog.sina.com.cn/s/blog_54497f4d0100ldmf.html.
[3] 王建華.PowerBuilder中下拉數(shù)據(jù)窗口應(yīng)用探討[J].平頂山師專學(xué)報,2003(5).
[4] 張志遠(yuǎn).PowerBuilder應(yīng)用技巧講座(三)——之?dāng)?shù)據(jù)窗口及打印程序的實現(xiàn)[J].電腦編程技巧與維護,2003(8).endprint