杰瑞科技汇

PowerBuilder实用教程,如何快速掌握核心技能?

PowerBuilder 实用教程

前言:为什么学习 PowerBuilder?

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

PowerBuilder实用教程,如何快速掌握核心技能?-图1
(图片来源网络,侵删)

本教程将带你走进PB的世界,从零开始,成为一名合格的PB开发者。


第一部分:基础入门

第一章:PowerBuilder 简介与环境搭建

1 什么是PowerBuilder?

PowerBuilder是Sybase公司(后被SAP收购)推出的一款基于客户端/服务器架构的快速应用开发工具,它以其独特的数据窗口技术而闻名,使得数据库应用程序的开发变得异常高效。

  • 核心特点
    • 数据窗口:PB的“灵魂”,一个智能的数据对象,能轻松实现数据检索、显示、编辑、报表生成等功能。
    • 面向对象:采用面向对象的思想,所有控件(窗口、按钮、菜单等)都是对象,拥有属性、事件和函数。
    • 第四代语言:提供强大的数据操纵语句(如SELECT, INSERT, UPDATE, DELETE),无需编写复杂的SQL代码即可操作数据库。
    • 可视化开发:通过拖拽控件、设置属性的方式快速构建用户界面。
    • 编译与部署:可将源代码编译成可执行文件,方便分发。

2 开发环境安装

PowerBuilder实用教程,如何快速掌握核心技能?-图2
(图片来源网络,侵删)
  1. 获取安装包:你需要从SAP官网上获取PowerBuilder Classic的安装包(通常是试用版或付费版),目前最新版本是2025 R3及后续版本。
  2. 安装步骤
    • 运行安装程序,按照向导提示进行操作。
    • 关键选项:在安装过程中,务必选择安装 .NET TargetClassic Target。.NET Target允许你使用C#或VB.NET来编写PB应用的逻辑,而Classic Target则是传统的PB脚本(PBLM)。
    • 数据库接口:根据你将要连接的数据库(如Oracle, SQL Server, Sybase等),选择并安装相应的数据库接口。
  3. 验证安装:安装完成后,启动PowerBuilder,检查是否可以正常打开。

3 PowerBuilder 开发界面初识

启动PB后,你会看到几个核心窗口:

  • 系统树:显示当前工作区的所有目标、库、对象,是项目的导航中心。
  • 画板:你进行编码和设计的主要区域,根据编辑的对象不同(如窗口、数据窗口、菜单),画板会显示不同的设计器和编辑器。
  • 输出窗口:显示编译、部署、搜索等操作的输出信息。
  • 属性视图:选中一个对象(如按钮)后,在这里可以设置其各种属性(文本、颜色、大小等)。
  • 脚本视图:编写事件处理函数的地方。

第二章:第一个PowerBuilder应用 - "Hello, World!"

让我们动手创建一个最简单的应用程序,感受PB的开发流程。

步骤 1:创建工作区

PowerBuilder实用教程,如何快速掌握核心技能?-图3
(图片来源网络,侵删)

工作区是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(局部),推荐优先使用 LocalInstance
  • 常量:使用 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 创建数据窗口

  1. 在系统树中右键 -> New -> DataWindow
  2. 选择数据窗口的风格,如:
    • Grid:网格风格,最常用,类似Excel表格。
    • Freeform:自由格式,适合单条记录的录入和显示。
    • Tabular:列表风格,与Grid类似,但不如Grid灵活。
    • Group:分组报表。
    • Graph:图表。
    • Crosstab:交叉报表。
  3. 选择数据源,如:
    • Quick Select:快速选择,适用于简单的单表查询。
    • SQL Select:SQL选择,功能最强大,可以支持多表连接、排序、分组等。
    • Stored Procedure`:存储过程。
  4. 选择表和列,设置排序和分组等,然后点击 Finish

2 在窗口中使用数据窗口

  1. 在窗口上拖放一个 DataWindowControl 控件。

  2. 在属性视图中,找到 DataObject 属性,点击下拉箭头,选择你刚刚创建的数据窗口对象(如 d_employee_grid)。

  3. 在窗口的 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,它虽然有一定学习曲线,但能极大提高开发效率和软件质量。

第九章:部署应用程序

当你完成开发后,需要将你的应用打包,分发给最终用户。

  1. 生成可执行文件

    • 在PB中,点击 Build -> ExecutableBuild -> Machine Code (机器码编译,性能更好)。
    • PB会生成 .exe 文件。
  2. 部署所需文件

    • 除了 .exe 文件,你还需要部署以下文件:
      • PB运行时库:如 pbdweXXX.dll (XXX为版本号)。
      • 数据库接口:如 odbccpXXX.dll
      • 资源文件:如 .pbr 文件,确保图片等资源能被正确加载。
      • 数据窗口对象文件.pbd 文件,如果使用机器码编译,这些对象会直接编译到 .exe 中,否则需要单独的 .pbd 文件。
      • 配置文件:如 pb.ini,用于配置数据库连接等信息。
  3. 安装程序

    手动部署文件非常繁琐,通常使用专业的安装制作工具(如InstallShield, Advanced Installer)来创建一个安装包,自动完成所有文件的复制、注册和配置。


总结与学习路径

  1. 打好基础:熟练掌握PB脚本语言、窗口控件和基本的事件驱动编程。
  2. 精通数据窗口:这是PB的核心,投入时间去学习数据窗口的各种显示风格、数据源、过滤、排序、计算列等高级功能。
  3. 理解面向对象:学习用户对象,思考如何将功能模块化,提高代码复用性。
  4. 学习PFC框架:如果条件允许,学习PFC会让你对PB的应用架构有更深的理解,开发能力也会上一个台阶。
  5. 动手实践:找一个小项目(如图书管理系统、通讯录)完整地做一遍,从需求分析到最终部署,这是最好的学习方式。

虽然PowerBuilder不再是市场主流,但它所蕴含的快速应用开发思想和成熟的C/S架构解决方案,对于理解企业级应用开发依然具有重要的价值,希望这份教程能帮助你顺利开启PowerBuilder的学习之旅!

分享:
扫描分享到社交APP
上一篇
下一篇