powerbuilder:让PowerBuilder制作查询系统的界面更加酷

邮编:541002 桂林市师范学校微机室 黄胜锦

在管理信息系统中查询系统占了相当重要地位(SQL中文就是结构化查询语言)它是向用户开放界面定要友善要让别人看就会操作
根据查询结果记录个数来分查询可分为两种:
1.唯记录查询如:从键盘输入记录号查询该人档案
1. 模糊查询结果记录可能很多如下例电脑红娘用鼠标做完选择后按查询结果会有许多记录号行
3.若这时用鼠标点击某行记录行若旁边出现该记录号具体详细个人档案用鼠标点击另记录行则旁边出现另记录号具体详细个人档案这叫记录连动
这里我们以制作婚姻介绍系统为例子包括了难度较大模糊查询多按钮式选择界面记录连动
工作原理:通过自己定义变量来传递选择条件如:性别可定义变量sex年龄可定义变量old注意变量要先定义后使用
. 多按钮选择界面制作在分组框内多个Radio Button在同时刻只能选中
操作步骤:新建名字为b2窗口窗口内放置Control控件如下图定义变量(重要)按菜单DeclareInstance Variables在对话框中定义例子变量键盘输入:
sex
eger old
定义变量后查询按钮Click事件中输入如下脚本:

rb_1.checked=true then
sex="w"
rb_2.checked=true then
sex="m"

end
rb_3.checked=true then
old=30
rb_4.checked=true then
old=40
rb_5.checked=true then
old=50
end
sle_1.text=sex
sle_2.text=(old)
若运行窗口(注意不是运行应用)选择后按查询按钮结果如下图则变量已被正确地自动赋值

2.数据过滤接下来要进行过滤操作即将变量传给SQL语言中Where语句在哪里写SQL语句呢?在数据窗口下方Where标签页里可以自动生成SQL过滤语句
在SQL anywhere里制作建立并输入下表表名为aaa1
表头:
字段 类型 长度 标题头
id char 10 编号
name char 10 姓名
old eger 年龄
sex char 10 性别
status char 30 状况
表aaa1内容:
id name old sex status
1 小王 23 女 导游会英语
2 小李 34 男 个体收入高
3 小林 45 女 会计
4 小黄 27 男 电脑专家
5 小郑 38 女 教师

在数据窗口中新建立两个数据窗口:数据来源都为aaa1表要求如下:
数据窗口名 字段 数据源形式 显示格式 SQL过滤语句
Ad1 Idname,old,sex SQL Select 表格 "aaa1"."sex"=:sex and"aaa1"."old"<=:old
Ad2 Id,name,old,sex,status SQL Select 自由格式 "aaa1"."id"=:id

注意写SQL过滤语句是:在数据窗口中先点中Id和 name两个字段在窗口下方按Where标签页按Colume并在Cloume下拉条中选中"aaa1"."sex"在Valua栏中填入 :sex注意这里sex前面有冒号再在Cloume下拉条中选中"aaa1". "old"在Operator栏选<=在Valua栏中填入 :old按窗口上方Desion菜单选Retriveal Arguments在Name栏填sex注意这里sex前面没有冒号type栏选String再在Name行填oldtype栏选number同时为让个人资料表格数据按年龄升序排列在窗口下方按Sort标签页将左边ID字段拖到右边按Syntax标签页可看到自动生成SQL语句
SELECT "aaa1"."id",
"aaa1"."name",
"aaa1"."old",
"aaa1"."sex"
FROM "aaa1"
WHERE ( "aaa1"."sex" = :sex ) AND
( "aaa1"."old" <= :old )
ORDER BY "aaa1"."old" ASC
这里SQL语句意思是选取性别=变量sex年龄<=变量old记录只显示几个字段尽管在Pb中这些语句是通过拖动图标自动生成但看了解其工作原理还是有好处


3.数据连动.可以用鼠标让记录连动窗口制作如下图这里主要用到getitemString(getrow,1)它可取得双击鼠标当前行左边第即数据窗口内当前行id字段并赋给例子变量tttttttt再传给数据窗口 2SQL过滤语句Where id=:id就可在数据窗口 2中显示id=tttt记录在这两个数据窗口的间变量tttt从数据窗口跑到数据窗口 2起到象桥梁般连接作用数据窗口即dw_1鼠标单击事件脚本如下:

ttttt=dw_1.getitemString (getrow,1)
sle_1.text=ttttt
b4.dw_1.transobject(sqlca)
b4.dw_1.retrieve(b3.ttttt)
dw_2.transobject(sqlca)
dw_2.retrieve(ttttt)
Tags:  powerbuilder是什么 powerbuilder9.0 powerbuilder powerbuilder

延伸阅读

最新评论

发表评论