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

基于Powerbuilder的通用排序模塊設(shè)計與實現(xiàn)

2013-04-29 07:11:03蔣玉芳
考試周刊 2013年79期
關(guān)鍵詞:排序設(shè)置功能

蔣玉芳

摘 要: 利用PowerBuilder的數(shù)據(jù)窗口,設(shè)計一個數(shù)據(jù)管理信息系統(tǒng)通用的排序模塊,發(fā)揮對數(shù)據(jù)窗口任意字段組合的排序功能。利用此排序模塊,可極大地提高管理信息系統(tǒng)的編程效率,具有很強的實用性。

關(guān)鍵詞: Powerbuilder 數(shù)據(jù)窗口 字段 排序 通用模塊設(shè)計

引言

在利用Powerbuilder開發(fā)的數(shù)據(jù)庫信息管理系統(tǒng)中,用戶常常有按某種順序查看數(shù)據(jù)的要求,而這種要求是會動態(tài)改變的,這就要求開發(fā)者不能將查詢出來的數(shù)據(jù)以固定的順序展示給用戶 ,而必須提供按用戶要求對數(shù)據(jù)進行靈活多變的排序功能。因此,為了節(jié)約開發(fā)時間,提高開發(fā)效率,設(shè)計一種通用的排序程序模塊顯得非常有必要。

把要排序的數(shù)據(jù)窗口作為參數(shù)傳遞給此通用排序模塊,然后獲取列名,通過訪問數(shù)據(jù)窗口的屬性,組合成排序字符串,即可實現(xiàn)排序功能。

一、創(chuàng)建一個Tabular類型的數(shù)據(jù)窗口對象,選擇Exteral數(shù)據(jù)源,取名為:d_columns_dddw。

該數(shù)據(jù)窗口作為下拉子數(shù)據(jù)窗口用于存儲要排序的表的列號和字段名。

表1 d_columns_dddw的各字段

二、創(chuàng)建一個Tabular類型的數(shù)據(jù)窗口對象,選擇Exteral數(shù)據(jù)源,取名為d_sort。

該數(shù)據(jù)窗口對象的外觀如圖1所示。該數(shù)據(jù)窗口對象用于輸入要排序的表的字段名、優(yōu)先級和升降序,各字段如表2所示。

表2 d_sort的各字段

圖1 d_sort的設(shè)計效果

(一)grade字段屬性。Style Type:Edit。

(二)column_number字段屬性。Style Type:DropDownDW;DataWindow:d_columnsdddw;Display Column:column_name;Data Column:column_number。

(三)sort_order字段屬性。Style Type:CheckBox;Text:升序;Data Value for on:A;Data Value for off:D。

三、創(chuàng)建一個UserObject用戶對象數(shù)據(jù)窗口uo_dw_sort。

Standard Visual;Types:datawindow;DataObject:d_sort,如圖2所示:

圖2 用戶對象數(shù)據(jù)窗口uo_dw_sort

四、創(chuàng)建一個response類型的窗口w_sort),添加相關(guān)控件。

具體如表3和圖3所示,功能是設(shè)置組合排序的條件,得出排序結(jié)果。數(shù)據(jù)窗口控件dw_sort的創(chuàng)建方法是:單擊工具欄上的UserObject圖標,在彈出式窗口中選擇已經(jīng)創(chuàng)建好的uo_dw_sort對象。

表3 窗口w_sort上的控件

圖3 排序條件設(shè)置窗口w_sort

(一)聲明窗口w_sort的實例變量

Private:DataWindow idw_ToSortOn //用來接收傳遞過來的要排序的數(shù)據(jù)窗口對象

(二)數(shù)據(jù)窗口dw_sort中的事件函數(shù)

通過數(shù)據(jù)窗口dw_sort的用戶自定義事件來實現(xiàn)對排序條件的組合設(shè)置,主要有增加、插入、刪除記錄和高亮顯示記錄行等功能。

1.constructor事件。

This.SetRowFocusIndicator(Hand!) //記錄行前面設(shè)置為手形

2.用戶自定義事件。

(1)ue_addrow()。功能:在記錄末增加一行過濾條件記錄,并調(diào)用wf_setgrade()設(shè)置優(yōu)先級。腳本略。

(2)ue_insertrow()。功能:在當(dāng)前行之后插入一行記錄,并調(diào)用wf_setgrade()設(shè)置優(yōu)先級。腳本略。

(3)ue_deleterow()。功能:刪除一行過濾條件,并調(diào)用wf_setgrade()設(shè)置優(yōu)先級。腳本略。

