PowerBuilder 实用教程
前言:为什么学习 PowerBuilder?
PowerBuilder(简称PB)是一款经典的、强大的快速应用开发工具,尽管在Web和移动应用大行其道的今天,它的热度有所下降,但在许多大型企业,尤其是在金融、电信、保险等领域,仍有大量的PB应用系统在稳定运行,这些系统需要维护、升级和扩展,掌握PowerBuilder开发技能依然具有很高的职业价值。

本教程将带你走进PB的世界,从零开始,成为一名合格的PB开发者。
第一部分:基础入门
第一章:PowerBuilder 简介与环境搭建
1 什么是PowerBuilder?
PowerBuilder是Sybase公司(后被SAP收购)推出的一款基于客户端/服务器架构的快速应用开发工具,它以其独特的数据窗口技术而闻名,使得数据库应用程序的开发变得异常高效。
- 核心特点:
- 数据窗口:PB的“灵魂”,一个智能的数据对象,能轻松实现数据检索、显示、编辑、报表生成等功能。
- 面向对象:采用面向对象的思想,所有控件(窗口、按钮、菜单等)都是对象,拥有属性、事件和函数。
- 第四代语言:提供强大的数据操纵语句(如
SELECT,INSERT,UPDATE,DELETE),无需编写复杂的SQL代码即可操作数据库。 - 可视化开发:通过拖拽控件、设置属性的方式快速构建用户界面。
- 编译与部署:可将源代码编译成可执行文件,方便分发。
2 开发环境安装

- 获取安装包:你需要从SAP官网上获取PowerBuilder Classic的安装包(通常是试用版或付费版),目前最新版本是2025 R3及后续版本。
- 安装步骤:
- 运行安装程序,按照向导提示进行操作。
- 关键选项:在安装过程中,务必选择安装 .NET Target 和 Classic Target。.NET Target允许你使用C#或VB.NET来编写PB应用的逻辑,而Classic Target则是传统的PB脚本(PBLM)。
- 数据库接口:根据你将要连接的数据库(如Oracle, SQL Server, Sybase等),选择并安装相应的数据库接口。
- 验证安装:安装完成后,启动PowerBuilder,检查是否可以正常打开。
3 PowerBuilder 开发界面初识
启动PB后,你会看到几个核心窗口:
- 系统树:显示当前工作区的所有目标、库、对象,是项目的导航中心。
- 画板:你进行编码和设计的主要区域,根据编辑的对象不同(如窗口、数据窗口、菜单),画板会显示不同的设计器和编辑器。
- 输出窗口:显示编译、部署、搜索等操作的输出信息。
- 属性视图:选中一个对象(如按钮)后,在这里可以设置其各种属性(文本、颜色、大小等)。
- 脚本视图:编写事件处理函数的地方。
第二章:第一个PowerBuilder应用 - "Hello, World!"
让我们动手创建一个最简单的应用程序,感受PB的开发流程。
步骤 1:创建工作区

