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

部分内容转载自张金柱

时间: 2024-10-19 00:43:35

PB编程基础知识汇总的相关文章

沉淀,再出发:Java基础知识汇总

沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的语法,对象的定义,类.接口.继承.静态.动态.重载.覆盖这些基本的概念和使用方法,到稍微高级一点的多线程,文件读写,网络编程,GUI使用,再到之后的反射机制.序列化.与数据库的结合等高级一点的用法,最后将设计模式应用其中,产生了一个个新的概念,比如Spring.Spring MVC.Hibernat

C++ 基础知识汇总 持续更新

摘录一些C++面试常考问题,写一些自己的理解,欢迎来摘果子. static关键字 用于声明静态对象: 静态函数只在本文件可见.(默认是extern的) 全局静态对象:全局静态对象,存储在全局/静态区,作用域整个程序,在程序结束才销毁: 局部静态对象:在函数内部加上static声明的变量,在首次调用时初始化,然后一直驻留在内存,作用域是该函数,可用于函数调用计数(primary有例子),程序结束释放: 静态数据成员:归属于类,类对象共享,类外初始化,类对象可访问: 静态函数成员:归属于类,只能访问

多线程编程基础知识

多线程编程基础知识 http://www.cnblogs.com/cy163/archive/2006/11/02/547428.html 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.因此掌握

C#——编程基础知识

编程基础知识适用于所有高级编程语言.学了C#的第一小节,又对这些基础知识梳理了一遍.感觉比学习VB的时候的理解好了很多.下面看图: 基础知识:数据类型,表达式,流程控制语句.一切皆在图中. 一直在做编织知识网的工作.自己真的是不撞南墙不回头啊.米老师早就说过:要记笔记,要少记笔记,多了没用,又不会回头看.可是自己看的时候完全相反了.依旧几乎全部是截图,总结的时候特别费劲儿.得浏览所有截图,然后在几乎与视频等量的信息里再找主题,找中心.可是苦不堪言啊.现在终于下定决心,不再截图了.虽然总是有那股冲

unix环境高级编程基础知识之第一篇

陆陆续续看完了圣经第一章,熟悉了unix的整个编程流程,c语言的用处在这里得到伸张. 从unix的体系结构,原来操作系统包括内核及一些其他软件,我们常常误称为linux内核为操作系统,这俨然成为一种共识.基本熟悉了shell的介绍,主流的是bash(Bourne-again shell),unix的文件的基本操作,出错处理,用户ID,信号(感觉类似windows的消息),时间值,最后还有系统调用和库函数的区别. 自己把这篇的所有代码用vim的敲完了,主要前期是熟悉unix的基本命令编程,大致了解

编程基础知识——C++能不能支持Java和ObjC的反射?

C++能不能支持Java和ObjC的反射? 要回答这个问题,首先我们要清楚什么是反射.什么是反射? 教科书的解释我就不说了,(^o^)其实我也记不得.实际开发应用的反射就是在没有某个类型的头文件或者类结构定义的情况下,存取这个类型的对象的成员字段的值,调用这个对象的成员函数(方法). 比如我有定义了一个类型 Class  A,里面有 a,b,c三个字段,有fun()函数.现在我手里只有一个 void* pA,注意它的类型只是一个void指针,我手里也没有Class的头文件,我要怎么样得到,a,b

Delphi基础知识汇总

☆Delphi基础数据类型 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 Shortint -128 .. 127 1 有符号8位 Smallint -32768 .. 32767 2 有符号16位 Longint -2147483648 .. 2147483647 4 有符号32位 Int64 -263 .. 263 8 有符号64位 Byt

编程基础知识——Java JNI开发流程(2)

android中使用jni调用本地C++库 android平台上的本地库文件后缀 .so.类似windows上的dll文件. 要在android上使用jni,首先需要下载android ndk. 操作步骤,正常建立android工程,然后在android工程那里右键,属性,选择Android Tools -> Add Native Support.就可以为android工程增加本地库支持. 添加支持后的android工程,会增加jni目录,C++代码就写在这个目录里. 新建一个类,并且使用nat

编程基础知识——java类加载

java类加载 先来看一段小程序: package com; public class Main1 { static { System.out.println("1111") ; } public static void main(String[] args) { System.out.println("2222") ; } } 输出结果为: 1111 2222 其中static的执行时机就是class被 classloader加载的时候执行. 这有什么用?看下面代