一 : Endnote_X7实用教程
endnote怎么用 Endnote_X7实用教程
endnote怎么用 Endnote_X7实用教程
(www.61k.com]二 : PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
扩展:powerbuilder / powerbuilder教程 / powerbuilder12.5教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
powerbuilder PowerBuilder实用教程
扩展:powerbuilder / powerbuilder教程 / powerbuilder12.5教程
三 : PowerBuilder 实用教程
程 继 辉
第一章 PowerBuilder 概论
PowerBuilder 7.0 简介 新特性 开发环境
1.1 PB 7.0 简介
1.1.1 PB 特性 1、支持多种操作系统 Windows、UNIX等操作平台 2、与多种数据库的连接性 Oracle、MS SQL Server Sybase SQL Server 3、丰富的开发工具 4、对Internet的强力支持
1.1 PB 7.0 简介
客户/服务器结构 客户(Client): 从其它计算机读取数据,处理 后将数据存 储到提供数据的计算机中。 服务器(Server): 向其它计算机提供数据的计算机
1.1 PB 7.0 简介
面向对象设计概念 (1)对象 (2)属性 (3)方法 (4)事件 (5)关联
1.1 PB 7.0 简介
事件驱动过程的程序设计原理 事件驱动:程序启动时,只做了一些初始化 的工作,然后等待用户或外界的环境的触发。所 有的代码都是编写在不同的事件中。
1.2 PowerBuilder 7.0的新特性
全新的用户接口和开发界面
1.2 PowerBuilder 7.0的新特性
非模态的开发视窗 PB7.0的画板一般是拥有多个视窗的窗口,每个视
窗提供查看和修改对象的特定方式或者显示与对象相关
的某种信息,见图示
1.2 PowerBuilder 7.0的新特性
数据库连接新特性
1.3
工具栏
PB7.0 的开发环境
菜单画板
数据窗口画板
第二章 应用程序
创建应用程序对象 设置应用程序的属性 应用程序对象的事件 对象库搜索表 运行应用程序
应用程序对象的事件触发时机
启动应用程序
Open 事件
初始化,打开初始化窗口
与用户交互
系统错误
打开其它窗口
系统错误
启动应用程序
应用程序终止
关闭并清除所有对象
应用程序对象
应用程序属性
应用程序事件
对象库搜索表
创建应用程序
创建应用程序
第三章 窗口设计
窗口创建 窗口控件的基本操作 窗口控件属性、事件和函数 常用对话框
创建窗口(1)
创建窗口(2)
设计窗口布局的地方
窗口或控件属性
编写事件代码的地方
窗口事件
窗口控件属性、事件和函数
PB控件: 从行为上区分: 1 能响应用户的操作( 按钮、编辑框、列表框) 2 不能响应用户的操作(直线、矩形) 从用途上区分 1 激活动作类 2 选择项类 3 显示数据类 4 修饰类
在窗口中添加控件(1)
在窗口中添加控件(2)
第四章 数据库基础及管理
数据库应用技术的发展过程 如何开发数据库应用系统 数据库结构的设计与实现 数据库管理 数据库的操作 表的定义和数据操作 表数据的处理 PB的专用接口与数据库建立连接
4.1数据库应用技术的发展过程
1、主机应用模式 2、文件服务器应用模式 3、客户服务器应用模式 4、分布式计算应用模式 5、WEB网络应用模式
主机应用模式
大型机
应用程序 数据库
按 键 信 息
终 端 字 符
终端1 终端2 终端
n
文件服务器应用模式
网络文件服务器
数据库
文 件 请 求
文 件
工作站1
工作站2 应用程序
工作站n 应用程序
应用程序
客户服务器应用模式
应用程序
网络服务器
数据库
处 理 请 求
处 理 结 果 工作站n 应用程序
工作站1
工作站2 应用程序
应用程序
文件服务器和C/S的数据库操作比较
程序发出查询学号 为99090221的 信息的SQL请求 查询操作在客 户端完成 查询文件请求
文件服务器
45000名 学生 数据的 文件
45000条记录的文件
响应文 件请求 并返回 整个文 件
程序发出查询学号 为99090221的 信息的SQL请求 接收结果
查询请求
数据服务器 查询在 服务器 端进行
45000名学生 数据的文件
返回99090221的记录
分布式计算应用模式
数据库 数据库服务器 (服务层)
商业服务器 实现商业规则的组件
(中间层)
客户端应用程序 (客户层)
工作站1
工作站2
工作站n
WEB网络应用模式
Internet/Intranet 客户端 浏览器
WEB服务器
服务 器
中间件
(使用中间件间接访问的Web数据库模式)
数据库服务器
客户端应用 Java Applet ActiveX
Internet/Intranet 客户端 浏览器
服务 器
数据库
(直接访问的Web数据库模式)
4.2 如何开发数据库应用系统
用PowerBuilder开发应用系统时,一般都要 经过系统分析、系统设计、系统开发、代码调试、 系统测试、生成EXE、交付应用等各个阶段。
系统分析和系统设计
实际上,在开发任何应用系统之前,开发人 员都必须充分了解系统需求,理解系统应该完成 的真正任务,千万不能因为赶进度而过分缩减或 忽略该阶段的工作,这一阶段的成果很大程度上 决定了项目的成败。理解了系统需求后,就进入 系统设计阶段,考虑用户界面的风格、使用何种 数据库、如何组织数据等。
系统开发
在PowerBuilder 7.0中,建立应用程序需做的大 量工作是创建对象、描述对象、设置属性,而不是编
写大量的代码。系统开发过程可分为:建立应用对象; 生成用户对象、函数和结构;建立窗口和菜单;创建
数据窗口对象;将数据窗口对象连接到窗口上;编写 各对象的事件处理程序。除了建立应用对象需要在应 用开发的一开始就要完成外,其它步骤可按任意次序 进行。PowerBuilder是个快速应用开发工具。建立应 用时,可以首先在很短时间内建立应用原型,待系统 运行无误后,再进一步锦上添花。
调试
变量查看等多种调试功能,可以帮助开发人员快速地排 除程序错误,而且,它的自动编译功能在保存事件处理 程序时能够找出所有的语法错误。另外,使用PB的
PB的调试器提供了单步跟踪、断点跟踪、条件断点、
PBDEBUG功能可以跟踪
和记录应用程序的运行情况,
使用数据库调试功能可以查出数据访问方面可能存在的 瓶颈问题。开发人员应该清晰地认识到,调试应用程序 不是为了证明程序不存在错误,而是为了尽可能多地找 出所存在的问题,没有找到任何错误的调试是不成功的
调试。同时,调试也是件费时、费力的创造性工作。
测试
测试用于排除系统设计缺陷,比如是否实现 了某些功能。系统测试无误后,就可以将应用编 译成可执行文件用于发行了。
快速原型法
需求分析 获得系统基本需求、 确定原型 的基本功能
构造原型 原型的构造与试用 运行原型 不可行
评价原型
不满意
修改原型
原型的修改和完善
4.3 数据库结构的设计与实现
1、需求分析 2、概念结构设计 3、逻辑结构设计 4、数据库结构实现
4.4 数据库管理
PB主要是作为一个数据库应用程序的前端开 发工具而被使用。但它自身也带有一个本地数据 库管理系统Adaptive Server Anywhere 6(ASA6), 利用它可以创建本地数据库并对它进行操作。PB 无论是和后台的大型数据库相连,还是和PB自建 的本地数据库相连,原理基本一样。
创建和删除ASA数据库
一般来说,在用PowerBuilder访问数据库前,我 们使用相应的数据库管理系统(比如Oracle,Sybase 等)创建自己的数据库(通常需要数据库管理员在服 务器上完成创建工作),然后通过ODBC接口或专用
接口把PB或你开发的应用程序连接到数据库上。对 FoxPro之类的文件型桌面数据库来说,创建数据库 只是建立一个存放数据库表的目录而已。 PowerBuilder 7.0内置的数据库管理系统ASA有些特 殊,我们能够在PowerBuilder 7.0中创建和删除本地 的ASA数据库.
创建和删除ASA数据库(1)
创建和删除ASA数据库(2)
创建和删除ASA数据库(3)
创建和删除ASA数据库(4)
创建和删除ASA数据库(5)
创建和删除ASA数据库(6)
PB的数据库接口
PowerBuilder与数据库的连接建立在驱动程 序之上。对诸如Oracle、Sybase、Informix之类 的大型数据库管理系统,PowerBuilder提供了旨 在提高数据库访问效率的专用数据库接口。对小 型数据库(如FoxBase)和支持ODBC接口的数据 库(如IBM DB2),PowerBuilder提供了ODBC接 口。
见图解
ODBC的软件层 1
1. 第一层为ODBC应用软件,包括用PB7.0开发的应
用程序。应用程序通过调用ODBC函数,向ODBC数据 源提供操作数据源的SQL语句,并处理SQL语句返回的 结果。PB 7.0通过动态链接库PBODB70.DLL完成这一功 能。对开发人员来说,调用ODBC函数的过程是隐含的,
它由PB7.0自动完成。
见图解
ODBC的软件层 2
2. 第二层为驱动管理程序,或称作驱动管理 器,它管理并装载驱动程序。驱
动管理器的作用 为: 用ODBC.INI文件把数据源名映射成特定驱动程 序的动态链接库 处理几个ODBC初始化调用 为每个驱动程序提供ODBC的入口点 检验ODBC的调用参数和次序
见图解
ODBC的软件层 3
3.第三层为驱动程序,它处理ODBC函数调用,提交
SQL请求到特定的数据源并把结果返回给应用程序,必 要时,它会修改应用程序的SQL语句,以适应特定数据
库的SQL语法。
4. 第四层是数据源,数据源包括要存取的数据以及
相关的操作系统、数据库管理系统和网络系统。
ODBC软件层图解
第一层说明
第二层说明
ODBC的软件层 图解
通过ODBC接口,PowerBuilder 6.0访问数据库的 线路如图
创建数据源和数据库描述文件
创建数据源和数据库描述文件
创建数据源和数据库描述文件
创建数据源和数据库描述文件
创建数据源和数据库描述文件
创建数据源和数据库描述文件
4.5 数据库的操作
1、连接
添加表
浏览、修改表的数据需要用到的工具图标
数据检索 Retrieve
保存修改 Save Change
插入一行 Insert Row
删除当前行 Delete Row
如何利用PB的专用接口与数据库建立连接
专用接口针对具体的数据库管理系统而设计,对 诸如Oracle,Sybase,Informix之类的大型数据库管 理系统,PB提供了专用接口,通过专用接口我们可 以将PB连接到相应的数据库上。因为专用接口在设
计上针对特定数据库的特点,能够充分发挥特定数据 库的优势,因此使用专用接口可以大大提高应用程序 访问数据库的速度,所以应该尽可能使用专用接口而 不是ODBC接口。数据库不同、数据库的版本不同, 使用的专用接口也不同。
专用接口的一般连接步骤
1. 安装并调通网络。PB专用接口都是用于网络上 的大型数据库的,因此,调通网络、建立网络环 境是利用专用接口将PB连接到大型数据库的第一 步。另外,还必须选择数据库支持的网络软件、 网络协议以及协议版本;
2. 安装数据库并且在网络环境中使数据库厂商提 供的客户软件能够正常运行,例如,对Oracle来 说,客户端的SQL*Plus应该能正常地访问Oracle;
专用接口的一般连接步骤 3. 在安装PB时通过选择安装指定数据库的专用接 口,如果以前未曾安装,那么重新运行PB的安装 程序进行安装; 4. 启动PB后,单击画笔栏的“DB Profile(数据 库配置)”图标,打开“Database Profiles”对话 框; 5. 如果已经定义了所需数据库的数据库配置,那 么通过单击选中该配置,然后单击“Connect”按 钮,系统连接到相应的数据库上;
专用接口的一般连接步骤 6、如果尚未定义数据库配置,那么首先要定义该 配置,然后按第5步连接到数据库。
第五章 PowerBuilder
编程
PowerScript语言的基本概念 PowerBuilder 语句 结构 调用函数和事件 嵌入SQL语句与数据库操作
PowerScript 书写基础
1 、在PowerScript 中是不区分大小写的,但是为了 提高程序的可读性、易于维护、有利于团队合作,在实 际编程时还是要注意大小写。
(1)将语句、参数、函数、变量首字母大写
(2)对象的名称一般小写 (3)如果语句、参数、函数、变量等是由若干部分组 成,则每部分的第一个字母大写 2、空白符和NULL 程序编译时不处理空白符,但是NULL是与数据库交 互时的一种特殊数值。
PowerScript 书写基础
3、注释 注释是添加在程序中的一些说明性文字, PowerBuilder并不执行任何注释,而是简单地跳过它。 PowerScript 的 注 释 有 两 种 方 式 : 行 注 释 和 块 注 释 , PowerScript的注释方式与C语言完全相同。行注释以双 斜线//开始,其后书写注释内容,到行尾结束。块注释以 /*开始,以*/结束 例如: //这是一条行注释 Open(w_main) //打开主窗口 4、语句的断行、续行和分隔 PowerScript中分隔符是分号“;”,续行符是“&”,断 行就是回车符
标识符
标识符是程序中用来代表变量、标号、函数、 窗口、控件、对象等名称的符号,标识符遵从下 述规则: 必须以字母开头;其余字符可以是字母、数字及 下述的特殊符号:下划线(_)、短横线(-)、美元 符号($)、号码符号(#)、百分号(%) 最长40个字符,且中间不能插入空格 保留字不能用做标识符,因为它们已有特殊的含 义
特殊ASCII码字符 波 浪 号 ( ~ ) 用 于 引 用 特 殊 ASCII 字 符 。 比 如 ~n,~’,~”分别表示新行,单引号,双引号 空值(NULL) 空值是与数据库交换数据时使用的一种特殊值, 代表数据未定义、不确定,它与空字符串、数值 零、以及日期00-00-00的意义完全不同。PB的所 有数据类型都支持空值,但PB并不将空值作为缺 省值,例如,说明变量时,PB把0赋给数值型变 量,把False赋给布尔型变量,把空串("")赋给 字符串变量。
空值(NULL) 变量被赋予空值的途径有两条: 1、从数据库中读到空值; 2、使用SetNull()函数赋值, 例如: String person //person="" SetNull(person) //person值为NULL 测试变量或表达式是否为空值时,使用函数 IsNull(),而不是直接使用关系表达式,例如,a 是个变量,要测试它是否为空值,可以这样写: IF IsNull(a) THEN …… 下面的写法是错误的: IF a=NULL THEN…… 原因在于空值不等于任何值,也不等于另一个空值。
数据类型
1、标准数据类型 教材列出的14种标准数据类型(P102) 2、系统对象数据类型 在PB中,窗口、菜单、各种控件都是系统对象,每一 种系统对象实际
上都是定义在PB内部的一种数据类型。 3、枚举数据类型 枚举类型是PB定义的特殊常量,常用于系统定义函数的 参数,也能够用于指定对象或控件的属性。与其它编程 语言(比如C或C++)不同,在PB中开发人员不能定义 自己的枚举类型,而只能按系统要求使用它。枚举类型 实际上是一组值,每个值都以英文单词开始,以感叹号 (!)结束。
数据类型
枚举数据类型 例如,定义多行编辑框对齐方式的枚举类型为 Alignment ,其取值为:Center! Justify! Left! Right! 程序中可以使用赋值语句给Alignment类型的变量 或属性赋值,例如,下述语句将多行编辑框mle_1 的对齐方式设置为居中对齐: mle_1.Alignment = Center! 使用枚举类型的好处是直观、准确,便于编译器 进行强数据类型检查。
变量、常量和数组的声明(1)
声明变量 数据类型 变量名[=初值][,变量名[=初值] ……]
String Ls_name Integer Ii_total=100
//说明整型变量ii_total,并赋予初值100 Blob型变量声明的语法为: Blob [{大小}] 变量名 声明Blob型变量时,可用大括号括起一个整数,该整数 指明Blob变量以字节为单位的长度,缺省该项时,默认 长度为0,且系统会根据实际数据自动调整其长度。 例如: Blob{100} ib_Emp_Picture //说明一个长度为100的blob型实例变量
变量、常量和数组的声明(2)
声明变量 Blob Ib_Picture //说明一个缺省长度为0的blob型变量需 要注意的是,blob型变量不能设置初值。 Dec型变量说明的语法为: Dec| Decimal [{精度}] 变量名[=初值]其中,精度是个整 数,指定小数点后的数字位数,如果未指定精度,则以 赋值时给定精度为准。例如:decimal{2} sc_Amount // 小数点后两位数字 注意:变量的初始化是在编译时完成的,因此 date id_date=Now( ) //id_date 存放的是编译时的时间 如果需要使用运行的时间,需要改成 date id_date id_date=Now( )
变量、常量和数组的声明(3)
声明常量 CONSTANT 数据类型 常量名 = 常量值 其中: ? CONSTANT是关键字,说明常量时照样书写; ? 数据类型为除Blob类型之外的任意标准数据类型,并且, 对Decimal类型常量来说,可以使用大括号来指定精度; ? 常量名是个标识符,应该尽量采用意义明确的标识符表示; ? 常量值是应用程序赋给该常量标识符的值,根据数据类 型的不同,使用不同的表达方式。
变量、常量和数组的声明(4)
声明数组 数组代表一系列具有相同类型的变量,它们共用一个 变量名,通过下标访问数组中的每个元素。要说明一 个数组变量,只需在标识符后跟上方括号,方括号内 填上数组元素个数即可例如: Integer person[30] 也可以指定数组下标的变化范围,例如: Integer Num[3 To 10] //下标
从3变化到10,共8个元素 如果在说明数组时方括号内未填数字,则说明一个动 态数组,运行时系统根据需要调整数组元素个数。
变量、常量和数组的声明(5)
声明数组 除了一维数组外,也可以使用多维数组,说明时维数 之间用逗号分割,例如: real lr_Array[10,10] //说明一个二维数组,共10*10个元素 char ls_3dArray[2,3,4] //说明一个三维数组,共2*3*4个元素 说明数组的同时,我们也可以给数组赋初值,例如: real lr_Array5[5]={1.2,2.1,5.6,4.8,6.9} 下面的赋值方法也是有效的: real lr_Array5[5]lr_Array5[5]={1.2,2.1,5.6,4.8,6.9} 动态数组可按相同的方法赋初值。
变量、常量和数组的声明(6)
声明数组
注意数组中,大括号只能用于赋值,不能用于比较操作, 下面的比较方法是错误的: Integer anArray[3] = {1,2,3} If anArray = {1,2,3} Then …… End If 纠正上述错误的方法之一是说明另外一个数组,然后进行 比较,例如: Integer anArray[3] = {1,2,3} Integer anArgs[3] = {2,3,4} If anArray = anArgs Then …… End If
变量作用域及引用方法(1)
作用域定义变量在什么范围内有效。PB的变量作用域共 有四种:全局变量、实例变量、共享变量和局部变量。 全局变量在整个应用程序中都可访问,它的作用域是 整个应用程序; 实例变量与对象相关联,只有在该对象的事件处理程 序或函数中才能使用为该对象定义的实例变量。实例变 量在它所关联的对象被打开时创建,被关闭时消失。 共享变量是一种静态变量,这不仅意味着它所在的对象 关闭后再次打开时,共享变量依然保持对象关闭时的值, 而且还意味着同一个类多个实例中的同名共享变量保持 相同的值。
变量作用域及引用方法(2)
局部变量在使用它的事件处理程序或函数中说明,其作 用域仅限于说明它的程序段,在该程序段的任何地方均 可访问局部变量,但其它程序段都不能访问本程序段中 的局部变量。运行程序后,进入某个程序段时,系统自 动为局部变量分配内存,退出程序段时,局部变量占用 的内存被释放。
四种类型作用域必然会是重叠的,当这几种变量类 型出现同名称时,局部变量和共享变量首先被引用,全 局变量会被覆盖,如果要想明确指出引用全局变量应该 使用全局操作符(::)。
代词
程序中使用代词的好处是避免硬代码,做到通用化。 PowerBuilder 提 供 了 四 个 代 词 , 分 别 为 : This 、 Parent、ParentWindow和Super。 1、Parent Parent指当前控件所在的窗口。例如,窗口w_win中 有个按钮cb_close,其功能是单击后关闭窗口w_win, 我们可以在按钮的Clicked事件处理程序中写上代码: close(w_win) 但采用代词Parent把这条语句修改为: close(Pare
nt) 则使代码具备更强的通用性和可移植性,并且也更容 易理解。
代词
2、This This代表窗口、用户对象、菜单、应用对象或控件 本身,即代表正在为之编写事件处理程序的对象。例 如窗口中有一个名称为cb_button的按钮,按钮上显 示的文本为“请单击”,在该按钮的Clicked事件处 理程序中可以写上代码: cb_button . text="再单击一次" 程序运行后,单击该按钮时,其显示文本变成“再单 击一次”。但当我们把这段程序粘贴到其它窗口的按 钮事件处理程序中时,它就有可能不能正常工作,原 因在于其它按钮的名称并不一定就是cb_button。
代词
现在把上面的程序段修改为: This . text="单击一次" 那么无论将它粘贴到哪个按钮的事件处理程序中,它都 能正常工作!这里的This代表该按钮(因为我们在对按 钮的Clicked编写事件处理程序)。 3、ParentWindow ParentWindow代表运行时菜单所在的窗口,该代词只能 在菜单的事件处理程序中使用。例如,在“关闭窗口” 菜单项的Clicked事件处理程序中写上代码: close(ParentWindow) 单击该菜单项时就会关闭与之关联的窗口,而不管窗口 的具体名称叫什么
代词
4、Super 在编写控件或对象的子对象时,子对象中可以调 用父对象的事件处理程序,程序中既可直接利用父对 象的名称调用它们,也可以使用Super代词来引用。 例如,想调用父对象的Clicked事件处理程序时,子 对象中可以这样写: CALL Super::Clicked 当调用在子类中被重载的父对象的函数时,也可 以使用Super来指代父对象,例如,子对象重载了父 对 象 的 函 数 f_func() , 在 子 对 象 中 调 用 父 对 象 的 f_func()函数的语句可以这样编写: Super::f_func()
5.2 PowerBuilder 语句
5.2.1 赋值语句 语法格式:variablename=expression 规则: (1)变量名必须是已经声明的; (2)表达式的值必须与变量的数据类型相兼容; (3)不能一次给多个变量赋值
5.2 PowerBuilder 语句
5.2.2 条件控制语句
1、If …… Then 语句 单行IF ... THEN语句 格式:IF cond THEN action1 [ELSE action2] 其中cond是个表示条件的逻辑表达式,action1、 action2是一条语句,方括号表示该成分可根据需要 选择。 单行IF ... THEN语句书写时整条语句写在一行上,当 cond的结果为True时执行语句action1,否则执行语 句action2(如果有该子句的话)。
IF sle_State.text=“BJ” THEN MessageBox(“欢迎”,“北京”)
5.2.2
条件控制语句
多行IF ... THEN语句 格式:IF condition1 THEN action1 [ ELSEIF condition2 THEN action2 ... ] [ ELSE action3 ] END IF 其中condition1、condition2是逻辑表达式,action1、 action2、action3是一条或多条语句,方括号表示该子句 可根据需要选择。
5.2.2
条件控制语句
例如,下面的示例将学生成绩的百分制转换成A、B、C、 D、E等级制: If Percent >= 90 Then Grade="A” ElseIf Percent >= 80 AND Percent < 90 Then Grade="B” ElseIf Percent >= 70 AND Percent < 80 Then Grade="C” ElseIf Percent >= 60 AND Percent < 70 Then Grade="D” Else Grade="E” End If
5.2.2
条件控制语句
2、Choose Case 语句
CHOOSE CASE语句根据测试表达式的值选择不同的操 作,其语法格式为 CHOOSE CASE test expression
CASE expressionlist
statementblock [CASE expressionlist statementblock ...
[CASE ELSE statementblock]
END CHOOSE
5.2.2
条件控制语句
(1)其中,testexpression是测试表达式,expressionlist 是判断表达式,statementblock是满足条件时执行的 语句块
表达式列表可以多种形式: 单个值; 值列表(1,2,3,4,5); TO短语(1TO20); 用IS代表测试值,后跟关系操作符和比较值,例如: IS> 30; 前面各种条件以隐含的OR关系的组合。(1,2,3To30,IS>90)
5.2 PowerBuilder 语句
Choose Case 语句
(2)应注意的地方: 至少要有一个Case,必须以End Choose结束; 测试的值从第一个Case后面的表达式列表开始依次 比较,一旦遇到匹配的表达式,立即执行相应Case 的语句块 如果有一个以上的表达式和测式表达式匹配,则只执 行第一个Case对应的语句块 如果所有的表达式列表都不匹配,并且有Case Else 子句,则执行相应语句块,否则不执行任何语句块。
5.2 PowerBuilder 语句
5.2.3 循环控制语句 1、DO …… LOOP结构提供了一种基于某个条件 的灵活的循环方法,它有四种形式,分别为: DO UNTIL condition ……LOOP DO WHILE condition …… LOOP DO …… LOOP UNTIL conditionn DO …… LOOP WHILE condition DO表示循环的开始,LOOP表示循环的结束, condition表示循环条件,是个逻辑表达式,其值 为True或False。
5.2 PowerBuilder 语句
2、For …… Next FOR … NEXT是个循环次数确定的循环结构,它使循环
体内的语句执行规定的次数,其语法结构为: FOR varname = start TO end [STEP increment] statementblock NEXT 其中,varname是循环变量,可以是任意的数值类型, start、end分别是循环变量的初值和终值,increment是 每次循环后循环变量的步长增量(缺省值为1), statementblock是一组语句,称做循环体,方括号表示该 子句可以省略。
FOR … NEXT语句
FOR … NEXT语句的执行过程为:循环变量 varname从start开始,到end为止,重复执行循环 体,每执行一次,varname被重新赋值,新值为: varname+ increment。另外,如果start和/或end 在循环体内被修改,将影响循环次数。
5.2 PowerBuilder 语句
3、GOTO 语句 GOTO 语 句 将 控 制 跳 转 到 程 序 中 的 其 它 位 置 , 用 GOTO语句也可以构成循环。GOTO语句的语法格式为: GOTO label 其中label是语句标号,它使
用标识符的命名规则。 注意: 在PowerScript中完全可以避免使用GOTO语句,虽然 该语句在某些情况下会简化编程,但对大型项目来说, 滥用GOTO语句有百害而无一利。对GOTO语句的态度 应该是,合理使用、避免滥用。 GOTO语句只能跳转到当前函数或事件处理程序内部 的某个标号处,不能用GOTO语句将控制转移到其它函 数或事件处理程序的某个标号处。
5.2 PowerBuilder 语句
4、Continue 和Exit语句 在DO……LOOP和FOR …… NEXT语句的循环 体 中 , 遇 到 CONTINUE 语 句 后 , 将 不 执 行 CONTINUE语句后与循环结束前的所有语句,而 开始新一轮循环。 在DO …… LOOP和FOR …… NEXT语句的循环 体中,当我们想在中途退出循环时,使用EXIT语 句是个好办法,执行该语句后,程序的控制权转 至循环语句后的语句。
5.2.4 其它语句
1、Halt 语句 HALT语句用于终止应用程序的运行 Halt [Close] 2、Return 语句 RETURN语句立即终止事件处理程序或函数的执行, 把控制返回到调用程序 Return [expression] 3、Create 语句 使用CREATE语句创建对象实例。实例生成后,就 可以使用点操作符(.)引用对象的成员了。 CREATE语句返回对象实例的句柄,通过该句柄引 用新生成的实例。CREATE语句有两种语法格式。
Create 语句
语法一: objectvariable = CREATE objecttype 其中,objectvariable是数据类型为objecttype的变 量(可以是全局变量、实例变量、或局部变量), objecttype是对象数据类型。 语法二: objectvariable = CREATE USING objecttypestring 其中,objectvariable是个变量(可以是全局变量、 实例变量、或局部变量),其数据类型要与将创建对 象的类或该类的祖先类相同;objecttypestring是个字 符串,其值是要创建对象类数据类型的名称。
5.2.4 其它语句 4、Destroy语句 用CREATE语句创建的对象实例在使用完毕后 应该及时地释放,以使对象实例占据的内存资源 得到重用。释放对象实例的语句是DESTROY, 释放之后,该对象实例不能再被引用。 格式:Destroy ObjectVariable 5、Call语句 用于在子孙对象的程序中调用祖先对象中的程序 (函数或事件)。 Eg: Call w_emp:: Open Call w_emp`cb_close::Clicked
5.3 结构
结构实际上定义了一个新的数据类型,应用程 序中使用点操作符(.)访问结构变量的元素。 例如如果我们创建了一个结构 Person 在脚本中我 们就可以声明这种类型的变量并引用它们: Person lp_Person,lp_person_tmp lp_Person.Name=“李辉” lp_Person.Address=“北京市” lp_Person.Salary=3000 lp_person_tmp=lp_Person //复制结构
5.3 结构
创建结构New——〉Object——〉Structrue—〉Save
5.3 结构
5.4 调用函数和事件
PowerScript函数分为:系统函数、对象函数、 数据窗口画笔
函数、用户自定义函数。系统函数 在应用程序的任何地方都可以使用,且函数名无 须限定;对象函数在对象的生存空间中使用,且 使用时通常采用对象名.函数名的格式;;数据窗 口画笔函数在数据窗口画笔中使用,通常用于生 成计算列、有效性检查规则、检索条件、例外处 理等。用户自定义函数功能由用户自行定义。
5.4.1 常用的标准函数
1、MessageBox( )函数 MessageBox()函数常用于向用户显示出错、警告及其 它重要信息,并且在开发过程中常用它显示程序状态和 重要变量的取值。MessageBox()函数在屏幕上显示一个 窗口,用户在响应该窗口后,程序才能继续运行下去。 其 语 法 格 式 为 : li_button_pressed=MessageBox ( title, text {,Icon {,Button{,Default}}} ) 演示MessageBox( )函数 2、Open( ) 和Close( )函数 Open( )打开窗口;Close( )关闭窗口 3、Run( )函数 当 需 要 在 PowerBuilder 应 用 程 序 中 启 动 其 它 DOS 或 Window程序时,使用Run()函数。
5.4.2 自定义函数 (1)
5.4.2 自定义函数 (1)
5.4.3 调用函数和事件
函数调用
5.5 嵌入SQL语句与数据库操作
5.5.1 连接数据库的语句 1、事务对象 PowerBuider的事务对象是应用程序与数据库之间 进行通信的桥梁,在应用程序初启时,系统自动创建 一个名为SQLCA(SQL Communication Area,SQL 通讯区)的全局事务对象,该对象在应用程序的任何 地方都可以访问。应用程序与数据库的所有通信都需 要通过事务对象来完成,除了直接使用系统的缺省事 务对象SQLCA外,开发人员也可以创建自己的事务 对象。一般情况下,大多数应用程序只与一个数据库 打交道,故开发人员通常都直接使用SQLCA作为与 数据库进行通信的事务对象。
5.5.1 连接数据库的语句 1、事务对象 与PowerBuider的其它大多数对象不同,事务对象是
个不可见对象,它不需要在某个画笔中创建,也不能 出现在屏幕上,但它却是PowerBuider最重要的对象 之一。无论程序用嵌入式SQL还是数据窗口访问数据 库,都要使用事务对象。事务对象驻留在内存中,与 变量和结构十分相似,它拥有用于连接数据库以及从 数据库中得到反馈数据的所有信息。
5.5.1 连接数据库的语句 1、事务对象 与PowerBuider的其它大多数对象不同,事务对象是
个不可见对象,它不需要在某个画笔中创建,也不能 出现在屏幕上,但它却是PowerBuider最重要的对象 之一。无论程序用嵌入式SQL还是数据窗口访问数据 库,都要使用事务对象。事务对象驻留在内存中,与 变量和结构十分相似,它拥有用于连接数据库以及从 数据库中得到反馈数据的所有信息。
5.5.1 连接数据库的语句 1、事务对象
5.5.1
连接数据库的语句 1、事务对象
5.5.1 连接数据库的语句 1、事务对象
PowerBuider应用程序与存储数据的数据库进行 通信的步骤为: 1. 设置事务对象的属性值。 2. 与数据库建立连接。 3. 执行所需的数据库操作。 4. 断开与数据库的连接。
5.5.1 连接数据库的语句
2、CONNECT CONNECT是每个访问数据库的PowerBuilder 程序必须使用的语句,它的功能是通过事务对象 将应用程序与数据库建立连接,连接成功后,其 它SQL语句和数据窗口才能通过事务对象操作数 据 库 。 CONNECT 语 句 的 语 法 格 式 为 : CONNECT {USING TransactionObject}; 其中,TransactionObject是事务对象,在执行该 语句前,必须正确设置事务对象的数据库连接属 性。
5.5.1 连接数据库的语句
3、DISCONNECT DISCONNECT语句断开与数据库的连接,执 行该语句时,它首先执行COMMIT语句(事务提 交语句),完成事务提交,然后解除与数据库的 连 接 。 DISCONNECT 语 句 的 语 法 格 式 为 : DISCONNECT {USING TransactionObject} ; 其中,TransactionObject是前面用CONNECT语 句连接的事务对象名。
5.5.2 SQL SELECT 查询语句
5.5.3 SQL操作语句 1、INSERT 插入语句
5.5.4 事务提交与撤消 事务是数据库管理系统完成一项完整工作的 逻辑单位,数据库管理系统保证一个事务要么被 完整地完成(称做提交),要么被彻底地取消 (称做回滚)。应用程序可以通过COMMIT和 ROLLBACK语句控制事务操作。 1、COMMIT语句 COMMIT语句提交事务,完成数据库的物理修 改。执行该语句后,将关闭所有先前打开的游标 (CURSOR)和过程(PROCEDURE),并开始 一个新的事务。
5.5.4 事务提交与撤消
2 、ROLLBACK语句 ROLLBACK(回滚)语句放弃自上一个COMMIT、 ROLLBACK或CONNECT语句以来的所有数据库操作, 关闭所有的游标和过程,并开始一个新的事务。 注意: 缺省情况下,当应用程序执行DISCONNECT语句时, 系统自动执行一条COMMIT语句,这一缺省并不总是有 利的,有时候我们希望在执行DISCONNECT语句时由程 序本身决定是提交还是回滚事务。在PB中新引进了一个 名称为CommitOnDisconnect的DBParm参数,该参数设 置为‘Yes'后,执行DISCONNECT语句时系统将首先执 行一条COMMIT语句,完成事务的提交;该参数设置为 ‘No’后,执行DISCONNECT语句时系统将首先执行一 条ROLLBACK语句回滚事务。
5.5.5 使用游标的语句
第六章 数据窗口
数据窗口对象 数据窗口画板 数据窗口控件
6.1 数据窗口对象
数据窗口对象是PowerBuilder中功能十分强大的一 个对象,也是PowerBuilder有别于其它数据库应用系统 开发工具的主要地方。数据窗口对象主要用于操作数据 库中的数据,除了不能完成数据库中
数据定义(包括定
义表和视图、修改表与视图定义、删除表与视图)外,
操纵起数据来可称得上是行家里手。数据窗口不仅能够 图形化地增加、删除、修改、更新、查询数据,而且可 以方便地定义所操作数据的输入格式、输出格式、以及 数据的显示风格,同时,开发人员还可以在数据窗口对
象中增加多种对象(包括按钮、静态文本框、图片等)。
6.1 数据窗口对象
数据窗口包括两方面的内容:数据窗口对象 和数据窗口控件。数据窗口对象主要用于展示数 据并允许用户增删改数据,数据窗口控件则把数 据窗口对象放置到窗口上并呈现在用户面前。 构造数据窗口对象时,首先要考虑两方面的 内容:数据和显示风格。数据窗口对象中的数据 来源于数据源,数据源决定了数据窗口对象从什 么地方得到数据。显示风格决定了数据窗口以何 种方式展示、表现数据。
6.1 数据窗口对象
1、创建之前的准备工作: (1)确保已经连接了数据库 (2)在所连接的数据库中已经创建了相应的表 (3)表中已经有了数据
1、创建数据窗口对象
2、选择数据源
3、选择表
4、选列
5、创建完成
6.3 数据窗口控件
6.3 数据窗口控件 与数据库有关的函数
(1)连接数据库 数据窗口控件还有一个对象函数用于数据窗口控 件与事务对象建立联系,这个函数就是SetTrans (),
其语法格式与SetTransObject ()函数相同。两者的区 别在于:SetTrans ()函数不需要应用程序使用 CONNECT语句建立事务对象与数据库的连接,也不 需要用DISCONNECT语句断开与数据库的连接, PowerBuilder会自动完成这些任务。
6.3 数据窗口控件
SetTransObject ()函数在使用之前要求首先 建立事务对象与数据库的连接,然后一直保持这 一连接,直到代码执行DISCONNECT语句后才 断开与数据库的连接。因此,它在检索和更新数 据时所花的时间只是检索和更新所需的时间,效 率上明显高于SetTrans ()函数。
与数据库有关的函数
(2)检索数据 Retrieve() (3)更新数据 Update()
6.3 数据窗口控件
数据窗口缓冲区与数据共享
当使用数据窗口控件的Retrieve()函数从数据库中提
取数据后,数据被存入了数据窗口的缓冲区中,程序对 数据窗口中数据的操作均在缓冲区中完成。用户在向数 据窗口中输入数据时,他并没有直接把数据输入到数据 窗口的缓冲区中,而是把数据输入到悬浮在数据窗口当
前单元上面的编辑控件中,当用户移动了输入焦点或代
码中使用AcceptText ()函数操作之后,系统验证输入数 据的有效性,通过有效性验证的数据才被放置到数据窗 口控件的缓冲区中。
数据窗口缓冲区与数据共享
主缓冲区保存显示在
数据窗口控件中的所有数据行,
以及这些行和各个列的状态。当使用数据提取函数 Retrieve()检索数据时,检索到的数据放置在主缓冲 区中;当插入数据时,插入的数据也存放在主缓冲区。 行和列的状态用于数据窗口保存数据时生成合适的 SQL语句。当删除数据行时(不管是使用DeleteRow() 函数直接删除一行还是使用RowsMove()函数在缓冲 区之间移动数据行),被删除数据行从主缓冲区移动 到删除缓冲区。
数据窗口缓冲区与数据共享
当使用数据窗口控件的对象函数Update()将数据 窗口的修改发送到数据库管理系统后,被成功删除的 记录均从删除缓冲区中清除。在保存数据时,删除缓
冲区用于生成DELETE语句。过滤缓冲区用于保存 那些满足数据源定义(即满足SELECT语句中的条件) 而不满足过滤条件的行)。过滤缓冲区与主缓冲区一 起在更新数据时生成所需的INSERT或UPDATE语句。
第七章 菜单设计
菜单和菜单对象 创建菜单
7.1 菜单和菜单对象
7.2 创建菜单
7.2 创建菜单
第八章 MDI (多文档界面) 应用程序
创建MDI应用程序对象 应用继承创建MDI应用程序底稿 利用窗口间传递消息打开底稿窗口 应用类和实例的概念同时打开多个相同的窗口
8.1 创建MDI应用程序对象
8.3 利用窗口间传递消息打开底稿窗口
8.4 应用类和实例的概念
同时打开多个相同的窗口
类和实例:
类:由一组共享同一结构和同样行为的对象所定义的。
实例:根据某一个类的定义在执行阶段所创建的。PB在
创建对象的同时,不仅创建了该对象的类,同时也根据
PB在创建对象的时候创建的实例,只不过是在内存中生
类创建了一个实例。实例的本质是“程序的一次运行”,
成了这个类的一个同名实例变量而已,如果再进行定义
类的其他对象,同样可以生成相应实例。这个时候体现
的就是同样的窗口(或其他的对象)被打开(创建)了
多次。
第九章 应用程序的调试与运行
应用程序的调试环境 调试过程 可执行程序的生成
9.1 应用程序的调试环境
断点
9.2 调试过程
运行到断点 此时,各变量值
9.3
可执行程序的生成
应用程序经过设计、开发、调试和试运行,排 除了明显的与潜在的错误并达到预期功能后,就 可以形成可执行的应用程序。 创建可执行文件的唯一途径是使用PowerBuilder 的工程画笔(ProjectPainter),利用该画笔,我 们既可以把应用程序中的所有对象都包含到独立 的可执行文件中,也能够把应用程序编译成一个 可执行文件和多个PowerBuilder动态库。
9.3 可执行程序的生成
9.3 可执行程序的生成
四 : Endnote_X7实用教程
endnote怎么用 Endnote_X7实用教程
endnote怎么用 Endnote_X7实用教程
(www.61k.com]扩展:endnote x7教程 / endnote x7 / endnote x7视频教程
本文标题:qq实用教程-Endnote_X7实用教程61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1