PB基础

找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、              主要语法单元

条件判断

if 怎样    then

        怎样做

        else if 怎样 then

        怎样做

end if
 choose case 变量

 case is <3

 case 4 to 7

 case else

     …

end choose
 

 

 

 

 

 

       循环到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语句帮助中的已够用,详细讲太多,恕不赘述。

2002-7-14

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PB 编程技巧100例(CHM) Table (20)PB修改数据库表结构的技巧 李清 System (19)用PB5设计串口通讯程序 王学军 TreeView (18)在PB的TreeView控件中实现自动查询 周剑峰 Datawindow (17)PowerBuilder数据窗口编程技巧十则 蔡伟龙 System (16)如何在POWER BUILDER中使用WINSOCK控件 达伟春 OTHER (15)在PB打印中实现人民币大写 侯晓伟 MENU (14)用PB做一个通用右键菜单 田俊国 SQL (13)SQL基础 System (12)用PowerBuilder开发多媒体播放器 河北 黄万璞 控件 (11)动态创建可视控件的基本方法 鹿寒 WEB (10) 用PowerBuilder创建Internet应用 Sybase 软件(北京)有限公司 霍军 SQL (9)同时访问多个数据库 大庆石化总厂信息中心 (邮编163714) 李畅 System (8)如何在PB中使用OCX控件? 陶清网站 Datawindow (7)美化DataWindow的显示效果 程序中心PB站 Datawindow (6)当Retrieve时不清除原有Datawindow数据 程序中心PB站 Datawindow (5)当表(Table)的定义发生改变以后同步DataWindow columns 程序中心PB站 Datawindow (4)在表格(Grid)风格的DataWindow放入标题 程序中心PB站 Datawindow (3)使用Line建立漂亮的Grid DataWindow的技巧 程序中心PB站 System (2)使Sybase SQL Anywhere的启动窗口不出现在任务栏 程序中心PBSQL (1)使用SQL产生BCP命令快速备份/恢复你所有数据 (仅用于Sybase和MS SQL Server数据库) 程序中心PB

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值