powerbuilder学习笔记


PowerBuilder10.5学习

在应用程序的open()事件中写初始化内容(数据库连接)
在应用程序的close()事件中写退出及销毁(如断开数据库连接)
不同类型变量的转换需要进行显示的转换

反选:
rb_1.checked = NOT rb_1.checked


弹出消息窗口函数
messagebox("提示信息","弹出的显示信息")
if messagebox("提示","是否退出",Question!,YesNo!,2) = 2 then ... end if
扩展:
messagebox的第三,四个参数分别为ico图标,按钮形式,其中
ico可为:Information!(Default),StopSign!,Exclamation!,Question!,None!
按钮形式可为:OK!(Default),OKCancel!,YesNo!,YesNoCancel!,RetryCancel!,AbortRetryIgnore!

公用的退出系统函数可写在主窗口的closequery()方法中,内容如下:
if messagebox("提示","是否确认退出",Information!,OKCancel!,2) = 2 then
return -1 //终止关闭主窗口的操作
end if


创建自定义函数
File -> New ->PB Object -> Function


打开窗口
open(窗口名称)

打开子窗口
opensheet(子窗口名称, 父窗口名称, 2, Original! )

关闭窗口
close(窗口名称)

关闭子窗口
close(parent)

给菜单加上命令
在菜单指定项上点击右键选择"Script",然后在下方的窗口中输入
要执行的代码

代码注释
选择要注释的代码点击右键,选择"Comment Selection"

设置SQL语句是否自动提交
SQLCA.AutoCommit = True

设置连接参数
SQLCA.DBParm = "ConnectString='DSN=house数据源;UID=dba;PWD=sql'"

