当前位置:文档之家› powerbuilder的各类操作

powerbuilder的各类操作

1.关闭Form窗体:Close(Parent);

2.打开Form窗体:Open(w_main);

3.Form窗体分类:
1)Main(主窗口)
主窗口是窗口对象的标准类型.它可以覆盖其他窗口,也可以被其他窗口所覆盖.主窗口是一种独立的窗口,不依赖于其他任何窗口,即其可以单独打开和关闭.
主窗口一般用于应用程序的主界面,或者MDI应用程序的工作表窗口.当创建一个新窗口时,其缺省的窗口类型即为主窗口.
2)Child(子窗口)
子窗口不能独立存在,必须从作为其父窗口的主窗口或弹出式窗口中打开,打开的位置相对于其父窗口而不是整个屏幕.子窗口仅可以在其父窗口内移动,当其一部分移出父窗口时,不显示该部分.
3)MDI Frame(多文档界面框架窗口)
4)MDI Frame with MicroHelp(带微帮助的多文档界面框架窗口)
5)Popup(弹出式窗口)
弹出式窗口从其父窗口或应用程序的Open事件中打开,并随父窗口关闭.弹出式窗口可以移到其父窗口的外面,但不能被父窗口覆盖.
6)Response(响应式窗口)
响应式窗口由其父窗口激活,一般要求用户输入信息.当其打开时,成为活动窗口.此时只有用户响应后方可关闭.否则不能切换到应用程序的其他窗口.


4.数据窗口的使用:
在窗体的Open事件中加入:
connect;
dw_1.settransobject(sqlca)
dw_1.retrieve()
注:
1)connect;该行语句表示使用PB缺省的对象SQLCA连接数据库.
2)dw_1.settransobject(sqlca)该行语句为dw_1数据控件指明数据窗口对象,应当从SQLCA事物对象中获取数据库的有关信息.
3)dw_1.retrieve()该行语句指定数据窗口对象要获取数据,应当执行创建数据窗口对象时所定义的SELECT语句.


5.在定义数据控件中的SELECT语句时,在WHERE中用到参数时:(步骤如下)
1)在主窗口的"Design"下拉菜单中选择"Retrieval Arguments"选项,显示"Specify Retrival Arguments"对话框;
2)在WHERE子句中使用上面定义的获取参数获取特定的记录,定义WHERE子句的步骤如:
一.激活WHERE子句窗口;
二.在Value项中输入参数名.注意在该参数前必须有一个":".冒号表明这是一个变量,可以在SQL语句中使用.
三.在程序运行时,可对该参数动态赋值:
connect;
dw_1.settransobject(sqlca);
dw_1.retrieve(参数名);


6.数据控件的增删改查基本操作:
1)增加记录:
dw_1.Reset();//清除数据窗口dw_1
dw_1.InsertRow(0);//在数据窗口中添加新的一行记录
2)删除记录:
dw_1.DeleteRow(0);//删除当前行
3)更新记录:
if dw_1.update()=1 then
COMMIT;

Else
ROLLBACK;

End if


7.菜单编项中关闭:
Close(ParentWindow);


8.创建应用程序的可执行文件:(步骤)
1)单击主窗口中工具栏的"NEW"按钮,打开"NEW"对话框,选择其中的"Project"(工程)选项卡.
2)选择"Application"图标,单击"OK"按钮,打开"Project"画板.
3)在"Executable File Name:"编辑框中键入可执行

文件的名称,或者单击该编辑框右边的浏览按钮,选择保存可执行文件的路径.
4)选择"Prompt For Overwrite"复选框和"Machine Code" 复选框.
5)单击主窗口工具栏的"Build"(创建)按钮,或者选择"Design"菜单中的"Build Project"选项,创建可执行文件.


9.游标的使用:
string id,name//定义变量
DECLARE idAndName CURSOR FOR//声明游标
SELECT DISTINCT id,name
from user
ORDER BY id asc;
OPEN idAndName;//打开游标
do//循环取值
fetch idAndName into:id,:name;
lb_1.additem(trim(id)+"|"+trim(name))
loop while sqlca.sqlcode=0;
close idAndName;


