Database 版 (精华区)

发信人: zhaowei (小燕子), 信区: Database
标  题: 2.6 建立应用程序
发信站: 紫 丁 香 (Fri Jun 11 15:35:42 1999), 转信

我们还没有为程序编写代码,这种代码在PowerBuilder中被称为脚本,
PowerBuilder是一种基于面向对象的事件驱动机制开发工具,所以脚本也是针
对对象的事件来编写,接下来就为应用程序编写脚本。
    PowerBuilder应用程序的特点是从应用对象开始执行程序,所以我们首先
要做的是为应用对象的打开事件编写代码,单击POWERBAR工具条上的
APPLICATION画板按钮打开应用对象,然后单击PAINTERBAR工具条上的SCRIPT
画板按钮,系统弹出SCRIPT对话框用来为应用对象编写脚本,从SELECT EVENT
下拉列表框中选择OPEN事件,然后在工作区中输入如下脚本(图2-35):
SQLCA.DBMS=PROFILESTRING("PB.INI","DATABASE","DBMS","")
SQLCA.DBPRAM=PROFILESTRING("PB.INI","DATABSE","DBPRAM","")
OPEN(TELEPHONE-WINDOW1)
 
图2-35
    解释这段脚本前要先介绍事务对象的概念,这里的SQLCA就是一个系统自
动提供的缺省事物对象变量,SQLCA是一个全局变量,可以用在所有的窗口对
象中。事物对象的作用是为联结数据库提供有关的信息,以便可以从数据库中
获取需要的数据。这段脚本所做的工作是在应用对象启动后首先从POWERBUIDER
中存放与数据库有关信息的文件PB.INI中取得需要的值放入事物对象变量中,
然后打开TELEPHONE-WINDOW1窗口,以便用户从登录窗口输入正确的密码后可以
进入到个人通讯录管理系统。这里就为应用对象编写这三行代码。
    单击POWERBAR工具条上的WINDOW画板按钮,选择打开TELEPHONE-WINDOW1,
我们开始为它编写脚本,右键单击窗口上的OK按钮,首先在菜单中选择
PROPERTIES菜单项来修改OK控件的一个属性,在弹出的对话框中有一个DEFAULT
复选框,我们选中它(图2-36),这样在以后程序运行的时候按回车键的效果
和单击OK控件就一样了,单击OK关闭对话框,然后再次右键单击窗口上的OK按
钮,在菜单中选择SCRIPT菜单项开始为这个命令按钮的单击事件编写脚本,观
察窗口的标题确定目前选择的是命令按钮的CLICK事件后在工作区中输入以下的
脚本:
if  upper(trim(sle_1.text))="mypassword"  then
  open (telephone_window2)
  close(telephone_window1)
else 
  sle_1.setfocus()
end if
这段脚本所做的工作是当用户在打开的登录窗口中单击OK按钮的时候判断单行
编辑框中的字符串在去掉前后的空格符和整个转换成大写字符后是否为字符
串"MYPASSWORD",如果是的就打开我们在前面定义的第二个,也就是用来对个
人通讯录数据库进行操作的窗口,然后再关闭登录窗口, 如果输入的字符串
与设定的字符串"MYPASSWORD"不符的话就表示用户不能对通讯录数据库进行访
问,就把输入焦点切换到编辑框让用户重新输入正确的口令,这里我们把口令
设成了"MYPASSWORD",在实际应用中你可以换成一个自己的口令,这样可以保
证自己的数据库的安全性。
 图2-36
接下来我们为第二个建立的窗口,也就是真正对数据库进行操作的窗口编写脚
本,这里的脚本是真正完成对数据库中数据的修改。首先要为窗口的打开事件
编写脚本,也就是在窗口打开后需要干什么事。用类似打开第一个窗口的方法
打开第二个窗口,用鼠标右击窗口中的空白区域,在弹出的菜单中选中SCRIPT
菜单项,系统弹出一个用来为窗口本身所有可能的事件编写脚本的窗口,选
中窗口的打开事件后在窗口的工作区中输入如下脚本:
CONNECT;
DW-1.SETTRANSOBJECT(SQLCA)
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)
    这段脚本的意思是关闭命令按钮所在的父窗口。
    到目前为止,我们的应用程序就完成了对象的创建和应用程序脚本的编
写,接下来将运行这个应用程序,来验证它是否和我们需要的结果一致。

--
           --------------------------------
   我和一个朋友去散步,遇见一个漂亮的少妇带着一个小孩
平时极腼腆的朋友一改平日恹恹睡态,勇敢的走上前去,
亲切的看着那小孩说:多可爱的孩子啊,抬头看看少妇,
“还有孩子他妈!”
____________________

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.226.249]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.460毫秒