(4)ue_dddw_mousemove()。功能:捕捉下拉數(shù)據(jù)窗口事件,高亮顯示鼠標經(jīng)過的記錄行。腳本略。

(三)窗口w_ sort中的事件函數(shù)

1.wf_strip()。功能:用空格替換特殊字符,去掉非法字符。

//Function Name:wf_strip;Access:private;Return Type:None

//Argument Name:as_arg;Argument Type:string; Pass By:reference

Integer li_length,li_pos

li_length=Len(as_arg)

Forli_pos=1 To li_length

Choose Case Mid(as_arg,li_pos,1)

Case ?謖~t?謖,?謖~r?謖,?謖~n?謖,?謖"?謖

as_arg=Trim(Replace(as_arg,li_pos,1,?謖))

End Choose

Next

2.wf_buildsortstring()。功能:構(gòu)造排序表達式字符串。

//Function Name:wf_buildsortstring;Access:private;Return Type:string

String ls_colname,ls_order,ls_expression

Integer li_i,li_rowcount

Long ll_columnno

dw_sort.AcceptText() //接收數(shù)據(jù)窗口改變

li_rowcount=dw_sort.RowCount() //獲取記錄行的總數(shù)

For li_i=1 To li_rowcount

ll_columnno=dw_sort.GetItemNumber(li_i,?謖column_number?謖) //獲取列號

If IsNull(ll_columnno) Then

Continue;

Else

ls_colname=?謖#?謖+String(ll_columnno) //獲取列名

ls_order=dw_sort.GetItemString(li_i,?謖sort_order?謖) //獲取排序類型(升序A,降序D)

End If

//組合排序表達式字符串

If Trim(ls_colname)<>?謖?謖 Then ls_expression=ls_expression + ls_colname + ?謖 ?謖 +ls_order+ ?謖 ?謖

Next

Return ls_expression

3.wf_setgrade()。功能:設(shè)置字段排序的優(yōu)先級別。

//Function Name:wf_setgrade;Access:private;Return Type:None

Long ll_row,ll_i

ll_row=dw_sort.RowCount() //總行數(shù),即排序的條件個數(shù)

If ll_row>0 Then

dw_sort.SetRedraw(False)

For ll_i=1 To ll_row

dw_sort.SetItem(ll_i,1,ll_i) //按順序設(shè)置優(yōu)先級

Next

dw_sort.SetRedraw(True)

End If

4.窗口open事件。功能:初始化數(shù)據(jù)窗口dw_sort。

Integer li_columncount,li_columnindex //數(shù)據(jù)窗口的總列數(shù)和列的序號

String ls_column,ls_display //下拉子數(shù)據(jù)窗口的列名和顯示名

Long ll_row

Pointer lp_oldpointer

DataWindowChild ldwc_columns

idw_ToSortOn=Message.PowerObjectParm //獲取要排序的數(shù)據(jù)窗口對象

lp_oldpointer=SetPointer(HourGlass!)

dw_sort.SetRedraw(False)

li_columncount=Integer(idw_ToSortOn.Describe(?謖DataWindow.Column.Count?謖)) //數(shù)據(jù)窗口列數(shù)

dw_sort.GetChild(?謖column_number?謖,ldwc_columns) //獲取下拉子數(shù)據(jù)窗口

//把要排序的數(shù)據(jù)窗口的列號和列名填充到下拉子數(shù)據(jù)窗口

For li_columnindex=1 To li_columncount

ls_column=idw_ToSortOn.Describe(?謖#?謖+String(li_columnin-

dex)+?謖.Name?謖) //字段名

ls_display=idw_ToSortOn.Describe(ls_column+?謖_t.Text?謖) //顯示名

If ls_display<>?謖!?謖 Then

wf_strip(ls_display) //去掉非法字符

ll_row=ldwc_columns.InsertRow(0) //在下拉子數(shù)據(jù)窗口中增加一條記錄

ldwc_columns.SetItem(ll_row,?謖column_number?謖,li_columnindex) //填充列號

ldwc_columns.SetItem(ll_row,?謖column_name?謖,ls_display) //填充列名

End If

Next

dw_sort.Event ue_addrow()

dw_sort.SetRedraw(True)

SetPointer(lp_oldpointer)

(四)窗口w_ sort中的按鈕控件

1.cb_add(增加):dw_sort.Event ue_addrow()

2.cb_insert(插入):dw_sort.Event ue_insertrow()

3.cb_delete(刪除):dw_sort.Event ue_deleterow()

4.cb_ok(確定):

String ls_sortstring

Pointer lp_oldpointer

ls_sortstring=wf_buildsortstring() //獲取排序字符串

lp_oldpointer=SetPointer(HourGlass!)

