历经了两年的时间,我过了一门又一门的考试,终于到毕业论文了。要求使用PowerBuilder做一个信息管理系统。虽然之前听都没有听过这是什么,却能在10天之内用它做一个说大不大,说小也不小的系统。在外人听来似乎很震惊,其实在我们看这根本不算什么。从语言上讲,PowerScript 和学过的VB、C#等都是大同小异的,只有个别的语法规则不同。熟悉一下开发环境,试一个小例子就基本可以上手了。现在对PB的认识也多了,发现它有自己挺多的优点:1.数据窗口功能很强大;2.操作数据库很方便。下面我整理了一下在做系统的使用到的几个知识点。
1.窗体加载时,动态给下拉列表框添加数据
int i string str declare c1 cursor for select distinct costItem from costitem; //定义游标 open c1; //打开游标 fetch c1 into :str; //获取游标到定义的变量中 do while sqlca.sqlcode=0 ddlb_1.additem(str) //添加到下拉框中 i=i+1 fetch c1 into :str; loop close c1; //关闭游标
2.组合查询的实现,界面如图:
可以通过复选框选择多个条件进行查询。
Date fromDate,toDate string account,item,category,member string ls_sql ls_sql = " select * from cost where " //得到dw_get窗口的SQL语句 if cbx_date.checked then //判断是否选择日期复选框 fromDate=Date(sle_fromdate.text) toDate=Date(sle_todate.text) if toDate<fromDate then MessageBox("提示信息","结束日期不能小于开始日期") end if ls_sql+="costDate >= '" + string(fromDate) + " 'and costDate <= '" + string(toDate) + "' and " end if if cbx_account.checked then //判断是否选择账号复选框 account=ddlb_account.text ls_sql+="account ='" + account + "' and " end if if cbx_item.checked then //判断是否选择项目复选框 item=ddlb_item.text ls_sql+="costItem ='" + item + "' and " end if if cbx_category.checked then //判断是否选择类别复选框 category=ddlb_category.text ls_sql+="category ='" + category + "' and " end if if cbx_member.checked then //判断是否选择成员复选框 member=ddlb_member.text ls_sql+="member ='" + member + "'" end if ls_sql=trim(ls_sql) if Right(ls_sql,3)="and" then //去掉多余的and ls_sql=left(ls_sql,len(ls_sql)-3) end if if Right(ls_sql,5)="where" then //去掉多余的where ls_sql=left(ls_sql,len(ls_sql)-5) end if dw_1.settransobject(sqlca) dw_1.SetSQLSelect(ls_sql) //将修改后的SQL语句赋予dw_1 dw_1.retrieve()3.直接在数据窗口选择进行批量删除。界面如同上图。
首先要在数据窗口中添加复选框这一列。方法:选中要作为复选框的列(这里注意不是在Header区中选,而是在Detail区中选),选择属性Edit,其中StyleType选择Checkbox就可以了。然后再设置data value for on 的值为1,data value for off 为0.最后就是代码的问题了.
int count,j,i count = dw_1.rowcount() for i = 1 to count if integer(dw_1.getitemstring(i,'userid')) = 1 then //判断是否数据窗口中的列是否被选中了 j=dw_1.getitemnumber(i,'id') //取出该列的唯一标识 delete from cost //删除就可以了 where id=:j; end if next dw_1.Retrieve() if sqlca.sqlcode=0 then MessageBox("提示信息","删除成功") else MessageBox("提示信息","删除失败") end if(1)检查一下是否设置了checkbox 选中和不选中情况下的值。
(2)检查该列的taborder是否为0,如果为0,点中的时候,这个字段变黑,无法编辑。这个Tab Order属性是在菜单栏Fomat下可以找到。
(3)检查该列的protect是不是被设置成了1.这个属性在数据窗口的General下可以找到。
从开始自考到现在马上面对论文答辩,中间有好多的变化:心里上从不愿意到愿意;学习能力从依赖到独立;阅读从磨磨蹭蹭到快速有效(呵呵,虽然做得还不够好,但是较之以前有很大的进步)。