杰瑞科技汇

PowerBuilder 9.0教程怎么学?关键步骤有哪些?

PowerBuilder 9.0 是由 Sybase 公司(后被 SAP 收购)发布的一款经典的、功能强大的快速应用程序开发工具,它以其强大的数据窗口(DataWindow)技术而闻名,在金融、电信、企业级应用开发领域曾占据重要地位。

PowerBuilder 9.0教程怎么学?关键步骤有哪些?-图1
(图片来源网络,侵删)

虽然现在 PowerBuilder 已非主流开发工具,但在许多遗留系统的维护和升级中,它仍然扮演着关键角色,学习 PowerBuilder 9.0 对于维护现有系统或理解 RAD(快速应用开发)思想非常有价值。


第一部分:基础入门

PowerBuilder 简介

  • 核心思想:RAD(Rapid Application Development),通过可视化、事件驱化的方式快速构建企业级桌面/客户端-服务器应用。
  • 核心组件
    • 数据窗口:PowerBuilder 的灵魂,一个强大的数据对象,能同时处理数据的检索、展示、编辑、验证、更新等多种操作,将数据库操作与UI展示完美结合。
    • PowerScript:PowerBuilder 的编程语言,语法类似于 Pascal,结构清晰,易于上手。
    • 可视化画布:用于拖放控件(如按钮、文本框、数据窗口控件)来设计用户界面。
    • PBL (PowerBuilder Library):以 .pbl 为扩展名的文件,用于存放所有对象,包括窗口、菜单、用户对象、函数等,一个应用通常由多个 PBL 文件组成。
    • Application Object (应用对象):应用的入口点,负责定义应用的属性(如默认字体、图标)和启动时的脚本(通常用于打开主窗口)。

开发环境搭建

  1. 获取安装包:PowerBuilder 9.0 是较老的软件,您需要从合法渠道获取安装介质。
  2. 安装:运行安装程序,按照向导完成安装,建议安装在默认路径下。
  3. 配置数据库接口
    • PowerBuilder 通过 ODBC 或专用数据库接口(如 Oracle, Sybase ASE)连接数据库。
    • 安装后,需要配置 ODBC 数据源,在 Windows 的“ODBC 数据源管理器”中创建一个系统 DSN,指向您的目标数据库(如 SQL Server, Oracle)。
    • 在 PowerBuilder 中,通过 Database 画笔,可以测试和管理这些数据库连接。

创建第一个应用

  1. 启动 PowerBuilder:打开 PowerBuilder 9.0。
  2. 创建新工作区:选择 File -> New,在 Workspace 标签页下创建一个新的 Workspace(工作区),它是一个容器,用于管理你的所有应用。
  3. 创建新应用:在工作区中,右键选择 New,在 Target 标签页下创建一个新的 Application,给应用命名(如 my_first_app)。
  4. 创建主窗口
    • System Tree 中,找到你的应用,右键 New -> Window
    • 在窗口画布上,从 PainterBar 中拖入一个 StaticText 控件和一个 CommandButton 控件。
    • 修改 StaticTextText 属性为 "Hello, PowerBuilder!"。
    • 修改 CommandButtonText 属性为 "Close"。
  5. 编写脚本
    • 双击 "Close" 按钮,打开脚本编辑器。
    • Clicked 事件(按钮被点击时触发)中输入一行代码:Close(parent)parent 指的是当前按钮所在的窗口。
    • 关闭脚本编辑器。
  6. 运行应用
    • 右键点击你的应用对象,选择 Run my_first_app
    • 如果一切正常,你的第一个 PB 窗口应该会弹出来,点击按钮可以关闭它。

第二部分:核心概念与进阶

数据窗口 - 精华所在