If ls_sortstring=?謖!?謖 Then ls_sortstring=?謖?謖

//對數(shù)據(jù)窗口進行排序

idw_ToSortOn.SetSort(ls_sortstring)

idw_ToSortOn.SetRedraw(False)

idw_ToSortOn.Sort()

idw_ToSortOn.SetRedraw(True)

SetPointer(lp_oldpointer)

Close(Parent)

5.cb_cancel(取消):Close(Parent)。關(guān)閉排序窗口。

(五)排序模塊的調(diào)用方法

如果要排序的數(shù)據(jù)窗口為dw_1,只要在排序按鈕的clicked事件中添加代碼“OpenWithParm(w_ sort,dw_1)”就可以實現(xiàn)排序,運行效果如圖4所示。

圖4 調(diào)用排序模塊

結(jié)語

通用排序模塊的設(shè)計可以節(jié)約系統(tǒng)開發(fā)的時間,提高開發(fā)效率,更好地滿足用戶要求對數(shù)據(jù)進行靈活多變的排序的要求。模塊可以單獨存儲到一個PBL文件當(dāng)中,如果在應(yīng)用程序的開發(fā)過程中需用到某些功能,只要把PBL文件加到庫的搜索路徑當(dāng)中即可。

參考文獻:

[1]陳永強,李茜.SQL Server 2005+PowerBuilder 11高級開發(fā)指南.清華大學(xué)出版社,2008,第一版.

[2]樊金生,張翠肖. PowerBuilder 10.5實用教程.科學(xué)出版社,2009,第一版.

[3]向隅.新編PowerBuilder程序設(shè)計實例教程.清華大學(xué)出版,2009,第一版.

猜你喜歡
排序設(shè)置功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
排序不等式
中隊崗位該如何設(shè)置
少先隊活動(2021年4期)2021-07-23 01:46:22
恐怖排序
節(jié)日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
關(guān)于非首都功能疏解的幾點思考
本刊欄目設(shè)置說明
中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
中西醫(yī)結(jié)合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 国产亚洲第一页| 97超爽成人免费视频在线播放| 国产www网站| 亚洲天堂啪啪| 亚洲AⅤ无码日韩AV无码网站| 亚洲精品成人福利在线电影| 98超碰在线观看| 久久精品国产在热久久2019| 久久精品国产91久久综合麻豆自制| 国产精品女人呻吟在线观看| 国产91av在线| 久久综合五月婷婷| 99久久精彩视频| 性做久久久久久久免费看| 久久99国产综合精品1| 热久久综合这里只有精品电影| 夜夜操天天摸| 男人天堂亚洲天堂| 久久亚洲国产视频| 粉嫩国产白浆在线观看| 国产va免费精品观看| a级毛片在线免费| 欧美亚洲一区二区三区导航| 国产中文在线亚洲精品官网| 中文字幕亚洲综久久2021| 亚洲日本中文字幕乱码中文| аⅴ资源中文在线天堂| 日本草草视频在线观看| 亚洲国产日韩一区| 国产超碰一区二区三区| 欧美一区二区三区不卡免费| 欧美一道本| 亚洲va在线∨a天堂va欧美va| 日韩不卡高清视频| 久久青青草原亚洲av无码| 毛片基地视频| 日韩中文无码av超清| 国产h视频在线观看视频| 亚洲天堂网2014| 欧美天天干| 中国一级特黄视频| 欧美97色| 欧美一区二区啪啪| 亚洲欧洲日本在线| 国产小视频a在线观看| 性色生活片在线观看| 91成人试看福利体验区| 国产白浆一区二区三区视频在线| 蜜桃视频一区| a色毛片免费视频| 最新国产成人剧情在线播放| 手机永久AV在线播放| 伊人色综合久久天天| 色综合久久无码网| 丝袜亚洲综合| 亚洲人成人无码www| 欧美在线精品怡红院| 毛片免费在线| 喷潮白浆直流在线播放| 亚洲综合久久成人AV| 国产成人亚洲综合A∨在线播放 | 久久国产亚洲欧美日韩精品| 免费看a毛片| 毛片免费网址| 久久精品中文字幕免费| 国产精品第页| 国产精品女在线观看| 日韩专区欧美| 欧美日韩中文国产va另类| 在线观看精品国产入口| 亚洲精品国产自在现线最新| 国产亚洲精品资源在线26u| 精品国产电影久久九九| 制服丝袜 91视频| 国产人妖视频一区在线观看| 99尹人香蕉国产免费天天拍| 色综合天天综合中文网| 九色视频线上播放| 欧美天天干| 91美女在线| 免费大黄网站在线观看| 国产欧美日韩另类|