10.子数据控件的运行:
datawindowchild dw_child//定义子数据窗口
dw_1.getchild("dw_1",dw_child)//获取子数据窗口
connect;
dw_child.settransobject(sqlca)//运行子数据窗口
dw_child.retrieve(参数列表)


11.数据控件中控件的赋值:
dw_1.object.t_1.text="您好"//给数据控件中标签赋值

12.显示打印机选项:
printsetup()


13.事务对象:
是一个不可视的对象,驻留在内存中.事务对象包含了与数据库连接所必需的相关属性参数.在操纵数据库时,填写连接时所需的信息到该对象中,才可工作.当操作结束后,显示其返回值.
1)缺省事务对象SQLCA:
SQLCA(SQL Communication Area)即SQL通信区.SQLCA是不全局变量,可以在应用程序的任何事件中使用.应用程序开始运行时,SQLCA被自动创建.如果只用到一个事务对象,则可直接使用SQLCA.如果连接多个数据库,则需创建自己的事务对象.
创建事务对象:
Transaction First_trans
First_trans=Create Transaction
注:使用事务对象后,应在脚本中删除该对象.
Destroy First_trans
但:不必删除SQLCA对象,因为它是PB自动完成的.
2)事务对象的属性:
其属性共有15项,可分为两组,第1组用于设置数据库连接参数,包括DBMS,连接的数据库,服务器名等;第2组用于返回给用户的信息,如有关数据库的状态,执行命令等.
第1组属性中:
一.AutoCommit:布尔值,用于指定是否自动提交(Commit).当该值为True时,则每次操作数据库后自动提交,其缺省值为False.
二.Database:字符串型,当前事务对象所连接的数据库名.
三.DBMS:字符串型,当前PB所使用的数据库管理系统名,如Oracle,Sybase等.
四.DBParm:字符串型,DBMS所需的特定的连接参数.
五.DBPass:字符串型,连接数据库时所需的口令.
六.Lock:字符串型,数据库的隔离级别.
七.LogID:字符串型,用户登陆到数据库服务器的用户ID.
八.LogPass:字符串型,用户登录到数据库服务器所需的口令.
九.ServerName:字符串型,数据库服务器名.
十.UserID:字符串型,连接到数据库所需的用户名.
第2组为返回信息参数,其中:
一.SQLCode:长整型,返回用于判断SQL命令是否执行成功的代码:
0:表示操作成功.
-1:表示操作失败.
100:表示没有出错,但未检索到可用

数据.
二.SQLRows:长整型,返回受前面的SQL命令影响的行数.
三.SQLDBCode:长整型,返回数据库连接的错误代码.不同的DBMS返回的代码不同.
四.SQLErrText:字符串型,返回数据库连接的错误信息,该信息与SQLDBCode错误码相对应.
五.SQLReturnData:字符串型,返回DBMS指定的其他信息.
3)设置属性:
一.人工设置:
SQLCA.DBMS="ODBC"
SQLCA.Database="MyDB"
SQLCA.LogID="HCS"
SQLCA.LogPass="MyPassWord"
SQLCA.ServerName="Sea"
SQLCA.AutoCommit=False
二.使用函数设置:
可以使用ProfileString()函数从系统的.INI文件中提取有关属性信息,将其赋值给事务对象.
ProfileString()函数的语法规则如下:
ProfileString(file,section,key,default)
其中:
file:指定文件名.
section:指定文件中某一节.
key:相应节的变量.
default:当所取值为空时,将该缺省值赋给相应的事务对象.
在PB.INI文件中的Database节中保存了上次应用程序与数据库连接时的连接属性.
下例从PB.INI文件中读取应用程序在上次数据库连接时所用的事务对象属性值.
SQLCA.DBMS=ProfileString("PB.INI","Database","DBMS","")
SQLCA.Database=ProfileString("PB.INI","Database","Database","")

SQLCA.LogID=ProfileString("PB.INI","Database","LogID","")

