PB_13第13章_游标

合集下载

关于pb的游标语法

关于pb的游标语法

关于pb的游标语法
PB(PowerBuilder)是一种用于开发企业级应用程序的集成开发环境(IDE)。

在PB中,游标用于处理数据库查询结果集。

下面是关于PB游标语法的一些详细信息:
1. 游标的声明和定义:
在PB中,可以使用DECLARE CURSOR语句来声明和定义游标。

例如:
DECLARE my_cursor CURSOR FOR SELECT * FROM my_table;
2. 游标的打开和关闭:
使用OPEN语句可以打开游标,并将其与查询结果集关联起来。

例如:
OPEN my_cursor;
使用CLOSE语句可以关闭游标,释放相关资源。

例如:
CLOSE my_cursor;
3. 游标的数据操作:
使用FETCH语句可以从游标中获取下一条记录。

例如:
FETCH my_cursor INTO :ls_column1, :ls_column2;
在FETCH语句中,:ls_column1和:ls_column2是变量,用于存储查询结果中的列值。

4. 游标的循环处理:
使用WHILE循环可以遍历游标中的所有记录。

例如:
WHILE SQLCA.SQLCODE = 0
FETCH my_cursor INTO :ls_column1, :ls_column2;
// 处理记录的逻辑代码
LOOP
在循环内部,可以对每条记录进行处理,直到游标中没有更多的记录。

以上是关于PB游标语法的一些基本信息。

请根据你的具体需求和场景,进一步提问,我将尽力提供更详细的回答。

PB教程——精选推荐

PB教程——精选推荐

PB教程POWERBUILDER教程第⼀章概述1.1特点1.事件驱动在事件驱动⽅式中,程序的运⾏没有固定的流程,程序的代码也是为各种可能发⽣的事件编写,当程序开始运⾏后,它可以接受来⾃系统、⽤户或其他应⽤程序触发的事件,然后执⾏事件代码。

建⽴窗⼝、控件和其他应⽤部件时都含有⼀组预定义的事件。

例如:clicked(单击),⽤户也可以定义⾃⼰的事件。

2.⾯向对象Windows应⽤程序中常见的窗⼝、菜单、控件在powerbuilder中都是⼀个个对象。

同时,也可以创建⾃⼰的⽤户对象。

每个对象都有⾃⾝的特征和⾏为(属性、事件和函数)。

Powerbuilder提供了基础类库PFC,它为应⽤程序开发提供了许多可重⽤的预定义类和对象,利⽤基本类库PFC可以快速开发⾼质量、重⽤好的应⽤程序。

3.Powerscript语⾔Powerbuilder中,所有的处理逻辑都是⽤powerscript语⾔编写,powerscript是PowerBuilder是专⽤语⾔。

4.强⼤的数据库窗⼝对象数据窗⼝对象是PowerBuilder中的⼀种对象类型,是专门为访问后台的数据库服务的,在数据窗⼝对象中可以定义数据的来源和数据的显⽰风格,这样在应⽤程序就可以把精⼒完全放在程序的流程控制上,⽽不⽤关⼼具体数据的来源。

如果需要使⽤数据库中不同的数据,也只要对数据窗⼝对象进⾏修改就可以。

5.其他特点⽀持internet、⽀持分布式应⽤、⽀持多平台、⽀持⼤多数关系型数据库(Sybase、MS SQLSERVER、ORACLE等等以及ODBC等其他数据源)等等1.2安装略注:升级⾄7.0111.3开发环境IDE1 菜单栏图标说明NewInheritOpenSelect applicationLibrary listTo-do-listBrowserLibraryDb profileDababaseEditRunDebugExit第⼀章库⽂件⼯具栏图标说明Create libraryEdit打开选择对象的属性窗⼝ExportImportDisplay current libraryClose第⼆章对象编辑⼯具栏图标说明选择并在当前对象中插⼊⼀个控件屏蔽当前选择脚本代码放开当前选择脚本代码编译当前对象第三章库⽂件编辑区第四章对象编辑区第五章Datawindow编辑器1.4 预备知识⼀个PowerBuilder应⽤程序⼀般由若⼲个窗⼝组成,每个窗⼝有若⼲个控件(如按钮、菜单、⽂本等),每个对象或控件都有若⼲个事件(如按钮的单击或双击等),每个事件将对应⼀段程序。

PB使用小技巧

PB使用小技巧

PB使用小技巧1. 如何使PB窗口总在最上层通过SetWindowPos函数把窗口的显示层次修改为HWND_TOPMOST,就可以使指定窗口永远不会被其他窗口覆盖,该函数声明为:Function Long SetWindowPos(Long hwnd, Long ord, Long x, Long y, Long dx, Long dy, Long uflag) Library “user32.dll”参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选项,其余参数指定窗口位置和大小,均可忽略。

在窗口的Open或Activate事件中加入如下函数调用:SetWindowPos(Handle(This),-1,0,0,0,0,3)参数2取-1表示在最顶层显示窗口,取1表示在最底层显示;最后一个参数若取1,表示窗口大小保持不变,取2表示保持位置不变,因此,取3(=1+2)表示大小和位置均保持不变,取0表示将窗口的大小和位置改变为指定值。

2. 在PB中如何获得光盘盘符通过GetDriveType函数可以获取驱动器(如:软驱、硬盘、光驱、网络映射驱动器等)的信息,该函数声明为:Function Unit GetDriveTypeA(String drive) Library “kernel32.dll”参数为一个盘符(如“C:”),返回值:1表示未知,2表示软驱,3表示本地硬盘,4表示网络驱动器,5表示光驱。

因此如下代码可以获得光盘的盘符:For I=Asc(‘D’) to Asc(‘Z’)//列举所有可能的CDROM的驱动器If GetDriveTypeA(Char(i)+”:”) = 5 Then//若找到CDROMMessagebox(“CDROM”,Char(i)+”:”)//显示光盘盘符Exit //退出循环End ifNext3. 在PB中如何获取目录信息(1)获取当前目录。

通过GetCurrentDirectory函数可以获取当前目录,该函数声明为:Function Ulong GetCurrentDirectory(Ulong buflen,ref String dir)Library “kernel32.dll”参数2为接受当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指定字符缓冲区的长度。

PB学习

PB学习

Pb1.B/S模式2.对象包括三方面:属性,事件,函数属性——规定了对象的特征;事件——说明对象相应什么样的操作;函数(方法)——封装对象的功能;3.PB主要包括的对象:应用对象,窗口对象,数据窗口对象,菜单,函数,查询,结构,用户对象,工程对象4.系统分析和系统设计——充分了解系统需求5.系统开发——创建对象,描述对象,设置属性建立应用对象;生成用户对象,函数和结构;建立窗口和菜单;创建数据窗口对象,将数据窗口对象连接到窗口上;编写各对象的事件处理程序;调试应用;测试系统;生成EXE文件。

6.PB与数据库的连接通过数据库接口来实现:ODBC接口,专用接口ODBC:开放式数据库互连标准接口,以关系数据库标准查询语言SQL来存取连接到的数据源专用接口:针对具体的数据库管理系统而设计,将PB连接到相应的数据库上。

ODBC接口(1)ODBC应用软件,包括用PB开发的应用程序调用ODBC函数,PB通过动态链接库PBODB60.DLL完成这一功能,对于开发人员来说,该过程是隐含的,由PB自动完成(2)驱动管理程序用ODBC.INI文件把数据源名映射成特定驱动程序的动态链接库处理几个ODBC初始化调用为每个驱动程序提供ODBC的入口点检验ODBC的调用参数和次序(3)驱动程序——处理ODBC函数调用,提交SQL请求到特定的数据源并把结果返回给应用程序。

(4)数据源——要存取的数据以及相关的操作系统,数据库管理系统和网络系统ODBC,PB访问数据库模式:PB应用程序——ODBC接口——数据库到网络的接口——网络——数据库到网络的接口——数据库服务器连接数据库(1)建立或配置与要连接的数据库对应的数据源ODBC数据源:应用ODBC配置面板;(2)建立数据库描述文件或设置连接参数。