数据窗口是 PB 的核心,也是最难掌握的部分。

  • 创建数据窗口
    • System Tree 中,右键 New -> DataWindow
    • 选择数据源(最常用的是 Quick SelectSQL Select)。
    • 选择展示风格(如 Grid(网格)、Freeform(自由形式)、Tabular(列表)等)。
    • 在画笔中,可以调整列的顺序、大小、字体、颜色等属性。
  • 在窗口中使用数据窗口
    • 在窗口上拖入一个 DataWindow 控件。
    • 在该控件的 Properties 窗口中,找到 DataObject 属性,选择你刚刚创建的数据窗口对象。
  • 常用 PowerScript 函数
    • dw_1.Retrieve(): 从数据库中检索数据。
    • dw_1.AcceptText(): 将用户在数据窗口控件中编辑的文本提交到数据缓冲区。
    • dw_1.Update(): 将数据缓冲区中的修改(增、删、改)保存回数据库。
    • dw_1.GetItemString(row_num, column_name): 获取指定行、列的数据。
    • dw_1.SetItem(row_num, column_name, value): 设置指定行、列的值。

示例:一个简单的数据窗口增删改查

  1. 创建一个数据窗口对象 d_employee,连接到 employee 表,选择 emp_id, emp_name, emp_salary 等字段。
  2. 创建一个窗口 w_employee_mgt,包含一个 DataWindow 控件 dw_employee,其 DataObjectd_employee
  3. 在窗口上添加四个按钮:检索新增保存删除
  4. 检索按钮的 Clicked 事件:
    dw_employee.Retrieve()
  5. 新增按钮的 Clicked 事件:
    // 在数据窗口末尾插入一行
    long ll_new_row
    ll_new_row = dw_employee.InsertRow(0)
    dw_employee.ScrollToRow(ll_new_row)
    dw_employee.SetColumn("emp_name") // 将焦点移动到姓名列
  6. 保存按钮的 Clicked 事件:
    if dw_employee.Update() = 1 then
        // 更新成功,提交数据库事务
        COMMIT;
        MessageBox("提示", "保存成功!")
    else
        // 更新失败,回滚事务
        ROLLBACK;
        MessageBox("错误", "保存失败: " + dw_employee.GetSQLPreview())
    end if
  7. 删除按钮的 Clicked 事件:
    long ll_current_row
    ll_current_row = dw_employee.GetRow()
    if ll_current_row > 0 then
        dw_employee.DeleteRow(ll_current_row)
    else
        MessageBox("提示", "请先选择一行要删除的数据!")
    end if

PowerScript 语言基础

  • 数据类型Integer, Long, String, Date, DateTime, Boolean, Any (可以存储任何类型的数据)。
  • 变量声明
    string ls_name
    integer li_age
    date ld_birthdate
  • 控制流
    • If...Then...Else:
      if li_age > 18 then
          ls_status = "Adult"
      else
          ls_status = "Minor"
      end if
    • For...Next:
      for i = 1 to 10
          ls_message += "Count: " + string(i) + "~n"
      next
    • Do...While / Do...Until:
      do while li_counter < 100
          // ... do something ...
          li_counter++
      loop
  • SQL 语句:PB 可以直接嵌入 SQL 语句。
    DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
    // SQLSA 是一个预定义的 SQL 语句对象
    SQLSA = "SELECT emp_name FROM employee WHERE emp_salary > :min_salary"
    PREPARE SQLSA FROM :SQLSA;
    OPEN DYNAMIC my_cursor USING :ls_min_salary;
    // ... 使用 FETCH ... INTO 循环读取数据 ...
    CLOSE my_cursor;

窗口与菜单

  • 窗口:应用的界面容器,可以设置其类型(主窗口、响应式窗口、弹出窗口、子窗口)、位置、大小、边框等。
  • 菜单:通过 Menu 画笔创建,菜单项可以关联到窗口,也可以通过 OpenSheet() 等函数动态打开。
  • 事件:窗口和控件
PowerBuilder 9.0教程怎么学?关键步骤有哪些?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