国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

PB中實(shí)現(xiàn)數(shù)據(jù)窗口動態(tài)排序的三種方法

2024-07-21 02:10:12
字體:
供稿:網(wǎng)友
在powerbuilder中使用數(shù)據(jù)窗口檢索到的數(shù)據(jù)往往是無序的,雖然可以通過設(shè)置select語句實(shí)現(xiàn)排序的功能,但是數(shù)據(jù)窗口一旦生成都無法進(jìn)行動態(tài)調(diào)整。筆者總結(jié)了在已經(jīng)生成的數(shù)據(jù)窗口中實(shí)現(xiàn)動態(tài)排序的三種方法,現(xiàn)介紹給大家。

一、 準(zhǔn)備工作

設(shè)計(jì)如圖1所示的示例窗口。為了更好地比較三種不同的方法,dw—1中的數(shù)據(jù)來自兩個表student和class。student表中包含四個字段sid(學(xué)號)、sname(姓名)、saddr(住址)和cid(班號),class表中包含兩個字段cid(班號)和cname(班級名稱)。


圖1

二、三種方法的源程序

三種方法中的“執(zhí)行”按鈕的代碼分別為:

方法1:用setsqlselect()

string ls—oldsql,ls—newsql,ls—order ls—column
ls—oldsql=dw—1.getsqlselect()
choose case ddlb—1.text
case ″學(xué)號″ls—column=″sid″
case ″姓名″ls—column=″sname″
case ″住址″ls—column=″saddr″
case ″班號″ls—column=″class.cid″
case ″班級名稱″ ls—column=″cname″
end choose
if rb—1.checked then ls—order=″asc″
else ls—order=″desc″
end if
ls—newsql=ls—oldsql+″ order by ″+ &
ls—column+″ ″+ls—order
if dw—1.setsqlselect(ls—newsql)=-1 then
messagebox(″警告″,″數(shù)據(jù)設(shè)置失敗″,stopsign!)
else dw—1.settransobject(sqlca)
dw—1.reset()
dw—1.retrieve()
dw—1.setsqlselect(ls—oldsql)
end if

方法2:用describe()和modify()

string ls—mod, ls—order,ls—old,ls—column
ls—old=dw—1.describe(′datawindow.table.select′)
dw—1.settransobject(sqlca)
choose case ddlb—1.text
case ″學(xué)號″ls—column=″sid″
case ″姓名″ls—column=″sname″
case ″住址″ls—column=″saddr″
case ″班號″ls—column=″class.cid″
case ″班級名稱″ ls—column=″cname″
end choose
if rb—1.checked then ls—order=″asc″
else ls—order=″desc″
end if
ls—mod=″datawindow.table.select=′ ″+ls—old+&
′order by ″ ′+ls—column+′ ″ ′+ls—order+″ ′ ″
dw—1.modify(ls—mod)
dw—1.retrieve()
dw—1.modify(″datawindow.table.select= &
′ ″+ls—old+″ ′ ″)

方法3:用setsort()和sort()

string ls—sort,ls—order,ls—column
choose case ddlb—1.text
case ″學(xué)號″ ls—column=″#1″
case ″姓名″ ls—column=″#2″
case ″住址″ ls—column=″#3″
case ″班號″ ls—column=″#4″
case ″班級名稱″ ls—column=″#5″
end choose
if rb—1.checked then ls—order=″a″
else ls—order=″d″
end if
ls—sort=ls—column+′′+ls—order
dw—1.setsort(ls—sort)
dw—1.sort()

三、三種方法的比較

1.第一種和第二種方法要求數(shù)據(jù)窗口在生成時是無序的,第三種方法無此要求。

2.對于來自不同表單的相同的列名(如student.cid、class.cid)用第二種方法排序?qū)崿F(xiàn)起來較麻煩,因?yàn)樵谟胢odify()函數(shù)時要特別注意引號的使用。但是第二種方法比第一種方法的執(zhí)行速度要快。

3.第三種方法使用起來最方便,既可以引用列名也可引用列號(如#4表示第四列)來指定序列。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 富民县| 大竹县| 宁武县| 宿州市| 海伦市| 宾川县| 阆中市| 安新县| 清镇市| 于都县| 武功县| 赤峰市| 曲松县| 宁河县| 客服| 闽侯县| 泗水县| 信丰县| 南投市| 凤冈县| 卢龙县| 大田县| 汕尾市| 沧州市| 辽宁省| 玛沁县| 阜城县| 栾城县| 阿坝| 正镶白旗| 镶黄旗| 紫金县| 桐乡市| 肇东市| 塘沽区| 临泉县| 宜昌市| 青铜峡市| 孟村| 大同县| 漳平市|