(3)连接到ODBC数据库创建应用程序对象1.PB——应用对象代表应用程序,程序从应用对象开始运行,面向对象,用它开发的应用程序以对象和事件为基本特征。

深圳显控触摸屏用户手册

深圳显控触摸屏用户手册

深圳显控 SamDraw 组态软件
用户手册 V3.3
注意 (1) 未经同意,不得对本书的部分或全部内容进行转载、复制。 (2) 本手册的内容,包括规格会有所变动,恕不另行通知。 (3) 本书力求严谨,若您发现不明、错误之处,请与手册卷末公司地址联络,并告知手 册封面上的编号
关于商标等事项 ●Windows 是美国Microsoft 公司的注册商标。 ●可编程序控制器(PLC)名称为各公司的产品。
安全注意事项 在此将安全注意事项分为[危险]、[注意]两种。 危险:误操作会引起险情,有可能造成死亡或重伤。 注意:误操作会引起险情,有可能造成中度损伤或轻伤。 但标记为注意的事项在某种场合会造成严重事故。 请务必遵守记载事项。
警 告
● 在安装、拆卸、连接导线、保养或检测之前,请将电源关闭,否则会导致触电、误操 作或故障发生。 ● 请在触摸屏外部设置紧急停止回路、连锁装置等。否则触摸屏发生故障会引起机械损 坏或造成事故。 ● 通电时请不要触摸端子等有电部分。否则会引起触电。
注 意
● 请不要使用在开箱时发现已损坏或变形的产品,否则会导致故障或误操作。 ● 请不要使本机受到如坠落或翻倒等类似冲击,否则会造成产品损坏、故障。 ● 请在操作说明书及使用手册规定的环境下保管及使用。 在高温、多湿、结霜、灰尘、腐蚀性气体、油污、有机溶剂、润滑剂、大振动、冲击 等环境下保管及使用,有可能造成触电、火灾、误动作等故障。 ● 请在确保安全的情况下,在运行中传送画面数据。否则有可能因误操作造成机械破损 或故障。 ● 在软件工作中(与连接设备通讯)请不要关闭电源,否则会造成数据丢失、机器损坏 或故障。 ● 请在手册中规定的软件动作环境下使用及操作。否则会造成故障、误动作。 ● 确实连接通信电缆并紧固。否则有可能造成故障、误动作。

pb文档

pb文档

一.选择题(10分),每题选择一个正确答案填写在()中。

1.PB是()公司推出的的一种软件产品。

1)Borland 2)Sybase 3)oracle 4)Microsoft 2.数据窗口控件只显示()缓冲区中的数据。

1)primary buffer 2)original buffer 3)删除buffer 4)filter buffer3.Power脚本算术表达式a-=b+4等价于()。

1)a=1/(b+4) 2)a=-(b+4)3)a=a-(b+4) 4)a=(b+4)-a4.”boat”=”boAt”的结果是()。

1)true 2)false5.要删除一个不再使用的表时,在菜单中选择()操作。

1)删除table 2)clear table 3)drop table 4)close table6.编辑风格影响用户输入和修改数据的方法。

当在数据窗口中输入人员的性别时,宜选用()编辑风格。

1)Edit、2)EditMask、3)radiobutton、4)DropDownListBox 5 7.使用函数openwithparm(w_1,“李芳”)打开窗口w_1,在窗口w_1的open事件中应使用()语句编程,来接收参数“李芳”并将它显示在窗口w_1的单行编辑框sle_1中。

1)sle_1.text=w_1.stringparm 2)sle_1.text=message.parameter3)sle_1.text=message.stringparm 4)sle_text=message.parameter8.一个PowerBuilder应用程序必须具备的对象是()。

1)window对象2)datawindow 对象3)application对象4)pbl对象9.在定义数据窗口对象时,如果希望去除检索结果中的重复值,那么应从()菜单项进行操作。

1)“Design”菜单中选择Distinct 2)菜单中选unique 3) “rows” 菜单中选suppression repeating values 4) “Design”菜单中选择suppression repeating values10.在数据窗口画板中,如果想统一调整从数据库中检索出的数据的字体,可以从“Edit”菜单中选择“Select”菜单项,在系统弹出的级联菜单中,选()菜单项。

