powerbuilder编程简单入门(个人总结) 联系客服

发布时间 : 星期日 文章powerbuilder编程简单入门(个人总结)更新完毕开始阅读059ec4886529647d27285292

2011-4 by 邵家鑫 From Tsinghua

(10) 建立数据窗口

(11) 添加新的pbl文件

一般要用不同的pbl文件分类存储不同窗体、数据窗口和菜单等资源;建立新的pbl文件的方法如下:点击工具栏上“Library”按钮,然后在弹出子窗口中进入程序所在文件夹,在工具栏左下有“

”创建pbl的按钮。创建好pbl 库文件后在目标(如果按前面建立名

称为frame的目标,则在“”)上单击右键,选择属性在弹出窗口中可添加Library List,如下图,也可在这里建立新的pbl库文件

2011-4 by 邵家鑫 From Tsinghua

(12) 如何编译出可运行程序

首先新建一个Project(File->new->Project->Application),如取名p_main 然后打开新建的Project,设置可执行文件生成目录。 (13) DataWindow窗口连通数据库

dw_1.settransobject(sqlca)

(14) 格式化日期(2007-10-05变为20071005)

f_format_date函数,输入string变量ps_date,返回string if isnull(ps_date) then return \

if len(ps_date) < 10 then return ps_date

return left(ps_date,4) + mid(ps_date, 6, 2) + mid(ps_date, 9,2) (15) 退出界面及退出界面时检查数据是否保存

退出子界面(控江事件里面写代码):Close(Parent) 假设检测的数据窗口名为dw_zcrxx

if dw_zcrxx.ModifiedCount()+dw_zcrxx.deletedcount()>0 then if MessageBox('提示','数据没有保存,是否不保存退出?',Question!,YesNo!) =2 then return 1 end if end if

2011-4 by 邵家鑫 From Tsinghua

4、其他编程

4.1 将数据库中数据显示到dropdownlistbox的下拉菜单里 建立“f_ddlb_populate”函数,函数输入两个变量: dropdownlistbox:ddlb_this 要显示到的空间名 string:as_sql 查询数据库的sql语句 函数代码如下: ddlb_this.reset()

ddlb_this.additem(\string ls_disp, ls_data

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ; PREPARE SQLSA FROM :as_sql ; OPEN DYNAMIC my_cursor ;

FETCH my_cursor INTO :ls_disp, :ls_data; if isnull(ls_disp) then ls_disp = \if isnull(ls_data) then ls_data = \

do while sqlca.sqlcode = 0 ddlb_this.additem(trim(left(ls_disp+space(200),200) + ls_data)) FETCH my_cursor INTO :ls_disp, :ls_data; loop

CLOSE my_cursor ; as_sql语句里面需要有两个输出 如果ddlb的数据项比较多,一般选中VScrollBar 如下调用这个函数: string ls_sql

ls_sql=\ from zcr order by zcr_bh\//举例

f_ddlb_populate(ddlb_bh,ls_sql) //将ddlb_bh列表框里写入列表项

4.2 数据窗口常用几个函数

dw_deal.settransobject(sqlca) //连接数据库 dw_deal.insertrow(number row):在指定行之前插入一行,如果要在最后一行新增一行,取row=0 dw_deal.deleterow(number row):删除指定行,row=0时删除当前行

dw_deal.rowcount():返回数据窗口中总行数 dw_deal.setitem(li_n,'lxr_zpdz','pic\\') //设置某行某列的数据 integer dwcontrol.AcceptText ( ):Applies the contents of the DataWindow control's edit control to the current item in the DataWindow buffer. integer dwcontrol.Filter ( ):根据给定过滤条件来列出满足条件的记录,过滤条件由SetFilter函数指定

integer dwcontrol.SetFilter ( string format ):设定过滤条件

integer dwcontrol.GetColumn ( ):Returns the number of the current column in the

2011-4 by 邵家鑫 From Tsinghua

DataWindow control

string dwcontrol.GetColumnName ( ):Returns the name of the current column in the DataWindow control.

date dwcontrol.GetItemDate ( long row, string column {, DWBuffer dwbuffer , boolean originalvalue } )

date dwcontrol.GetItemDate ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } )

GetItemStringGetItemString(…):

long dwcontrol.GetNextModified (long row, DWBuffer dwbuffer ): SetRow(long row): 设定指定行为当前行 GetRow() :获得数据窗口中当前行

GetSelectedRow ( long row ):获得指定行row后面第一个被选中的行,如没有则返回零

integer dwcontrol.SelectRow ( long row, boolean select ):选中指定行 IsSelected ( long row ):判断某行是否被选中

ScrollToRow ( number row ):窗口数据滚动在指定行,如果row=0则规东到第一行 integer dwcontrol.RowsMove ( long startrow, long endrow, DWBuffer , datawindow targetdw, long beforerow, DWBuffer targetbuffer ) 将一个数据窗口的几行数据移到另一个数据窗口。movebuffer和DWBuffer的范围为Primary!、Delete!和Filter!

string dwcontrol.Describe ( string propertylist ):返回数据窗口中控件属性 string dwcontrol.Modify ( string modstring ) :修改数据窗口中控件属性

integer dwcontrol.SetItemStatus(long row, integer column, dwbuffer dwbuffer, dwitemstatus status):改变数据状态,dwitemstatus有以下四种状态

NotModified! ,DataModified! ,New!,NewModified! 4.3 数据窗口常用几个事件

RetrieveRow event (DataWindows):在一行被检索后响应;返回0则继续,返回1则停止检索

4.4 常用SQL语句

SELECT *

FROM finances

WHERE description LIKE 'gs_' ESCAPE 'S'

这里ESCAPE ‘S’表示不将’s’后面的通配符’_’作为通配符,而只是作为一般的字符

4.5 给数据窗口增加条件

The following scripts dynamically add a WHERE clause to a DataWindow object that was created with a SELECT statement that did not include a WHERE clause. (Since this example appends a WHERE clause to the original SELECT statement, additional code would be needed to remove a where clause from the original SELECT statement if it had one.) This technique is useful when the arguments in the WHERE clause might change at execution time.

The original SELECT statement might be: