【PB】PB编程通俗快速入手

第一章   一般使用

1、程序的开始,application的open事件。

退出程序例程:(halt为退出函数)

int SureQuit

SureQuit = 2

SureQuit=Messagebox("退出系统","退出前请确认已保存好数据",Question!,OKCancel!, 2)

if SureQuit = 1 then halt

2、变量定义有效范围:

◎declare-globe 全局变量,整个程序均有效

◎declare-instance 局部变量,可在一个对象中有效(如:窗体,APP等)

◎模块中定义的变量,可在当前模块中有效

定义:(PB中大小写不敏感)

constant string LS_HOMECITY = "Boston"  //常量

int a                      //整型

char c                   //字符型

Boolean b              //布尔型

String a                 //字符串型

String a[1000]        //1000的数组,0~1000

String a[3 to 30]     //数组元素为3到30,最初一个为a[3],最后一个为a[30]

String a [100,3to 30]  //二维数组,一维为0~100,二维为3 到30

String a[]               //变长数组,赋值时(如a[30]=333)自动分配内存。

得到上界UPPERBOUND,下界LOWERBOUND。

操作:

a=”aaaa”+”vvvbb”+b+c

string(b)  //将B转换成字符串型

integer(“333333333333”) //将“333333333333”字符串转换成数333333333333

a=a+b*c^d/e\f%g  //注意:减号前后要空格,用于避免PB7.0之前版本的BUG。

3、函数定义:

第一行是返回类型和函数名,第二行是变量类型和变量名,tab键加形参。

Return 是函数的返回,同时如C语言一样,return则函数运行结束

4、打开窗口

open(窗口名)

openwithparm(窗口名,参数,父窗口<仅对子窗体和弹出窗体有效>)

5、MDI窗体中打开子窗体

层叠样式打开 opensheet(子窗体,父窗体名,1,layered!)

平铺样式打开 opensheet(子窗体,父窗体名,1, Original!)

如果在父窗体的窗体级函数下编写,可用 opensheet(子窗体,this,1, Original!)

第三个参数表示新开窗体在父窗体菜单中的位置。

6、控件基本属性

控件名.x         //x坐标

控件名.y          //Y坐标

控件名.width    //宽

控件名.height   //高……                   (其他可参见编辑器中的属性窗口)

7、调整窗体模式

this.windowstate=maximized!             

窗体.windowstate=maximized!            窗体最大化(其他可参见编辑器中的属性窗口)

8、INI文件读取及写入

【举例】有名为“MNR.INI”的ini文件,(路径在程序所在目录)有数据如下:

[ACTION]

PRELOAD=YES

可以用如下语句读取:

a=ProfileString("MNR.INI","ACTION","PRELOAD","aaa")

a为变量,”aaa”为无此数据项时默认数据

可以用如下语句写入(写入值为yes):

setprofilestring("MNR.INI","ACTION","PRELOAD","YES")

9、  对于整个程序中都要用到的变量

可以先定义一个结构,再在globe declare中定义该结构类型变量,管理起来方便些

10、主要语法单元

A、条件判断           

if 怎样 then

怎样做

else if 怎样 then

怎样做

end if

choose case 变量

case is <3

case 4 to 7

case else

end choose

B、循环到A大于5 

DO

A=a+1

LOOP UNTIL A > 5

DO WHILE A <= 5

A = A + 1

LOOP

DO

A=a+1

LOOP UNTIL A > 5

DO UNTIL A > 5

A = A + 1

LOOP

跳出循环EXIT,继续下一轮循环CONTINUE

11、消息框

messagebox(标题,信息)                   其他看帮助,查索引messagebox

12、取得当前时间now()

sle_begintime.text=string(now(),"yyyy-mm-dd 10:00:00")

如现在是 2002-7-14 17:22:21秒,则输出为 2002-7-14 10:00:00

13、列表框应用

DDLB_BSC.RESET()  //清空列表框内容

I=1

DO WHILE I<=UpperBound(WINBSC)

       IF WINBSC[I]="" THEN EXIT;

       DDLB_BSC.ADDITEM(WINBSC[I])          增加内容项到列表框

       I=I+1

LOOP

第二章   应用数据库

1、datawindow控件的使用

先创建一个datawindow对象dw_hwtj,再在窗体中添加一个datawindow控件dw_rep,最后将datawindow的dataobject属性设置成dw_hwtj。

a)我写的选行函数,datawindow控件的click事件上用

if row=0 then return

if nowrow<>row and nowrow>=0 then

       THIS.SELECTROW(nowROW,false)

end if

THIS.SELECTROW(ROW,TRUE)

nowrow=row

b)我写的排序函数,在datawindow控件的双击事件上用

IF dwo.Type = "column" THEN

ls_columnname = dwo.Name

END IF

if nowstate='A' then

       THIS.SETSORT(ls_columnname+" D")

       NOWSTATE='D'

ELSE

       THIS.SETSORT(ls_columnname+" A")

       NOWSTATE='A'

END IF

THIS.SORT()

(效果,在某一列上双击一次,正向排序,再一次,反向排序)

c)规定排序

dw_rep.setsort("BSCMC A,XQH A,xqmc A")

dw_rep.sort()

(先按BSCMC,再按XQH,再按xqmc正向排序)

d)保存到xls文件

dw_rep.saveas('',Excel5!,true)

e)读写:

写w_netrep_cell.dw_rep.object.tchpzzs[I] =a

读a=w_netrep_cell.dw_rep.object.tchpzzs[I]

2、  建立与数据库的连接

1)定义

transaction localdb

2)设置

MyTrans.DBMS=”as”

MyTrans.Database=”sda”

MyTrans.LogPass=”def”

MyTrans.ServerName=”dbo”

MyTrans.LogID=”abc”

MyTrans.DBParm=””

MyTrans.Lock=””

MyTrans.UserID=”abc”

MyTrans.AutoCommit   =true

3)连接

连接       connect using localdb;

断开       disconnect using localdb;

4)从库中查询多行数据:(查询语句被固化)

connect using localdb;                                             //连接

if localdb.SQLCODE<0 then

       Messagebox("连接本地数据库失败...",localdb.sqlerrtext)

       return 1

end if

DECLARE MY_CURSOR CURSOR FOR                                //定义游标

SELECT BSC from BSC ORDER BY BSC USING LOCALDB;  //执行查询

I=1;

OPEN MY_CURSOR;                                                            //打开游标

DO WHILE NOT LOCALDB.SQLCODE = 100                 //直到结束

       IF I>UpperBound(WINBSC) THEN EXIT

       FETCH MY_CURSOR INTO :WINBSC[I];                //提取数据项

       I=I+1

LOOP

CLOSE MY_CURSOR;                                     //关闭游标

disconnect using localdb;                                  //断开

5)从库中查询一行数据:(查询语句被固化)HELP中例程,“:“后加一个字符串是指标志为该字符串的变量

SELECT employee.Emp_LName, employee.Emp_FName

INTO :Emp_lname, :Emp_fname

FROM Employee

WHERE Employee.Emp_nbr = :Emp_num

USING Emp_tran ;

6)在数据更新,删除,增加,建表等操作中使用的:

注意查阅:Dynamic SQL Format 1 statement  ……Dynamic SQL Format 4 statement,其中讲得很清楚(看sample)

直接执行一条语句:

EXECUTE IMMEDIATE SQLStatement      {USING TransactionObject} ;

HELP中讲得很清楚,这里就不多讲了。

7)非固化的查询语句:这个对提高软件灵活性很重要,但很简单,只贴上HELP中的SAMPLE一个:

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA

string sql1, sql2

sql1 = "SELECT emp_id FROM department WHERE salary > 90000"

sql2 = "SELECT emp_id FROM department &    //这是分行连接符号,空格后一个&符号

WHERE salary > 20000"

IF deptId = 200 then

       PREPARE SQLSA FROM :sql1 USING SQLCA ;

ELSE

       PREPARE SQLSA FROM :sql2 USING SQLCA ;

END IF

OPEN DYNAMIC my_cursor ;

小结:

内容不多,但主要的东西都在这里了,其他的要在实践中领会,这些知识对上手和标准的MIS系统等开发,知识面及深度已经足够了。SQL语句帮助中的已够用,详细讲太多,恕不赘述。

《PowerBuilder 9.0进阶开发篇》(实例与技巧篇)配书光盘使用说明 本光盘内容为本书所有实例的源代码。如下: 第1章 窗口、控件与界面 1.1 类Outlook工具栏界面实现 -- Outlook 1.2 制作Splash窗口 -- Splash 1.3 制作美观的状态条 -- StatusBar 1.4 创建图标栏应用 -- Systray 1.5 MDI窗口显示背景图片 -- MDIBmp 1.6 窗口中控件显示ToolTips -- ToolTips 1.7 打造不一样的命令按钮 -- PictureButton 1.8 透明文本的实现 -- TransparentST 1.9 导航图界面的制作 -- FlowChat 1.10 制作图文并茂的菜单 -- BmpMenu 1.11 窗口内控件大小与窗口大小同步 -- Autosize 1.12 动态创建控件 -- DynamicControl 1.13 控件融合技术 -- SplitBar 第2章 数据窗口 2.1 数据窗口PDF格式文档输出 -- PDF 2.2 数据窗口组合条件查询 -- Query 2.3 数据窗口通用排序 -- UniversalSort 2.4 数据窗口通用显示列定制窗口的实现 -- ColumnVisible 2.5 数据窗口中实现增量查询 -- zlcx 2.6 数据窗口的多表更新 -- UpdateMultable 2.7 单击标题栏对数据窗口排序 -- TitleSort 2.8 动态数据窗口 -- DynamicDataWindow 2.9 复合数据窗口 -- AddTitle 2.10 数据窗口打印处理 -- PrintPreview/PrintPreview3 (PrintPreview和PrintPreview3内容是相同的,但在实现上有些区别) 2.11 数据窗口统计图类型的动态改变 -- GraphType 2.12 数据窗口统计图数值动态显示的实现 -- GraphValue 2.13 数据窗口中按钮的封装 -- DwButton 第3章 PowerScript 3.2 实现客户端程序的自动升级 -- CSUPgrade 3.3 进制转换 -- NumberConvert 3.4 注册表函数应用 -- Regedit 3.5 人民币大写转换函数 -- AmountUppder 3.6 在应用程序中关闭外部程序 -- CloseApp 3.7 在应用程序中启动控制面板项目 -- RunControl 3.8 非Tab分隔符文本文件导入数据窗口 -- ImportFile 3.9 编译后的程序带参数运行 -- CommandParm 3.10 取当月的最后一天函数 -- GetLastDay 3.11 限制同一程序多次运行 -- OnlyOnce 本章所使用的资源文件 -- pic 第4章 数据库SQL 4.2 PowerBuilder + ASA8的C/S编程 -- Client-Server 4.4 动态SQL及其应用 -- DynamicSQL 4.5 存取二进制大对象 -- Blob 4.6 PowerBuilder应用取服务器时间 -- GetServerTime 4.7 PowerBuilder扩展属性系统表及其应用 -- SystemTable 4.8 连接任意ODBC数据源 -- ODBCList 4.9 可定制参数的数据库连接 -- ServerSet 第5章 打印专题 通用打印例子 -- Print 第6章 用户对象 6.1.1 创建定制的用户对象(创建弹压式按钮) -- ToggleButton 6.1.2 创建标准的可视用户对象(扩展的数据窗口) -- Datawindow 6.1.3 创建可视外部用户对象(状态条) -- StatusBar 6.2.2 创建通用不可视用户对象(FTP应用) -- Ftp 第7章 API 7.2.1 改变窗口的显示风格 -- ChangeWindow 7.2.2 使窗口的图片透明化 -- TransWindow 7.2.3 改变窗口的关闭形式 -- CloseStyle 7.2.4 PB中实现图形的复制与粘贴以及图像的简单处理 -- PictureBox 7.3.1 获得系统的内部进程 -- System Thread 7.3.2 获得系统基本信息 -- SystemInformation 7.4.1 检测物理网络的连通情况 -- Mping 7.4.2 关闭、重启、注销计算机 -- ExitWindow 7.5.1 使用Visual C++开发动态链接库 -- DllForPb9 7.5.2 使用Delphi开发动态链接库 -- SetScreen 7.5.3 使用Visual Basic开发ActiveX动态链接库 -- CPUInfo 第8章 pipeline 数据管道 -- pipeline 第9章 DDE、OLE、COM使用技术 9.1.3 DDE客户端实现步骤 -- DDE 9.2.5 不可视的OLE对象 -- pbtowordandexcel 9.2.6 ActiveX控件 -- Media 9.2.7 使用外部OLE控件处理数据库中的二进制数据 -- DBOLE 9.2.8 OLE精彩应用——开发具有XP风格的菜单 -- XPMenu 9.3.3 PowerBuilder中的COM组件实现 -- pb9com 第10章 编译发行 编译 -- TestInstall 第11章 Jaguar 包含开发Jaguar组件和调用Jaguar组件的两个例子的源程序 第12章 PBNI PBNI应用技术 -- PBNI 本光盘所收集内容的著作权为作者所有;作者授权清华大学出版社独家出版该光盘;清华大学出版社享有该光盘的专有出版权。 注意事项: 1. 第4章部分例程需要配置名为pbbook的ODBC数据源; 第5章例程需要配置名为PrintDB的ODBC数据源。 2. 某些例程可能会因环境原因而无法运行,但源代码可供参考。 3. 部分例程所在目录有说明文件,请注意阅读。 4. 如有疑问,欢迎到以下网站探讨: PB编程俱乐部 http://www.kejx.com 或 http://kjx.126.com 摆渡人工作室 http://www.pbsite.com 技术支持: 电 话:010-62791976-220或010-62791977-220(编辑部) 传 真:010-62788903 E-mail:kjx@163.com(柯建勋) ztao@pbsite.com(张涛) oyzx_sp@263.net(编辑) 通信地址:北京市清华大学校内金地公司 邮 编:100084
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值