SQLCA.LogPass=ProfileString("PB.INI","Database","LogPass","")

SQLCA.ServerName=ProfileString("PB.INI","Database","ServerName","")

https://www.doczj.com/doc/6c15778729.html,erID=ProfileString("PB.INI","Database","UserId","")

SQLCA.DBPass=ProfileString("PB.INI","Database","DBPass","")

SQLCA.Lock=ProfileString("PB.INI","Database","Lock","")

SQLCA.DbParm=ProfileString("PB.INI","Database","DbParm","")



14.连接数据库:
1)建立连接:
连接数据库使用内嵌的SQL的CONNECT命令,其语法格式为:
connect(using TransactionObject);
因为CONNECT是SQL语句,所以在其结尾处要加一个分号,以示区别.参数"USING TranscationObject"是可选项,如果未指定使用的事务对象,PB认为使用的是缺省的事务对象SQLCA.一般情况下,即使使用SQLCA事务对象,也应该在脚本中使用USING子句,以便于阅读.
如:
CONNECT USING SQLCAT
该语句连接数据库,如下语句通过SQLCA的返回参数SQLCode的值判断连接是否成功.如果返回小于0,则为失败,并显示错误信息,然后使用Halt命令停止程序执行.
If SQLCA.SQLCode<0 then
MessageBox("Fail","Can`t Connect Database.")
Halt
End if
2)断开连接:
在访问数据库任务结束以后,应及时断开与数据库的连接,为此使用如下SQL语句:
Disconnect Using SQLCA;
if SQLCA.SQLCode<0 then
MessageBox("Fail","Can`t Disconnect Database")

Halt
End if
3)分配事务对象:
创建事务对象并与数据库连接之后,要使数据窗口控件可以访问数据库,还应当将该事务对象分配给数据窗口控件,为此使用SetTransObject函数,该函数的调用格式为:
dw_1.SetTransObject(Transaction)
其中:
dw_1:数据窗口控件名.
Transacti

on:缺省或用户定义的事务对象名.
该函数返回一个整型值,若调用成功,则返回1;若调用失败,则返回-1.
例:
Integer Tr_1
Tr_1=dw_1.SetTransObject(SQLCA)


15.缓冲区和可编辑控件函数
1)缓冲区
一.Primary Buffer(主缓冲区)
保存显示在数据窗口控件中的所有数据行以及数据行和各个列的状态信息.当调用数据检索函数Retrieve()检索数据时,检索到的数据保存在Primary Buffer中.当插入数据时,插入的数据也保存在其中.
二.Delete Buffer(删除缓冲区)
保存被删除的数据行.当调用DeleteRow()函数删除数据行时,被删除的数据行Primary Buffer 保存到Delete Buffer.
三.Filter Buffer(过滤缓冲区)
Filter Buffer用于保存被过滤的数据行.执行数据过滤命令后,被过滤掉的数据行保存到Filter Buffer中.
四.Original Buffer(原始缓冲区)
保存数据窗口从数据库中检查的原始数据.
在应用程序中可以调用数据窗口控件函数访问指定的缓冲区.
调用如下语句可以引用Delete Buffer:
String del_sex
del_sex=dw_1.GetItem(8,"sex",Delete!)
执行上述语句后,从Delete Buffer中提取第8行数据的Sex列的内容,将其赋值给定符串变量del_sex.


16.数据窗品控件可编辑控件的一些函数:
1)GetText()
获取可编辑控件中的数据.
2)AcceptText()
在数据窗口控件的LoseFocus事件中使用,其功能是检验可编辑控件中的文本数据后存入当前缓冲区.
3)SetText()
设置当前可编辑控件中的文本.


17.数据窗口控件的一些函数
1)Retrieve()函数
从数据库中检索数据并将其保存到数据窗口控件中显示,其调用格式如下:
dw_1.Retrieve({,参数1,参数2...})
Retrieve()函数常用于在连接数据库之后检索数据库中的数据,并将其显示在数据窗口中.例:
... ...
If SQLCA.SQLCode<0 then
MessageBox("失败","无法连接数据库")