pb基本概念

pb基本概念

PB程序设计基本概念一、概念1、PowerBuilder是一种高效的客户/服务器模式以及分布式数据库应用程序的前端开发工具。

2、创建应用程序对象的方法有创建定制应用程序、创建模板应用程序、移植已有应用程序三种。

3、PowerBuilder的数据类型包括标准数据类型、枚举类型、系统对象数据类型三大类。

4、PowerBuilder的运算符有算术运算符、关系运算符、逻辑运算符、连接运算符四种。

5、PowerBuilder支持ODBC接口,使得可以访问所有关系型数据库。

6、窗口有主窗口、弹出式窗口、子窗口、响应式窗口、多文档窗口、带微帮助的多文档窗口等六种。

7、窗口的初始状态有最大化、最小化、正常大小三种。

8、命令按钮最常用的事件是Clicked事件,它是在按钮被单击时触发的。

9、菜单的类型分为下拉菜单、级联菜单、弹出式菜单三种。

10、游标是指查询的结果集。

11、应用对象:是一个应用程序的入口点,其中定义了一些应用程序级的事件、函数和属性。

12、主键:是表中唯一标识一个记录的列或列的组合,其值不能为空且必须唯一。

13、MDI窗口:是一种特殊风格的窗口,在其中可以打开多个工作窗口,给用户一个整体的感觉。

14、数据库描述文件:指明了使用哪个数据源,可以使开发人员在开发环境中操作数据库,在用户使用环境下不需要数据库描述文件。

15、数据窗口对象:是PowerBuilder最有特色的对象,用来对数据库的数据进行数据操作和数据检索。

16、用户对象:是指用户自己定义的封装了一组相关代码和属性,完成特定功能的可重用对象。

17、数据库画板:是专门用来管理数据库,包括创建和删除ASA数据库、连接数据库、定义ODBC数据源、创建和管理表及数据等的设计器。

18、数组:指一组相同数据类型的带下标的变量的集合。

19、数据管道:是在数据库内部、数据库之间,以及不同的数据库管理系统之间快速复制数据的对象。

20、工程对象:是将应用程序编译成可执行文件的一个对象。

pb错误代码详解

pb错误代码详解

