48按员工编号排序
写在前面
这是PB案例学习笔记系列文章的第48篇,该系列文章适合具有一定PB基础的读者。
通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。
文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example】
如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。
一、小目标
通过本案例我们将实现列表按员工编号排序的功能。运行程序后,在弹出的界面上选择“按员工编号排序”的复选框,
通过选择“升序”、“降序”按钮,来实现员工信息的排序功能
最终实现效果如下:
二、实现思路
PB中提供了SetSort和Sort 函数来实现指定数据窗口按照指定格式设置排序。
SetSort函数
语法:
dwcontrol.SetSort(Format);Format参数用来指定要排序的字段和排序方式,可以使用字段名或数字指定排序的字段,使用字母A或D来指明升序或降序
Sort函数
语法:
dwcontrol.Sort()根据SetSort设置的排序规则对数据窗口进行排序。
三、创建程序基本框架
有了基本思路之后,我们就动起来开始写程序了
① 新建examplework 工作区
② 新建exampleapp应用
③ 新建w_main窗口,并将其Title设置为"按员工编号排序"
由于文章篇幅的原因,以上步骤就不再赘述,如果忘记的小伙伴可以翻一翻该系列第一篇文章复习一下
四、界面布局
① 建立Grid风格数据窗口对象
连接数据据,以emp表为基础,建立数据窗口对象d_emp
② 建立窗口控件
向w_main窗口中添加1个DataWindow控件、1个CommandButton控件、1个CheckBox控件和2个RadioButton控件。
依次命名为dw_1、cb_1、cbx_1、rb_1和rb_2
③ 设置窗口控件属性
- 将
dw_1控件的DataObject属性设置为d_emp,并勾选HScrollBar和VScrollBar复选框 - 将
cb_1控件的Text值设置为“退出” - 将
cbx_1控件的Text值设置为“按员工编号排序”` - 将
rb_1控件的Text值设置为“升序” - 将
rb_2控件的Text值设置为“降序”

五、编写代码
① 在w_main窗口的Open事件中添加如下代码
dw_1.settransobject(sqlca)
dw_1.retrieve()② 在cbx_1控件的Clicked事件中添加如下代码
if cbx_1.checked = true then
if rb_1.checked = true then
dw_1.setsort(" A")
else
dw_1.setsort("sno D")
end if
dw_1.sort()
end if③ 在rb_1控件的Clicked事件中添加如下代码
if cbx_1.checked = true then
dw_1.setsort("empno A")
dw_1.sort()
end if④ 在rb_2控件的Clicked事件中添加如下代码
if cbx_1.checked = true then
dw_1.setsort("empno D")
dw_1.sort()
end if⑤ 在cb_1控件的Clicked事件中添加如下代码
close(w_main)⑥ 在开发界面左边的System Tree窗口中双击exampleapp应用对象,并在其Open事件中添加如下代码
SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
SQLCA.LogPass = "tiger"
SQLCA.ServerName = "127.0.0.1:1521/orcl"
SQLCA.LogId = "scott"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PBCatalogOwner='scott'"
connect;
open(w_main)⑦ 在开发界面左边的System Tree窗口中双击exampleapp应用对象,并在其close事件中添加如下代码
disconnect;六、运行程序
运行程序,看看是否实现预期效果