Halt
End if


Integer retri_1
retri_1=dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
如果调用Retrieve()函数成功,则返回检索显示的记录行数,即主缓冲区中的数据行数;否则返回值为-1.
2)Update()函数
将数据窗口控件中数据的变化保存到数据库中,调用格式如下:
dw_1.Update({accept{,resetflag}})
其中参数accept是一个布尔值型的值.当取值为True时,表示在执行数据库更新之前调用函数AcceptText().参数resetflag也是布尔型的值.确定更新数据库操作后是否自动重置编辑状态标记.如果该函数调用成功,则返回值为1;否则返回值为-1.例:
integer upda_1
upda_1=dw_1.Update()
If upda_1=1 then
COMMIT;

ELSE
MessageBox("出现错误","无法保存数据库")

ROLLBACK;

End if
在上例中,首先调用Update()函数,然后检查其返回值.若返回值为1,则表示该函数调用成功,进一步调用COMMIT命令执行数据库的更新操作;否则执行ROLLBACK命令,取消Update()函数的结果,并显示错

误信息,通知用户.
由于COMMIT和ROLLBACK命令都是SQL命令,所以在执行后还可以通过检查SQLCode的值判断是否执行成功.
3)InsertRow()函数
在数据窗口的主缓冲区中插入一行空记录,格式如下:
dw_1.InsertRow(row)
其中参数row表示插入行前面一行的行号.当row的值为0时,则在数据窗口的最后一行插入一行空记录.
例:
dw_1.InsertRow(5)
表示在数据窗口的第6行插入一空行记录.
4)DeleteRow()函数
在数据窗口的主缓冲区中删除一行记录,并将该行记录移到删除缓冲区中.调用Update()函数之后,被删除的行才从数据库中实际删除.格式如下:
dw_1.DeleteRow(row)
参数row表示删除行的行号,为0时,表示要删除当前行.例:
dw_1.DeleteRow(3)
表示在数据窗口中删除第3行.
5)ScrolltoRow()函数
将当前行改变到参数row指定的行号.格式:
dw_1.ScrolltoRow(row)
例:
dw_1.ScrolltoRow(7)
将数据窗口的当前行改变到第7行.
6)GetRow()函数
返回当前行号,格式:
dw_1.GetRow()
7)GetColumn()函数
返回当前列号,格式:
dw_1.GetColumn()
8)GetItem()函数
从指定的行,列中提取数据.对于行,列不同数据类型,都有一个相应类型的GetItem()函数完成相应的功能,如GetItemDate(),GetItemnumber(),GetItemString()等.
以GetItemDate()函数为例,其格式:
dw_1.GetItemDate(row,column)
其中参数row,column分别为行,列号,也可以为行,列名的字符串.如:
String txlu_name
Number txlu_number
txlu_name=GetItemString(8,"Name")
txlu_number=GetItemNumber(4,"Number")
9)SetItem()函数
为数据窗口中指定的行,列的字段赋值,格式:
dw_1.SetItem(row,column,value)
其中参数row,column分别为行,列号,也可以为行,列的字符串.
10)SetSort()函数与Sort()函数
排序当前数据窗口中的数据,前者用于指定排序的列及排序标准,而后者执行排序操作.
SetSort()函数的格式:
dw_1.SetSort(format)
其中参数format是用于表示排序标准的字符串,它可以引用列名和排序标准.列名必须放在单引号内,而排序标准用字母A和D表示,其中A表示升序,D表示降序.例:
dw_1.SetSort("'txlu_id'A")
dw_1.Sort()
11)SetFilter()函数与Filter()函数
过滤数据窗口的数据,前一个函数用于指定过滤标准,而后一个函数执行过滤操作.
SetFilter()函数的格式:
dw_1.SetFilter(format)
其中参数format用于指定过滤条件表达式,例:
dw_1.SetFilter("emp_number>45 or emp_sex='F'")
dw_1.Filter()
上述代码过滤出编号大于45,以及性别为女的人员.

相关主题
文本预览
相关文档 最新文档