4. 按向导提示操作直至数据窗口创建完成。在出现的数据窗口中,确认各数据项的“Tab Order”值都不为0,该数据窗口如下所示:
4. 选择数据窗口工作区的菜单项“rows -> update properties”,弹出如下对话框:
5. 在上面对话框中输入要更新的表名及选择允许更新的列及唯一主键后,点取“OK”按钮返回数据窗口工作区,以“d_store”名称保存该数据窗口。
6. 预览数据窗口“d_store”,这时用户可更新数据窗口中的数据。例如把作家名称“王达琳”更新为“王红”,如下图所示:
本技术的实现主要是选择数据窗口工作区中的“rows -> update”菜单项,设置数据窗口的更新属性。在设置该属性时,在“Specify Update Properties”对话框的“Table to update”域中要输入要更新表的名字。用户可根据这一特点来充分发挥以存储过程为数据源的数据窗口的优越性。
从一个窗口给另一个窗口的多个实例传递不可视用户对象
本篇文章来源与时代朝阳数据库(原晓通数据库)培训部PowerBuilder资料库。
在一些程序中,需要在一个窗口中创建某个不可视用户对象的实例,然后通过message对象把该用户对象实例传递给另一个窗口的多个实例。这时,在第二个窗口的实例窗口中引用的用户对象实例都指向第一个窗口中的用户对象实例。
下面举例介绍如何实现这种方法,具体步骤如下:
1. 创建不可视定制用户对象(u_nvo),在用户对象上定义如下实例变量:
int ii_var1 = 1
在用户对象上创建如下表所示的函数:
函数名 uf_getvar uf_setvar 无 参数 无 参数传递方式 返回值 integer [none] 程序 return ii_var1 ii_var1 = i_value integer i_value by vlaue 2. 创建窗口win_window1,在窗口中放置命令按钮cb_1。如下图所示:
3. 创建窗口win_window2,在该窗口中定义如下的实例变量:
u_nvo iuo_nvo
4. 在窗口win_window2的Open事件中写入如下的程序:
iuo_nvo = Message.PowerObjectParm
5. 在窗口win_window2上放置如下表所示的三个命令按钮:
名字 cb_1 文本 显示变量值 clicked事件的程序 MessageBox(\变量值\iuo_nvo.uf_getvar()) cb_2 cb_3 设置变量值 删除用户对象实例 iuo_nvo.uf_setvar(3) destroy iuo_nvo 创建的窗口如下图所示:
6. 在窗口win_window1上的命令按钮“cb_1”的clicked事件中写入如下的程序:
u_nvo luo_nvo
window lwin_window2_1
window lwin_window2_2
luo_nvo = create u_nvo //创建用户对象实例
//打开窗口win_window2的实例1
OpenWithParm(lwin_window2_1,luo_nvo, \
//打开窗口win_window2的实例2
OpenWithParm(lwin_window2_2,luo_nvo,\
运行窗口win_window1,单击命令按钮cb_1创建不可视用户对象u_nvo的实例,并将其存储在局部变量luo_nvo中。通过message对象将该用户对象传递给窗口win_window2的两个实例,并打开这两个实例窗口。
如果单击窗口win_window2的任意一个实例窗口中的命令按钮cb_1,则弹出消息对话框,显示用户对象的变量ii_var1的值为1(用户对象的变量ii_var1的初始化值),如下图所示:
如果单击命令按钮cb_2,则将变量ii_var1的值设置为3。此时,再单击任意一个实例窗口中的命令按钮cb_1时,都显示变量ii_var1的值为3(因为两个窗口中引用的用户对象实例指向同一个用户对象实例),如下图所示:
单击任意一个窗口实例中的命令按钮cb_3,将删除窗口win_window1中创建的用户对象实例。如果再单击命令按钮cb_1,引用该用户对象的实例时,将会显示错误信息:
综上所述,通过使用message对象,可以将一个窗口中创建的用户对象实例传递给多个窗口,而且各个窗口中引用的用户对象实例都指向同一个用户对象实例。使用这种方法,可在用户对象中封装变量和函数,并在程序中被当作全局变量和全局函数来使用这些变量和函数。
从跟踪文件中提取所需要的跟踪数据
本篇文章来源与时代朝阳数据库(原晓通数据库)培训部PowerBuilder资料库。
在某些情况下,如果标准的跟踪模型仍不能满足需要,程序员可以通过编写程序,直接从跟踪文件(PBP文件)中提取所需要的跟踪数据。这种方法不建立标准的跟踪模型(Call Graph模型和Trace Tree模型),而直接从跟踪文件(PBP文件)中提取所需要的跟踪数据,当然,也可根据需要按照特定的方式组织数据,建立自己的跟踪模型。
尽管通过编写程序直接从跟踪文件(PBP文件)中获取跟踪数据的方法无法利用标准的跟踪模型,但是,这种方法为程序员提供了一种更灵活的手段,以更灵活的方式获取跟踪信息。
为了直接访问跟踪文件(PBP文件)中的跟踪信息,PowerBuilder提供了以下对象:
TraceActivityNode TraceGarbageCollect TraceBeginEnd TraceLine TraceError TraceObject TraceESQL TraceRoutine TraceFile TraceUser 为了从这些对象中获取信息,需要用到下列函数:
函数 Open NextActivity 对应的对象 TraceFile TraceFile 描述 打开跟踪文件(PBP文件)。 获取跟踪文件中记录的下一项活动(其类型为TraceActivityNode)。 Reset TraceFile 将下一项活动设置为跟踪文件的开始。