PB知识点总结

   历经了两年的时间,我过了一门又一门的考试,终于到毕业论文了。要求使用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.组合查询的实现,界面如图:

PB知识点总结_第1张图片

可以通过复选框选择多个条件进行查询。

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下可以找到。

   从开始自考到现在马上面对论文答辩,中间有好多的变化:心里上从不愿意到愿意;学习能力从依赖到独立;阅读从磨磨蹭蹭到快速有效(呵呵,虽然做得还不够好,但是较之以前有很大的进步)。


你可能感兴趣的:(PB知识点总结)