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

        ?

        利用數(shù)據(jù)窗口實現(xiàn)過濾與排序

        2015-01-08 02:18:21王超
        中國科技縱橫 2014年12期
        關鍵詞:排序

        王超

        【摘 要】 在PowerBuilder中數(shù)據(jù)窗口對象被創(chuàng)建之后,可以給它增加許多功能,本文闡述了實現(xiàn)過濾與排序的方法,方便數(shù)據(jù)查詢與瀏覽。

        【關鍵詞】 數(shù)據(jù)窗口 過濾 排序

        數(shù)據(jù)窗口對象被創(chuàng)建之后,可以給它增加許多功能,以便很方便地使用、操作數(shù)據(jù)窗口對象。

        1 數(shù)據(jù)過濾

        在定義數(shù)據(jù)源時,可以使用Where和Having子句或者使用檢索參數(shù)來限定從數(shù)據(jù)庫中檢索到數(shù)據(jù)窗口對象的數(shù)據(jù)。然而,有些時候想對檢索到數(shù)據(jù)窗口對象中的數(shù)據(jù)作進一步約束,為了實現(xiàn)這一目的,可以使用數(shù)據(jù)過濾。

        1.1 在數(shù)據(jù)窗口中定制過濾條件

        在數(shù)據(jù)窗口畫板下,可以定義過濾表達式,數(shù)據(jù)窗口將返回符合過濾表達式條件的記錄。過濾表達式可以使用大多數(shù)的數(shù)據(jù)窗口表達式函數(shù),也可以使用自定義函數(shù)。常用操作方法是在系統(tǒng)菜單中選擇Rows︱Filter,打開Specify Filter對話框,輸入過濾表達式存盤即可。

        技術案例:用數(shù)據(jù)過濾的方法實現(xiàn)xsb(學生表)女生數(shù)據(jù)的顯示。

        技術實現(xiàn)關鍵步驟:

        (1)打開工作區(qū)work、連接數(shù)據(jù)庫mydata.db。

        (2)創(chuàng)建數(shù)據(jù)窗口對象d_filter,風格為Grid,數(shù)據(jù)源為Quick Select,選擇數(shù)據(jù)表xsb,選中數(shù)據(jù)表中所有字段。在系統(tǒng)菜單中選擇Rows︱Filter,打開Specify Filter對話框。輸入過濾表達式:xb=F,單擊OK按鈕返回。單擊工具欄的按鈕存盤。

        (3)新建窗口w_filter,窗口的title的值為:靜態(tài)過濾,在窗口中加入一個數(shù)據(jù)窗口控件。控件名為:dw_1,Dataobject的值:d_filter。選中HscrollBar和VscrollBar兩個復選框。

        (4)為窗口w_filter的Open事件鍵入如下腳本:

        dw_1.settransobject(sqlca)

        dw_1.retrieve()

        (5)在數(shù)據(jù)窗口控件的旁邊加入一個“返回”按鈕,并輸入代碼:close(parent)

        (6)修改應用對象(Application)的Open事件中最后一行代碼,修改如下:

        open(w_filter)

        1.2 在腳本中設置或改變過濾條件

        對數(shù)據(jù)窗口的過濾條件是在數(shù)據(jù)窗口的設計過程中完成的。一旦數(shù)據(jù)窗口對象在窗口中顯示數(shù)據(jù),則所設的過濾條件立即生效。但只能設置相對簡單的過濾,屬于靜態(tài)過濾,采用腳本的方法會根據(jù)參數(shù)值的動態(tài)變化完成過濾,會滿足不同用戶的各種需求。

        技術案例:按學號過濾記錄(按學號進行查詢)

        技術實現(xiàn)關鍵步驟:

        (1)打開工作區(qū)work、連接數(shù)據(jù)庫mydata.db。

        (2)建立一個新窗口w_xh,title屬性值為:按學號查找,在窗口中加入一個DataWindow控件??丶麨閐w_1。選中HscrollBar和VscrollBar兩個復選框,存盤。

        (3)在窗口的Open事件中鍵入如下腳本:

        dw_1.dataobject="d_filter"

        dw_1.settransobject(sqlca)

        dw_1.retrieve()

        dw_1.setfilter("")

        dw_1.filter()

        (4)在窗口的適當位置加入靜態(tài)文本控件st_1,text屬性值為:“請輸入學號:”,并在該控件后面加入一個單行編輯框sle_1,Text屬性值為空串(刪除none),增加一個“返回”命令按鈕cb_1。

        (5)在單行編輯框?sle_1的modified事件中鍵入如下腳本:

        string str,b

        b=this.text

        str="left(xh,"+string(len(b))+")='"+b+"'"

        dw_1.setfilter(str)

        dw_1.filter()

        (6)【返回】命令按鈕的Clicked事件的腳本為:

        close(parent)

        (7)修改應用對象(Application)的Open事件中最后一行代碼,修改如下:

        open(w_xh)

        (8)在主工具條上單擊執(zhí)行應用程序,此時數(shù)據(jù)窗口顯示學生數(shù)據(jù)表中全部記錄。在單行編輯框中輸入:05,按回車鍵,只顯示學號以05開頭的記錄(模糊查詢),如果輸入05080201,則只顯示與該學號完全相等的記錄(精確查詢)。

        1.3 實現(xiàn)過濾的關鍵函數(shù)

        函數(shù)setfilter()僅僅是設定篩選條件,而真正的篩選過程是通過函數(shù)filter()完成的。Filter()函數(shù)的功能是根據(jù)setfilter()函數(shù)所設定的條件進行記錄的篩選。因此,一般函數(shù)setfilter()和filter()都是先后連續(xù)使用。函數(shù)setfilter()如果調(diào)用空字符串,則消除原有的篩選條件,即調(diào)用函數(shù)setfilter(“”)將使以前設置的篩選條件作廢。篩選條件消除后再調(diào)用filter()函數(shù),將使數(shù)據(jù)窗口顯示全部記錄。

        2 數(shù)據(jù)排序

        2.1 在數(shù)據(jù)窗口實現(xiàn)數(shù)據(jù)排序

        正如數(shù)據(jù)過濾是相對于在數(shù)據(jù)窗口的SELECT語句中使用WHERE子句一樣,數(shù)據(jù)排序是相對于在SELECT語句中使用ORDER BY語句。不同的是SELECT語句是在后臺數(shù)據(jù)庫執(zhí)行的,而數(shù)據(jù)過濾和排序都是在數(shù)據(jù)窗口內(nèi)執(zhí)行,操作的對象是已檢索到數(shù)據(jù)窗口中的數(shù)據(jù)。endprint

        記錄排序是在數(shù)據(jù)庫應用系統(tǒng)中最常見的數(shù)據(jù)組織方式。在系統(tǒng)菜單中單擊選擇Row︱Sort,用鼠標單擊排序字段并將其拖至右面的方框中即可。如需修改,還可以將其拖回左面,重新選定排序字段。

        記錄排序的另外一種方法是在在腳本中改變或設置排序條件,關鍵步驟代碼如下:

        (1)打開上例的窗口對象w_filter,修改Title屬性值為:單擊列標題排序,在窗口中定義實例變量:string order1。

        (2)在數(shù)據(jù)窗口控件dw_1的constructor事件中輸入腳本如下:

        order1=a

        (3)在dw_1的Clicked事件中鍵入如下腳本:

        string daiqiu,obj_col,str1

        daiqiu=dw_1.getbandatpointer()

        if left(daiqiu,4)<>"head" then return

        obj_col=this.getobjectatpointer()

        obj_col=left(obj_col,pos(obj_col,"~t") - 3)

        if order1='a' then

        order1='d'

        else

        order1='a'

        end if

        str1=obj_col+" "+order1 //此行代碼中是“ ”,不是“”

        this.setsort(str1)

        this.sort()

        (4)存盤關閉窗口,單擊執(zhí)行應用程序。在數(shù)據(jù)窗口標題欄中的各列標題上用鼠標左鍵單擊,可見記錄順序的變化。對同一個列的標題連續(xù)多次單擊時記錄的排列將由升序變?yōu)榻敌颍驈慕敌蜃兂缮蚺帕小?/p>

        2.2 實現(xiàn)排序的關鍵函數(shù)

        (1)函數(shù)getbandatpointer()返回一個字符串,報告當前鼠標光標所在的欄目信息。

        (2)getobjectatpointer()返回一個字符串,報告當前鼠標光標指向的對象名稱的相關信息(不同的對象返回的字符不同)。當用鼠標單擊的對象是數(shù)據(jù)列id的標題“銷售單號”時,語句obj_col=this.getobjectatpointer()等價于語句obj_col=”id_t~t1”為了取得對象名稱,可以使用語句:

        obj_col=left(obj_col,pos(obj_col,”~t”) – 1)

        從字符串”id_t~t1”中截取~t前面的部分,即對象名稱id_t,并將此名稱賦給變量obj_col。一般情況下,數(shù)據(jù)列的默認標題是在字段名后加”_t”。因此,實例中使用語句:

        obj_col=left(obj_col,pos(obj_col,"~t") - 3)可取得數(shù)據(jù)列對應的字段名。

        (3)當用鼠標單擊的標題是”銷售數(shù)量”時,字符串變量obj_col的值為number。通過語句:

        str1=obj_col+" "+order1

        得到的字符串str1實際是”number a”或”number d”,取決于order1的值。

        (4)函數(shù)setsort(“number a”)將數(shù)據(jù)記錄的排序條件設置為按number字段升序排序,其中a表示升序,d表示降序。調(diào)用函數(shù)dw_1.sort()可完成數(shù)據(jù)的重新排序過程。

        3 結語

        數(shù)據(jù)過濾也稱為篩選,即將滿足某個條件的數(shù)據(jù)記錄顯示在屏幕上,將不滿足條件的記錄隱藏起來,通過數(shù)據(jù)過濾可以實現(xiàn)數(shù)據(jù)的選擇性瀏覽和使用;記錄排序是數(shù)據(jù)庫應用系統(tǒng)中最常見的數(shù)據(jù)組織形式。

        參考文獻:

        [1]盧守東.基于PowerBuilder數(shù)據(jù)窗口的查詢與篩選技術[J].電腦開發(fā)與應用,2009(06).

        [2]劉艷爭,黃洪,徐國湖.PowerBuilder數(shù)據(jù)窗口技術的查詢方法分析[J].電腦知識與技術(學術交流),2007(02).

        [3]楊楊.PowerBuilder共享數(shù)據(jù)窗口的應用[J].科技資訊,2008(32).

        [4]劉鵬遠.淺談PowerBuilder中常用的查詢技術[J].中國科技信息,2008(23).endprint

        猜你喜歡
        排序
        排排序
        排序不等式
        作者簡介
        名家名作(2021年9期)2021-10-08 01:31:36
        作者簡介
        名家名作(2021年4期)2021-05-12 09:40:02
        恐怖排序
        律句填空排序題的備考策略
        節(jié)日排序
        刻舟求劍
        兒童繪本(2018年5期)2018-04-12 16:45:32
        作者簡介(按文章先后排序)
        名家名作(2017年2期)2017-08-30 01:34:24
        按特定規(guī)律排序
        兒童與健康(2012年1期)2012-04-12 00:00:00
        精品人妻久久av中文字幕| 国产精一品亚洲二区在线播放| 久久精品国产亚洲av麻| 亚洲AV无码久久精品国产老人| 亚洲综合无码一区二区| 国产精品国产三级国产av创| 亚洲无码啊啊啊免费体验| 亚洲免费看三级黄网站| 亚洲国产性夜夜综合另类| 欧洲成人一区二区三区| 色欲aⅴ亚洲情无码av| 天天综合网在线观看视频| 欧美成人一区二区三区| 91精品亚洲一区二区三区| 亚洲av永久无码天堂网| 亚洲国产成人极品综合| 国内自拍偷拍一区二区| 午夜精品男人天堂av| 成人艳情一二三区| 中文字幕日韩精品无码内射| 日韩精品中文字幕无码一区| 91av视频在线| 成人免费无码视频在线网站| 国产少妇一区二区三区| 我揉搓少妇好久没做高潮| 国产黑丝美腿在线观看| 亚洲人成未满十八禁网站| 久久亚洲中文字幕无码| av天堂精品久久久久| 久久久久AV成人无码网站| 男人天堂亚洲天堂av| 亚洲a∨国产av综合av下载| 无码国产午夜福利片在线观看 | 激情内射亚洲一区二区三区爱妻 | 日本a级一级淫片免费观看| 午夜精品久久久久久99热| 爱情岛论坛亚洲品质自拍hd| 亚洲欧洲综合有码无码| 91精品国产综合久久精品密臀| 国产香港明星裸体xxxx视频| 亚洲avav天堂av在线网爱情|