AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > PowerBuilder

循序渐进学习Power Builder 6.0(2-6)

51自学网 http://www.51zixue.net

接下来我们为第二个建立的窗口,也就是真正对数据库进行操作的窗口编写脚本,这里的脚本是真正完成对数据库中数据的修改。首先要为窗口的打开事件编写脚本,也就是在窗口打开后需要干什么事。用类似打开第一个窗口的方法打开第二个窗口,用鼠标右击窗口中的空白区域,在弹出的菜单中选中SCRIPT菜单项,系统弹出一个用来为窗口本身所有可能的事件编写脚本的窗口,选中窗口的打开事件后在窗口的工作区中输入如下脚本:

CONNECT;

DW-1.SETTRANSOBJECTSQLCA

DW-1.RETRIEVE()

DW-2.SETTRANSOBJECT(SQLCA)

脚本的第一条语句的意思是用刚才介绍的系统缺省的事物对象SQLCA联结数据库。第二行脚本的意思是告诉数据窗口控件DW-1中的数据窗口对象利用事物对象SQLCA来取得数据库的有关信息。而第三条语句的意思是让数据窗口控件中的数据窗口对象,要利用创建该数据窗口对象时的SELECT语句来获得数据显示在相应的数据窗口控件中。第四行语句的作用和第二行语句的作用是类似的,是告诉数据窗口控件DW-2所联结的数据窗口对象从系统缺省的事物对象SQLCA中获取有关数据库的信息。这样我们就为对数据库进行操作的窗口的打开事件编好了脚本,要指出的是可以发现这里的脚本都是做一些窗口被打开后必须做的事情,即初始化工作。

接下来我们为窗口中的控件编写脚本,首先为数据窗口控件DW-1的鼠标单击事件编写脚本,脚本要达到的目的是当用鼠标单击数据窗口控件DW-1中显示出来的某条记录时,关于这条记录的详细信息将显示在数据窗口控件DW-2中。鼠标右击数据窗口控件DW-1,在弹出的菜单中选择SCRIPT菜单项,系统弹出编写脚本的窗口,从SELECT EVENT下拉列表框中选择事件为CLICKED,然后在工作区中输入如下脚本:

int recordnumber

int currentnumber

recordnumber=dw_1.getclickedrow()

if recordnumber=0 then

messagebox( "this is a message","not valid row, please close this dialog and click a valid row in dw_1")

else

correntnumber=dw_1.getitemnumber(recordnumber,1)

dw_2.retrieve(currentnumber)

end if

这是一段很重要的脚本,深刻理解这段脚本对你以后的编程会有很大的帮助的。脚本的前两行是定义了两个整型的变量,第三行脚本的意思获取被用户用鼠标单击的那行记录的行号,也就是第几个记录,并把这个值放在变量RECORDNUMBER中,如果用户虽然单击了数据窗口控件DW-1,但单击的是没有数据的地方,这时函数返回的行号就为零,表示用户单击的不是一条有效的记录。从第四条语句一直到最后是一个IF条件语句,它的作用是判断用户单击的是否是一条有效的记录行,如果不是的就弹出一个对话框告诉用户刚才单击的不是一条有效的记录行,并让用户关闭这个对话框后在数据窗口控件DW-1中单击选中一个有效的记录行。如果IF条件语句判断用户单击的是一条有效的记录行,就从这行所对应的记录中取出第一个字段NUMBER的值,并把这个值放入变量CURRENTNUMBER中,然后把变量CURRENTNUMBER作为数据窗口控件DW-2所联结的数据窗口对象TELE-DATAWINDOW2定义时的搜索参数的值,使用RETRIEVE函数把对应的记录从数据库中取出来显示在数据窗口控件DW-2中。可以看出这段脚本实现了两个数据窗口之间的简单通讯。

接下来我们为窗口中最下面的四个命令按钮分别编写脚本。首先看“插入”按钮,用和前面类似的方法打开“插入”按钮的事件编写窗口,选中CLICKED事件,开始输入下面的脚本:

dw_2.reset( )

dw_2.insertrow(0)

这段脚本只有两句第一条语句的意思是清除数据窗口控件DW-2中的已有记录,即使得数据窗口控件中没有任何内容。第二条语句的作用是向数据窗口控件所联结的数据窗口对象中加入一条新的记录。

再为“删除”按钮编写脚本,用和前面类似的方法打开“删除”按钮的事件编写窗口,选中CLICKED事件,始输入下面的脚本:

dw_2.deleterow(0)

这段脚本就一条语句,它的作用是调用PowerBuilder提供的函数DELETEROW来删除数据窗口中的一行记录,这里函数中的参数0表示将被删除的是当前行的记录。

接着为“更新”按钮编写脚本,,打开“更新”按钮的事件编写窗口,选中CLICKED事件,开始输入下面的脚本:

if dw_2.update( )=1 then

commit;

dw_1.retrieve( )

else

rollback;

end if

这段脚本是一条完整的条件语句,首先使用UPDATE函数根据数据窗口控件DW-2所联结的数据窗口对象的变化真正地修改数据库,然后判断修改是否成功,如果成功的话就提交结果并让数据窗口控件DW-1所联结的数据窗口对象重新从数据库中取得数据,以使得数据窗口中的数据能和数据库中的数据保持一致,如果条件语句判断出修改失败的话就使用ROLLBACK语句使得数据库恢复到修改以前的状态。

最后我们来编写 “关闭”按钮的脚本,这个按钮的作用是用来关闭我们的应用程序,打开“关闭”按钮的脚本编写窗口,选中CLICKED事件,开始输入下面的脚本:

close(parent)

这段脚本的意思是关闭命令按钮所在的父窗口。

到目前为止,我们的应用程序就完成了对象的创建和应用程序脚本的编写接下来将运行这个应用程序,来验证它是否和我们需要的结果一致。

 
 

上一篇:循序渐进学习Power Builder 6.0(2-1-3)  下一篇:循序渐进学习Power Builder 6.0(2-4)