工作区是PB最高级别的组织单位,可以包含一个或多个目标。
- 点击菜单
File -> New - 选择
Workspace标签页,OK。 - 选择一个位置,输入工作区名称(如
MyFirstApp.pbw),然后保存。
步骤 2:创建目标
目标是应用程序的集合,我们先创建一个传统的PB应用。
- 在系统树中右键点击你的工作区。
- 选择
New Target。 - 选择
PB Object标签页下的Application。 - 给你的应用起个名字(如
n_cst_app_hello),PB会自动创建一个应用对象。
步骤 3:创建窗口
窗口是应用程序的图形界面。
- 在系统树中右键点击你的应用目标。
- 选择
New->Window。 - 在窗口的属性视图中,将
Title属性设置为 "Hello, World!"。 - 从工具栏中拖拽一个
StaticText控件到窗口上。 - 选中这个StaticText控件,在属性视图中将其
Text属性设置为 "Hello, PowerBuilder!"。
步骤 4:编写脚本
我们需要让窗口在打开时显示出来。
- 在窗口的空白处双击,打开脚本视图。
- 从左边的下拉列表中选择
open事件。 - 在右侧的代码编辑区中,输入一行代码:
open(w_main) // 假设你给窗口命名为 w_main
注意:如果你的应用对象中已经写了
open(w_main),那么这一步可以省略。
步骤 5:运行应用程序
- 点击工具栏上的运行按钮(一个绿色的三角形)。
- PB会自动编译你的代码,然后运行你的应用程序,你应该能看到一个标题为 "Hello, World!" 的窗口,上面显示着 "Hello, PowerBuilder!"。
恭喜!你已经成功创建了你的第一个PB应用!
第二部分:核心概念与实战
第三章:PowerBuilder 语言基础
PB的脚本语言类似于Pascal,易于上手。
1 数据类型
- 标准类型:
integer,long,decimal,real,double,string,boolean,date,datetime,time。 - Any类型:可以存储任何类型的数据,但使用前最好进行类型检查和转换,否则可能引发运行时错误。
- 对象类型:如
window,datawindow,transaction等。
2 变量与常量
- 声明:使用
DECIMAL {l_dec_total}这样的格式。 - 作用域:
Shared(共享)、Global(全局)、Instance(实例)、Local(局部),推荐优先使用Local和Instance。 - 常量:使用
Constant关键字,如Constant integer MAX_ROWS = 100。
3 操作符与表达式
- 算术运算符:, , , ,
^(幂) - 关系运算符:,
>,<,<>,>=,<= - 逻辑运算符:
AND,OR,NOT - 连接运算符: (用于字符串连接)
4 控制流语句
-
IF...THEN...ELSE
IF integer_score >= 90 THEN ls_grade = 'A' ELSEIF integer_score >= 80 THEN ls_grade = 'B' ELSE ls_grade = 'C' END IF -
CHOOSE CASE (比多重IF更清晰)
CHOOSE CASE integer_choice CASE 1 ls_message = 'Option 1' CASE 2 ls_message = 'Option 2' CASE ELSE ls_message = 'Invalid choice' END CHOOSE -
DO...LOOP / FOR...NEXT
// FOR 循环 FOR i = 1 TO 10 // 循环体 NEXT // DO LOOP DO WHILE li_count < 100 // 循环体 li_count++ LOOP
第四章:数据窗口 - PB的利器
数据窗口是PB最核心、最强大的功能,它是一个集数据检索、显示、编辑、验证、格式化和报表生成于一体的智能对象。
1 创建数据窗口
- 在系统树中右键 ->
New->DataWindow。 - 选择数据窗口的风格,如:
- Grid:网格风格,最常用,类似Excel表格。
- Freeform:自由格式,适合单条记录的录入和显示。
- Tabular:列表风格,与Grid类似,但不如Grid灵活。
- Group:分组报表。
- Graph:图表。
- Crosstab:交叉报表。
- 选择数据源,如:
- Quick Select:快速选择,适用于简单的单表查询。
- SQL Select:SQL选择,功能最强大,可以支持多表连接、排序、分组等。
- Stored Procedure`:存储过程。
- 选择表和列,设置排序和分组等,然后点击
Finish。
2 在窗口中使用数据窗口
-
在窗口上拖放一个
DataWindowControl控件。 -
在属性视图中,找到
DataObject属性,点击下拉箭头,选择你刚刚创建的数据窗口对象(如d_employee_grid)。 -
在窗口的
open事件中,编写代码连接数据库并检索数据:// 声明一个事务对象 // 在PB中,通常使用SQLCA (SQL Communications Area) 作为默认的全局事务对象 // 在应用对象的 open 事件中,最好先连接数据库 // 假设连接已经建立,在窗口的 open 事件中: dw_1.SetTransObject(SQLCA) // 将数据窗口控件与事务对象关联 dw_1.Retrieve() // 执行检索
3 数据窗口常用函数
dw_1.Retrieve(): 检索数据。dw_1.Update(): 提交数据修改到数据库。dw_1.InsertRow(): 插入一行新数据。dw_1.DeleteRow(): 删除当前行。dw_1.SetItem(row_num, column_name, value): 设置指定单元格的值。dw_1.GetItemString(row_num, column_name): 获取指定单元格的字符串值。
第五章:数据库操作
1 事务对象
PB通过事务对象与数据库通信,最常用的是全局变量 SQLCA,在连接数据库前,必须正确配置 SQLCA 的属性。
2 连接数据库
通常在应用对象的 Open 事件中完成数据库连接。
// 应用对象 open 事件
SQLCA.DBMS = "ODBC" // 使用ODBC接口
SQLCA.AutoCommit = False // 不自动提交
SQLCA.DBParm = "ConnectString='DSN=MyDatabase;UID=user;PWD=pass;'"
// 连接数据库
CONNECT USING SQLCA;
// 检查连接是否成功
IF SQLCA.SQLCode <> 0 THEN
MessageBox("连接错误", "无法连接到数据库: " + SQLCA.SQLErrText)
HALT CLOSE // 关闭应用程序
END IF
3 断开数据库
在应用对象的 Close 事件中。
// 应用对象 close 事件 DISCONNECT USING SQLCA;
第六章:窗口与控件
窗口是用户界面的容器,控件是窗口上的元素。
1 常用控件
- CommandButton:按钮,用于触发动作。
- SingleLineEdit:单行文本框,用于输入少量文本。
- MultiLineEdit:多行文本框,用于输入大段文本。
- CheckBox:复选框。
- RadioButton:单选按钮。
- GroupBox:分组框,用于对相关控件进行分组。
- DataWindowControl:数据窗口控件,用于显示数据窗口对象。
2 事件与动作
每个控件都有预定义的事件,如 Clicked (点击), Modified (内容被修改), DoubleClicked (双击) 等,你需要在相应的事件中编写脚本来实现功能。
示例:点击按钮,将单行文本框的内容添加到数据窗口中。
// 按钮的 Clicked 事件
// 假设 sle_name 是单行文本框,dw_1 是数据窗口控件
string ls_name
long ll_new_row
ls_name = sle_name.Text // 获取文本框内容
// 检查是否为空
IF ls_name = '' THEN
MessageBox("提示", "姓名不能为空!")
RETURN
END IF
// 在数据窗口中插入一行
ll_new_row = dw_1.InsertRow(0)
// 设置新行的值
dw_1.SetItem(ll_new_row, "emp_name", ls_name)
// 清空文本框
sle_name.Text = ''
// 重新聚焦到文本框,方便输入
sle_name.SetFocus()
第三部分:进阶与最佳实践
第七章:用户对象
用户对象是PB的面向对象特性的重要体现,你可以将一组通用的功能封装成一个可重用的用户对象。
- 可视化用户对象:继承自标准控件(如按钮、文本框),并为其添加自定义属性、事件和函数,你可以创建一个带验证功能的文本框用户对象。
- 类用户对象:不可视的,用于封装业务逻辑和数据,你可以创建一个“订单处理”类用户对象,它包含计算总价、验证库存等方法。
优点:提高代码复用性,降低维护成本。
第八章:PFC (PowerBuilder Foundation Classes)
PFC是SAP官方提供的一套免费的应用开发框架,它是一个庞大的、预构建的类库,为PB开发者提供了大量现成的功能,如:
- 应用管理
- 窗口管理
- 菜单管理
- 数据窗口标准处理
- 事务管理
- 安全性
建议:对于中大型项目,强烈建议学习和使用PFC,它虽然有一定学习曲线,但能极大提高开发效率和软件质量。
第九章:部署应用程序
当你完成开发后,需要将你的应用打包,分发给最终用户。
-
生成可执行文件:
- 在PB中,点击
Build -> Executable或Build -> Machine Code(机器码编译,性能更好)。 - PB会生成
.exe文件。
- 在PB中,点击
-
部署所需文件:
- 除了
.exe文件,你还需要部署以下文件:- PB运行时库:如
pbdweXXX.dll(XXX为版本号)。 - 数据库接口:如
odbccpXXX.dll。 - 资源文件:如
.pbr文件,确保图片等资源能被正确加载。 - 数据窗口对象文件:
.pbd文件,如果使用机器码编译,这些对象会直接编译到.exe中,否则需要单独的.pbd文件。 - 配置文件:如
pb.ini,用于配置数据库连接等信息。
- PB运行时库:如
- 除了
-
安装程序:
手动部署文件非常繁琐,通常使用专业的安装制作工具(如InstallShield, Advanced Installer)来创建一个安装包,自动完成所有文件的复制、注册和配置。
总结与学习路径
- 打好基础:熟练掌握PB脚本语言、窗口控件和基本的事件驱动编程。
- 精通数据窗口:这是PB的核心,投入时间去学习数据窗口的各种显示风格、数据源、过滤、排序、计算列等高级功能。
- 理解面向对象:学习用户对象,思考如何将功能模块化,提高代码复用性。
- 学习PFC框架:如果条件允许,学习PFC会让你对PB的应用架构有更深的理解,开发能力也会上一个台阶。
- 动手实践:找一个小项目(如图书管理系统、通讯录)完整地做一遍,从需求分析到最终部署,这是最好的学习方式。
虽然PowerBuilder不再是市场主流,但它所蕴含的快速应用开发思想和成熟的C/S架构解决方案,对于理解企业级应用开发依然具有重要的价值,希望这份教程能帮助你顺利开启PowerBuilder的学习之旅!