判断数据库连接是否成功
CONNECT USING SQLCA
if SQLCA.SQLCODE <> 0 then
messagebox("提示“,"连接失败")
return;
end if

将数据窗口对象与数据存储对象关联起来
dw_1.DataObject = 'd_user'

给数据窗口载入数据
datawindow.settransobject(sqlca)
datawindow.retrieve(sqlca)

更新数据窗口数据
if dw_1.update() <> 1 then
MessageBox("提示信息","数据更新失败,请检查")
return
else
MessageBox("提示信息","数据更新成功!")
end if

删除数据窗口数据
currnum = dw_1.getrow()
if dw_1.deleterow(currnum) <> 1 then
MessageBox("Info","删除记录失败,请检查。")
else
MessageBox("Info","记录删除成功。")
end if

检索数据
dw_1.retrieve()

插入一行
dw_1.insertrow(0) //插入行尾
在指定行号插入一行
dw_1.insertrow(行号)

更新一行
dw_1.update()
得到当前选择行号
dw_1.getrow()
设置选中指定行
dw_1.selectrow(行号,true)
得到总行数
dw_1.rowcount()
设置某行的值
dw_1.setitem(当前行号,列号,值)
得到某行的值
dw_1.getitemstring(number/date)(当前行号,列名)
删除某列
dw_1.deleterow(行号)

数据库操作基本的流程:
connect到数据库,
利用DataObject属性将数据窗口控件和数据窗口对象进行关联 (dw_1.DataObject='d_another')
利用SetTransObject()或SetTrans()将数据窗口控件和事务对象关联

用Retrieve()检索数据并载入数据窗口

创建不同的事务对象,来连接不同的数据库
Transaction DBTrans = CREATE transaction
使用CREATE创建的事务对象,需用DESTROY删除该对象
某个数据库连接不再使用时,应及时使用DISCONNECT断开数据库连接

将dataWindow中的数据导出保存到excel中
if( datawindow.saveasascii("d:\user.xls")=1 then
messagebox("info","import ok")
else
messagebox("info","import error")
end if


设置查询条件
//filter为查询条件语句
datawindow.setfilter(filter)
datawindow.filter()

断开数据库连接
DISCONNECT USING SQLCA

设置按钮变灰
button.enabled = false
恢复按钮可操作
button.enabled = true

创建浮动式菜单
//创建菜单对象
w_menu tmpmenu
tmpmenu = create w_menu
//设置菜单弹出位置
tmpmenu.PopMenu(PointerX(), PointerY())

PB标识符命名规则:
必须以字母或下划线开头
可以是字母,数字及一些特殊符号组成
不能使用PowerScript保留字
不区分大小写
最长不能超过40个字符,中间不能有空格



PHP中的部分特殊字符对应
换行符:~n 制表符(Tab): ~t 垂直制表符: ~v
回车:~r 换页符:~f 退格符:~b
双引号:~" 单引号:~' 代字符:~~
十进制表示的ASCII符:~000到~255
十六进制表示的ASCII符:~h01到~hff
八进制表示的ASCII符:~o000到~o377

pb的空值与空字符串,零值,及日期00-00-00的意义完全不同
空值赋值方式:1.从数据库中读取到空值;2.使用setnull()函数赋值
可使用isnull()函数来测试是否为空值,但不能使用关系表达式

程序中访问对象的函数与事件格式:
{objectname.}{type}{calltype}{when}functionname({argumentlist})

PB的数据类型
Blob: 二进制大对象,用于存储没有固定长度的大数据
Boolean:布尔值 Char或character: 单个ASCII字符
Date和Datetime类型
Decimal或dec: 带符号的十进制小数,小数位数最多18位
Double: 带浮点的浮点数,精度为15
Integer或int:16位带符号整型,范围:-32768到+32767
Long: 32位带符号整型
Real: 带符号的浮点数
String:字符串
Time: 24小时的时间
Unsignedinteger,unsignedint或uint: 16位无符号整数
Unsignedlong或ulong: 32位无符号整数

调用外部函数(如保存在DLL中的函数)
带返回值的外部函数语法:
{access} FUNCTION returndatatype name({{REF}datatype1 arg1,...}) LIBRARY "libname" ALIASFOR "extname"
{access} FUNCTION name({{REF}datatype1 arg1,...}) LIBRARY "libname" ALIASFOR "extname"

PB调用数据库的存储过程:
Object.function()
object是事务对象名,function是存储过程名
函数型存储过程说明语法:
FUNCTION returndatatype name({{REF}datatype1 arg1,…,{REF} datatypen argn}) RPCFUNC {ALIASFOR “spname”}
过程型存储过程说明语法:
FUNCTION returndatatype name({{REF}datatype1 arg1,…,{REF}

datatypen argn}) RPCFUNC {ALIASFOR “spname”}

PHP变量作用域
全局变量:其作用域是整个应用程序
实例变量:某个特定对象的实例化
共享变量:与对象的某个特定实例相关联
局部变量:只能在相应的脚步程序里定义和使用的临时变量

逻辑运算符
NOT(逻辑反) if NOT a=00 then...
AND(逻辑与) if a>10 AND a<20 then...
OR(逻辑或) if a=10 OR a=20 then...

创建与释放对象实例
创建1:Ojbectvariable = CREATE objecttype
创建2:Ojbectvariable = create using objecttypestring
释放:Destroy objectvariabel

条件语句
1.if语句:
if condition1 then
action1
elseif condition2 then
action2
else
action3
end if
2.类似其他语言的switch
choose case testexpression
case expressionlist
statementblock
case expressionlist
statementblock
...
case else
statementblock
end choose
3.DO...LOOP循环(四种形式)
//先执行条件判断,再执行循环语句
DO UNTIL condition...LOOP //直到condition条件为真时退出循环
DO WHERE condition...LOOP //condition条件为false时退出循环
//先执行循环语句,再执行条件判断
DO...LOOP UNTIL condition //直到condition条件为真时退出循环
DO...LOOP WHERE condition //condition条件为false时退出循环
4.循环语句
FOR varname=start to end [STEP increment]
Statementblock
NEXT
可使用EXIT退出循环;CONTINUE则跳过循环下面的语句开始新的循环
嵌套循环
RETURN语句立即终止事件处理程序或函数的招待,把控制返回到调用程序,其语法格式为:
RETURN {expression}
Halt语句用于终止应用程序的执行,其语法为:Halt {close}

PB常用函数
IsNumber(String) 检测字符串变量的内容是否是数值
IsDate(String) 检测字符串变量的内容是否是有效日期
IsTime(String) 检测字符串变量的内容是否是有效时间
类型转换函数
Integer(String), Date(String), Real(String), Double(String), Long(String),Dec(String)
Open() 打开窗口
opensheet() 可设置打开子窗口
Close() 关闭窗口
Run() 在PB中运行任何其他的应用程序
SetFocus() 让对象得到输入焦点
RGB 颜色函数
setFocus() 设置获得焦点
Hide() 隐藏指定控件
Show() 指定控件被隐藏时显示该控件
TypeOf() 返回控件的类型

自定义函数:全局函数和对象级函数

服务器组件
应用对象,窗口对象,菜单对象,数据窗口对象,用户对象,其他对象

PB的注册表函数
RegistryGet() 用于从系统注册表中得到指定键的值
RegistrySet() 用于在系统注册表中设置或创建指定键,若不存在则建立并赋值
RegistryDelete()删除系统注册表中的一个键或键的某个键值
RegistryKeys() 从系统注册表中得到指定键的有效子键
RegistryValue() 从系统注册表中取得与指定键相关的

一组键名,即取值名列表。

控件的分类
激活动作 CummandButton,PictureButton,PictureHyperLink,StaticHyperLink,Tab,User Object
显示数据 ListBox,PictureListBox,DropDownListBox,DropDownPictureListBox,DataWindow,
StaticText,ListView,TreeView,RichTextEdit,Graph,Picture,ProgressBar,ScrollBar,
SingleLineEdit,MultiLineEdit,EditMask,Tab,UserObject,OLE
指示选择 RadioButton,CheckBox,TrackBar
修饰 Line,Rectanglt,RoundRectangle,Oval

PB部分事件
Constructor事件 在窗口的open事件发生之前触发
Destructor事件 在窗口的close事件发生之后触发
RButtonDown事件 当用户右击该控件时触发

PB的数据库操作
CONNECT 用于建立数据库连接
DISCONNECT 用于取消数据库连接
上面两个命令一般用在应用程序的开始和结束,即Application的Open和Close事件中。
COMMIT 用于确认提交结果,它是一个旧事务结束和一个新事务开始的界线。
ROLLBACK 在事务进程中发生某些错误,或需要中止事务,须用ROLLBACK命令回退事务
事务对象有一个AutoCommit属性,其值为真时,sql语句可自动执行并提交。

定义全局的继承类
global type w_emp from Window
......
end type
global w_emp w_emp

原则:
将常量和部分公用变量提取写入独立的公用文件


相关文档
最新文档