pb错误代码详解pb错误代码详解2010-07-20 11:02string ls_msg choose caseerror.number case 1//by zero ls_msg="发生被0除错误"case 2//2 Null object reference ls_msg="空对象引用"case 3//3 Array boundary exceeded ls_msg="数组越界"case 4//4 Enumerated value is out of range for function ls_msg="枚举值超出函数的范围"case 5//5 Negative value encountered in function ls_msg="函数中遇到负数"case 6//6 Invalid DataWindow row/column specified ls_msg="数据窗口的列或行非法"case 7//7 Unresolvable external when linking reference ls_msg="链接调用时不能解决外部对象"case 8//8 Reference of array with null subscript ls_msg="使用空下标引用数组"case 9//9 DLL function not found in current application ls_msg="当前应用中没有找到动态链接库的函数"case 10//10 Unsupported argument type in DLL function ls_msg="使用了动态链接库函数不支持的参数类型"case 11//11 Object file is out of date and must be converted to current version ls_msg="对象文件已经过时并且必须使用当前的版本"case 12//12 DataWindow column type does not match GetItem typels_msg="数据窗口的列的数据类型与GetItem函数的类型不符"case 13//13 Unresolved property reference ls_msg="属性引用尚未解决"case 14//14 Error opening DLL library for external functionls_msg="为外部函数调用而打开动态链接库时发生错误"case 15//15 Error calling external function name ls_msg="调用外部函数时发生错误"case 16//16 Maximum string size exceeded ls_msg="字符串长度超越了最大限制"case 17//17 DataWindow referenced in DataWindow object does not exist ls_msg="数据窗口引用的数据窗口对象不存在"case 18//18 Function doesn't return value ls_msg="函数没有返回值(应该有而没有)"case 19//19 Cannot convert name in Any variable to name ls_msg="不能转换Any类型的变量到另一个类型"case 20//20 Database command has not been successfully prepared ls_msg="数据库命令没有成功准备"case 21//21 Bad runtime function reference ls_msg="引用了错误的运行时函数"case 22//22 Unknown object type ls_msg="不知道的对象类型"case 23//23 Cannot assign object of type name to variable of type name ls_msg="不能将对象赋给变量,两种类型不能赋值"case 24//24 Function call doesn't match its definition ls_msg="函数调用格式与其定义不一致"case 25//25 Double or Real expression has overflowed ls_msg="双精度型或实型表达式溢出"case 26//26 Field name assignment not suppo rted ls_msg="不支持这种字段赋值"case 27//27 Cannot take anegative to anoninteger power ls_msg="不能计算一个负数的非整数次方"case 28//28 VBX Error:name ls_msg="VBX错误"case 29//29 Nonarray expected in ANY variable ls_msg="ANY类型变量期待非数组类型"case 30//30 External object does not support data type namels_msg="外部对象不支持这种变量类型"case 31//31 External object data type name not supported ls_msg="外部对象的数据类型不支持"case 32//32 Name not found calling external object function name ls_msg="调用外部对象函数时函数名称没有找到"case 33//33 Invalid parameter type calling external object function name ls_msg="调用外部对象函数时使用了错误的参数类型"case 34//34 Incorrect number of parameters calling external object function name ls_msg="调用外部对象函数时使用的参数个数不对"case 35//35 Error calling external object function name ls_msg="调用外部对象的函数错误"case 36//36 Name not found accessing external object property name ls_msg="访问外部对象属性时属性名称没有找到"case 37//37 Type mismatch accessing external object property name ls_msg="访问外部对象属性时使用了不匹配的类型"case 38//38 Incorrect numb er of subscripts accessing external object property name ls_msg="访问外部对象属性时使用了错误的下标"case 39//39 Error accessing external object property namels_msg="访问外部对象的属性错误"case 40//40 Mismatched ANY data types in expression ls_msg="表达式中ANY数据类型不匹配"case 41//41 Illegal ANY data type in expression ls_msg="表达式中使用了非法的ANY数据类型"case 42//42 Specified argument type differs from required argument type at runtime in DLL function name ls_msg="指定的参数类型与动态链接库中的函数所需要的参数类型不一致"case 43//43 Parent object doesn't exist ls_msg="父对象不存在"case 44//44 Function has conflicting argument or return type in ancestor ls_msg="函数与祖先的参数或返回值冲突"case 45//45 Internal table overflow;maximum number of objects exceeded ls_msg="内部表溢出;对象的最大数目已经超越"case 46//46 Null object reference cannot be assigned or passed to avariable of this type ls_msg="空对象引用不能赋值或传递给一个这种类型的变量"case 47//47 Array expected in ANY variable ls_msg="ANY类型期待数组"case 48//48 Size mismatch in array to object conversion ls_msg="将数组转换成对象时数组的大小不匹配"case 49//49 Type mismatch in array to object conversion ls_msg="将数组转换成对象不匹配"case 50//50 Distributed Service Error ls_msg="分布式服务错误"case 51//51 Bad argument list for function/event ls_msg="函数/事件的参数列表错误"。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13.4关闭游标 关闭游标
在游标操作的最后不要忘记关闭游标,这是一个好的编程习惯, 以使系统释放游标占用的资源。 格式: 格式: CLOSE 游标名; 例如: 例如:close student;
13.5使用 使用Where子句 使用 子句
可以动态地定义游标中的Where子句的参数。 DECLARE语句的作用只是定义一个游标,在OPEN语句中这个游 标才会真正地被执行。这样我们可以在DECLARE的Where子句中 加入变量作参数,如下所示: DECLARE Student CURSOR FOR SELECT name,id,sex FROM student_table WHERE addr=:s_addr;
13.3提取数据 提取数据
用OPEN语句打开了游标并在数据库中执行了查询后,不能立即利 用查询结果集中的数据。必须用FETCH语句来取得数据。一条 FETCH 语 句 一 次 可 以 将 一 条 记 录 放 入 程 序 员 指 定 的 变 量 中 。 FETCH语句是游标使用的核心。 在DataWindow和DataStore中,执行了Retrieve()函数以后,查询 的所有结果全部可以得到。而使用游标,我们只能逐条记录地得 到查询结果。 格式: 格式: FETCH 游标名 INTO :变量1, :变量2, ..., :变量n; 注意变量前的冒号不可省。 注意 已经声明并打开一个游标后,我们就可以用Fetch将数据放入任意 的变量中。 例如: 例如: FETCH student INTO :s_name,:s_id,:s_sex; , , ;
13.3提取数据 提取数据
游标一次只能从后台数据库中读取一条记录。 通过检测SQLCA.SQLCODE的值,可以得知最后一条FETCH语句是否 成功。当SQLCODE值为0时,表明一切正常;为100时表示没找到; 而其它值均表明操作出了问题。这样我们可以编写以下的代码: fetch student into :s_name,:s_id,s_sex;; do while sqlca.sqlcode = 0 //对读取的记录进行处理 lb_1.additem(s_id1+"----"+s_name1+”----“+s_sex) ..... //读取下一条记录 fetch studen.6编程实例 编程实例
用游标的方法将数据库stu中的表student的记录显示在窗口上的ListBox中。 创建一个student.pbl,其application为stud;再新建一个w_student窗口,在该 窗口上创建一个ListBox名为lb_1、一个单行编辑框sle_1、一个CommandButton 名为cb_1。 在stud的open事件中输入代码: SQLCA.AutoCommit = True sqlca.DBMS= "odbc" sqlca.database= "" sqlca.servername = "" sqlca.dbparm= "Connectstring='DSN=stu;UID =dba;PWD=sql;'" sqlca.logid="" sqlca.logpass="" sqlca.dbpass="sql" erid="dba" connect; 图13-1 使用游标的例子
13.2打开游标 打开游标
游标声明后在作其它操作之前,必须打开它。打开游标是执行与 其相关的一段SQL语句。 格式: 格式: OPEN 游标名; 例如打开上例声明的一个游标student,只需键入: 例如 OPEN student; 由于打开游标是对数据库进行一些SQL SELECT的操作,它将耗费 一段时间,主要取决于所使用的系统性能和这条语句的复杂程度。 如果执行的时间较长,应该改变屏幕上显示的鼠标。
第13章 游标 章
13.1 声明游标 13.2 打开游标 ` 13.3 提取数据 13.4 关闭游标 13.5 使用Where子句 使用 子句 13.6 编程实例
13.1 声明游标
游标的声明包括两个部分:游标的名称和这个游标所用到的SQL语句。 格式: 格式: DECLARE 游标名 CURSOR FOR sql语句; 注意应以分号结束。 注意 如要声明一个叫作Student的游标用以查询家庭地址在南京的学生的 姓名、学号及其性别,可以编写如下代码: DECLARE Student CURSOR FOR SELECT name,id,sex FROM student_table WHERE addr="南京"; 声明游标的这一段代码行是不执行的,不能将debug时的断点设在这 一代码行上,也不能用IF...END IF语句来声明两个同名的游标 。
13.6编程实例 编程实例
s_addr=trim(sle_1.text) if sqlca.sqlcode<>0 then messagebox(" ", "不能连结数据 //要查询的家庭地址 库!~r~n~r~n请询问系统管理员 lb_1.reset() ",stopsign!) //清除ListBox中内容 return open student; //打开游标 end if //提取数据 open(w_student) Fetch student into :s_name,:s_id,:s_sex; 在cb_1的clicked事件代码: do while sqlca.sqlcode = 0 string s_id,s_name,s_sex,s_addr //将读取的数据加到ListBox中 //声明游标student lb_1.additem(s_id+"--"+s_name+"-"+s_sex) DECLARE student CURSOR FOR fetch student into :s_name,:s_id,:s_sex; SELECT name,id,sex loop FROM student close student; //关闭游标 where addr=:s_addr;
相关文档
最新文档