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

利用數據窗口實現過濾與排序

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

王超

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

【關鍵詞】 數據窗口 過濾 排序

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

1 數據過濾

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

1.1 在數據窗口中定制過濾條件

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

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

技術實現關鍵步驟:

(1)打開工作區work、連接數據庫mydata.db。

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

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

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

dw_1.settransobject(sqlca)

dw_1.retrieve()

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

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

open(w_filter)

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

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

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

技術實現關鍵步驟:

(1)打開工作區work、連接數據庫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)在窗口的適當位置加入靜態文本控件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)在主工具條上單擊執行應用程序,此時數據窗口顯示學生數據表中全部記錄。在單行編輯框中輸入:05,按回車鍵,只顯示學號以05開頭的記錄(模糊查詢),如果輸入05080201,則只顯示與該學號完全相等的記錄(精確查詢)。

1.3 實現過濾的關鍵函數

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

2 數據排序

2.1 在數據窗口實現數據排序

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

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

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

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

(2)在數據窗口控件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)存盤關閉窗口,單擊執行應用程序。在數據窗口標題欄中的各列標題上用鼠標左鍵單擊,可見記錄順序的變化。對同一個列的標題連續多次單擊時記錄的排列將由升序變為降序,或從降序變成升序排列。

2.2 實現排序的關鍵函數

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

(2)getobjectatpointer()返回一個字符串,報告當前鼠標光標指向的對象名稱的相關信息(不同的對象返回的字符不同)。當用鼠標單擊的對象是數據列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。一般情況下,數據列的默認標題是在字段名后加”_t”。因此,實例中使用語句:

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

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

str1=obj_col+" "+order1

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

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

3 結語

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

參考文獻:

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

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

[3]楊楊.PowerBuilder共享數據窗口的應用[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
恐怖排序
律句填空排序題的備考策略
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
作者簡介(按文章先后排序)
名家名作(2017年2期)2017-08-30 01:34:24
按特定規律排序
兒童與健康(2012年1期)2012-04-12 00:00:00
主站蜘蛛池模板: 国产国产人成免费视频77777 | 91成人免费观看| 久久久久九九精品影院| 天堂在线视频精品| 国产午夜精品一区二区三区软件| 青青青国产在线播放| 国产欧美日韩精品综合在线| 免费国产一级 片内射老| 国产XXXX做受性欧美88| 伊人色天堂| 99热国产在线精品99| 午夜视频日本| 亚洲欧美精品日韩欧美| 五月婷婷导航| 欧美视频在线第一页| 成年人久久黄色网站| 影音先锋丝袜制服| 午夜在线不卡| 中文字幕日韩久久综合影院| 91在线高清视频| 国产美女精品在线| 野花国产精品入口| 中文字幕波多野不卡一区| 亚洲系列中文字幕一区二区| 亚洲中文字幕无码mv| 91在线精品免费免费播放| 亚洲欧洲天堂色AV| 成人字幕网视频在线观看| 国产成人a毛片在线| 极品国产一区二区三区| 九九九国产| 久久a毛片| 蜜臀AV在线播放| 人妻无码中文字幕第一区| 蜜臀AV在线播放| 青青青草国产| 中国丰满人妻无码束缚啪啪| 九色视频最新网址| 香蕉在线视频网站| 日本在线国产| 欧美天堂久久| 中文字幕久久精品波多野结| 99精品国产高清一区二区| 青草视频在线观看国产| 中文字幕乱码中文乱码51精品| 日韩人妻无码制服丝袜视频| 亚洲日韩在线满18点击进入| 中文天堂在线视频| 99精品伊人久久久大香线蕉| 日韩一区精品视频一区二区| 精品少妇人妻一区二区| 欧美笫一页| 欧美一区精品| 日韩小视频在线播放| 国产第一色| 亚洲视频二| 亚洲欧洲综合| 91久草视频| 国产在线一区视频| 五月婷婷综合网| 国产99视频免费精品是看6| 欧洲极品无码一区二区三区| 亚洲三级a| 爱色欧美亚洲综合图区| 国产欧美日韩91| 天天干伊人| 欧美乱妇高清无乱码免费| 一本色道久久88亚洲综合| 九九九九热精品视频| 日韩AV无码免费一二三区| 特黄日韩免费一区二区三区| 精品伊人久久久大香线蕉欧美 | 1024你懂的国产精品| 日日拍夜夜嗷嗷叫国产| 呦视频在线一区二区三区| 四虎影视8848永久精品| 91精品免费久久久| 亚洲男人在线| 91精品国产91欠久久久久| 色综合久久综合网| 久久久久夜色精品波多野结衣| 国产精品深爱在线|