作者简介
前言
第一部分PowerBuilder开发环境
第1章 PowerBuilder集成开发环境
1.1 目标
1.2 IDE的发展历史
1.3 工作区和目标
1.3.1 工作区
1.3.2 目标
1.4 IDE研究
1.4.1 IDE工具栏
1.4.2 IDE菜单选项
1.4.3 System Tree
1.4.4 Clip window
1.4.5 Output Window
1.4.6 Design Area
1.5 IDE的其他有用特性
1.5.1 To Do List(任务列表)
1.5.2 Keyboard Shortcuts(键盘快捷键)
1.5.3 配置、跟踪和调试
1.5.4 其他工具
1.6 IDE的高级特性
1.7 小结
第2章 源代码控制
2.1 目标
2.2 为什么要实现版本控制
2.3 PowerBuilder和SCC的集成
2.3.1 PowerBuilder与scc集成的发展简介
2.3.2 早期的代码管理体系结构
2.3.3 SCC接口中体系结构的变化
2.3.4 新的SCC文件类型
2.3.5 PBNative的体系结构变化
2.4 PowerBuilder 8和PowerBuilder 9中IDE的变化
2.4.1 工作区属性对话框
2.4.2 安装注意事项
2.4.3 系统树和库画板SCC图标
2.4.4 库画板
2.5 源代码控制菜单
2.5.1 工作区级上下文菜单
2.5.2 目标级上下文菜单
2.5.3 PBL级上下文菜单
2.5.4 对象级上下文菜单
2.6 源代码控制操作
2.6.1 Add to Source Control(添加到源代码控制)
2.6.2 Remove from Source Control(从源代码控制中删除)
2.6.3 Refresh Status(状态刷新)
2.6.4 Check Out(签出)
2.6.5 Check In(签入)
2.6.6 Undo Checkout(撤销签出)
2.6.7 Get Latest Version(获取最新版本)
2.6.8 Show Differences(差别显示)
2.6.9 Show History(历史显示)
2.6.10 SCC Propenies(SCC属性)
2.6.11 Backup SCC Status Cache(备份SCC状态缓存)
2.6.12 Run Source Control Management Tool(运行源代码控制管理工具)
2.6.13 Advrdnced 0ptions(高级选项)
2.7 PowerBuilder 9中有效的SCC实现
2.8 工程工作区和目标的计划
2.9 PB 9中PBNative的设置
2.9.1 第一步--文件夹和PBL的结构调整
2.9.2 第二步--创建工作区和目标
2.9.3 第三步--设置PBNative知识库
2.9.4 第四步--添加其他开发者
2.9.5 第五步--有选择地使用工作PBL
2.10 第三方SCC提供程序的设置
2.11 PowerBuilder 9的分支与合并
2.11.1 初始化设置和注册
2.11.2 常用操作
2.11.3 建立分支工作区和视图
2.12 第三方SCC提供程序简介
2.13 小结
第3章 应用程序的编译和部署
3.1 目标
3.2 这些年PowerBuilder部署的发展
3.3 PowerBuilder 9中应用程序的部署
3.3.1 编译器基础
3.3.2 应用程序包
3.3.3 动态运行库的使用
3.3.4 外部资源的使用
3.3.5 工程画板
3.3.6 目标级部署
3.3.7 工作区级部署
3.3.8 构建运行库
3.4 使用0rcaScript的命令行部署
3.4.1 简介
3.4.2 体系结构
3.4.3 OrcaScript命令参考
3.4.4 PowerGen
3.5 向终端用户交付完成的应用程序
3.5.1 环境组件
3.5.2 应用程序组件
3.6 其他提示和技巧
3.6.1 将版本信息构建进可执行文件
3.6.2 从数据库中部署应用程序
3.7 小结
第4章 lnfoMaker
4.1 目标
4.2 InfoMaker环境
4.2.1 库画板
4.2.2 报表画板
4.2.3 管道和数据库画板
4.2.4 表单画板
4.3 部署
4.4 新特性
4.4.1 可执行文件的版本编号
4.4.2 命令行参数
4.4.3 新的文件存储格式
4.4.4 XML
4.5 在何处使用PowerBuilder
4.5.1 自定义表单样式
4.5.2 默认表单样式
4.5.3 行为
4.5.4 注册表中工具栏的设置
4.5.5 非默认的表单样式
4.6 自定义Imstyle9.pbl
4.7 局限性
4.8 代码的调试
4.9 在InfoMakef表单中不使用PowerBuilder编写代码
4.10 小结
第5章 高级编码技术
5.1 目标
5.2 开发环境
5.2.1 设置开发环境
5.2.2 操作系统的支持(XP)
5.2.3 库的组织
5.2.4 库的维护
5.3 IDE
5.3.1 快捷键的使用
5.3.2 PowerPanel的扩展
5.4 编码
5.4.1 编码框架
5.4.2 事件又是怎样的呢
5.4.3 异常处理
5.4.4 性能
5.4.5 性能小结
5.5 数据库的独立性
5.5.1 数据库设计
5.5.2 DataWindow
5.5.3 嵌入式SQL
5.6 小结
第二部分 DataWindow
第6章 高级DataWindow技术
6.1 目标
6.2 使用表达式
6.2.1 设计时的表达式
6.2.2 布尔计算
6.2.3 其他计算
6.2.4 运行时的表达式
6.2.5 使用带的表达式
6.2.6 使用形状的表达式
6.3 DataWindow报告
6.3.1 嵌套报告
6.3.2 复合报告
6.3.3 动态嵌套报告
6.3.4 复合和嵌套的区别在哪里
6.4 动态SQL
6.4.1 动态SQL(格式1)
6.4.2 动态SQL(格式2)
6.4.3 动态SQL(格式3)
6.4.4 动态SQL(格式4)
6.5 其他关于SQL的考虑
6.5.1 SQLPreview事件
6.5.2 TABLE.SELECT属性
6.5.3 关于Describe函数的重要注意事项
6.5.4 SetSQLSelect函数
6.5.5 为什么TABLE/SELECT比SetSQLSelect更受欢迎
6.5.6 动态DataWindow
6.5.7 最后的关于SQL的想法
6.6 使用带的乐趣
6.6.1 基础
6.6.2 改变Header带
6.6.3 删除Detail行
6.6.4 组的使用
6.6.5 在带之间移动对象
6.7 动态创建DataWindow对象
6.7.1 裸露的DataWindow
6.7.2 理解语法
6.7.3 创建动态对象
6.8 新的客户/服务器DataWindow特性
6.8.1 增强的DataWindow打印功能
6.8.2 ClipText
6.8.3 OverridePrintJob
6.8.4 PrinterName
6.8.5 多副本打印
6.8.6 Collate
6.8.7 检索子DataWindow
6.8.8 滚动Group报告
6.9 小结
第7章 终极DataWindow
7.1 目标
7.2 绘制简单的图形
7.3 矩形的创建和操纵
7.3.1 uo_lbd事件
7.3.2 uo_mm事件
7.3.3 uo_lbu事件
7.3.4 选择对象
7.4 在DataWindow之内和之间移动图像
7.5 在DataWindow之间移动图像
7.6 使用元数据创建多图形的DataWindow
7.6.1 控制可见的DataWindow对象
7.6.2 将元数据应用到DataWindow对象的可见属性
7.6.3 构造元数据
7.7 操纵元数据
7.7.1 为某些DataWindow对象属性赋负值
7.7.2 跨越多行来显示基于行的对象
7.8 包含的源代码
7.9 小结
第8章 XML DataWindow
8.1 介绍
8.2 什么是ML
8.3 XML解析器
8.4 DataWindow导出引擎
8.5 导出模板:图形用户界面
8.5.1 导出模板的报头部分
8.5.2 导出模板细节部分
8.5.3 将DataWindow元素映射到XML节点
8.6 导出XML
8.7 示例I
8.8 示例Ⅱ
8.9 示例Ⅲ
8.10 示例Ⅳ
8.11 导入XML
8.12 新DLL
8.13 小结
第三部分 数据库连接
第9章 Sybase Adaptive Server Enterprise
9.1 目标
9.2 连接ASE
9.3 数据类型
9.4 DateWindow
9.4.1 将SQL语句用于源
9.4.2 将存储过程用于源
9.4.3 将存储过程用于更新
9.5 存储过程
9.5.1 作为远程过程调用
9.5.2 作为嵌入式SQL
9.5.3 可选参数
9.6 嵌入式SQL
9.7 特殊问题
9.7.1 identity列
9.7.2 隐藏对象所有权
9.7.3 使用DBHandle和CT-LIB
9.7.4 使用print语句进行调试
9.8 小结
第10章 Sybase Adaptive Server Anywhere
10.1 目标
10.2 通过PowerBuilder连接
10.3 数据类型
10.4 开发需要考虑的因素
10.4.1 标识符大小写
10.4.2 带有所有者名称的限定SQL
10.5 与数据库交互
10.5.1 DataWindow
10.5.2 直接调用存储过程
10.5.3 嵌入式SQL
lO.6 小结
第1l章 Oracle
11.1 目标
11.2 连接Oracle
11.3 数据类型
11.4 DataWindow
11.4.1 为数据源使用SQL语句
11.4.2 为数据源使用存储过程
11.4.3 为更新而使用存储过程
11.4.4 OLE数据库Blob列
11.5 存储过程
11.5.1 作为远程过程调用(RPC)
11.5.2 作为嵌入式SQL
11.6 嵌入式SQL
11.7 特殊问题
11.7.1 用户定义数据类型
11.7.2 非法对象
11.7.3 使用同义词隐藏方案所有权
11.7.4 非智能(代理)主键
11.7.5 安全性
11.7.6 故障切换(failover)支持
11.7.7 多个Oracle Home
11.7.8 典型的0RA-xxxxx错误
11.7.9 慢连接
11.7.10 故障排除
11.7.11 全球语言支持
11.7.12 共享服务器
11.7.13 连接到非Oracle数据库
11.7.14 使用DBHandle和OCI DLL
11.8 小结
第12章 ODBC
12.1 目标
12.2 什么是ODBC
12.3 如何使用ODBc
12.3.1 建立配置
12.3.2 连接数据库
12.3.3 建立对ODBC API的调用
12.3.4 执行对ODBC API的调用
12.3.5 枪查ODBC API调用的返回值
12.4 建立ODBC数据源
12.5 你机器上的ODBC数据源
12.6 ODBC与PowerBuilder事务对象
12.7 神奇的文件--PBODB90.INI
12.8 排除ODBC故障
12.8.1 Database Trace
12.8.2 ODBC Driver Manager Trace
12.9 ODBC资源
12.10 小结
第13章 JDBC
13.1 目标
13.2 JDBC体系结构
13.2.1 类型1驱动器
13.2.2 类型2驱动器
13.2.3 类型3驱动器
13.2.4 类型4驱动器
13.3 Sybase jConnectfor JDBC
13.4 开始
13.5 指定数据源
13.6 建立连接
13.7 执行语句和返回结果
13.8 Resultset和数据库元数据
13.9 DatabaseMetaData
13.10 ResultSetMetaData
13.11 使用sybase jconnect的例子
13.12 JDBC中的事务
13.13 在PowerBuilder中使用JDBC
13.13.1 准备使用JDBc接口
13.13.2 从PowerBuilder定义数据库原型
13.13.3 为在EAServer中运行的组件配置选项
13.14 小结
第14章 通过sybase Mainframe connect的IBM DB2和CICS
14.1 目标
14.2 DirectConnect体系结构概述
14.3 通过PowerBuilder连接
14.3.1 配置Open Client(开放客户端)
14.3.2 配置PowerBuilder连接配置文件
14.3.3 其他的连接参数
14.3.4 连接初始化
14.4 数据类型
14.4.1 Character数据类型
14.4.2 Distinct数据类型
14.4.3 不支持的数据类型
14.5 开发需要考虑的因素
14.5.1 标识符大小写
14.5.2 用所有者名称限定SQL
14.5.3 表清单
14.5.4 PowerBuilder扩展属性表
14.6 访问外部数据
14.6.1 无数据
14.6.2 远程过程调用(RPC)
14.6.3 远程存储过程(RSP)
14.6.4 DB2自身存储过程调用
14.6.5 处理警告
14.7 安全接口
14.7.1 SYPM事务
14.7.2 TRS选项
14.7.3 经由DB2 Access Service的sp_password
14.8 小结
第15章 IBM Informix
15.1 目标
15.2 连接Informix
15.2.1 Setnet32配置
15.2.2 IBM Informix的PowerBuilder数据库配置文件的建立
15.3 数据类型
15.3.1 DATETIME和TIME数据类型
15.3.2 INTERVAL数据类型
15.3.3 SERIAL 数据类型
15.3.4 TEXT和BYTE数据
15.3.5 其他数据类型
15.4 使用存储过程
15.4.1 在DataWindow之内
15.4.2 作为一个RPC FUNC
15.4.3 在嵌入式SQL内
15.4.4 处理RAISE EXCEPTION
15.5外部联合语法
15.6 日志模式
15.7 AutoCommit
15.8 隔离级别(isolation level)
15.9 小结
第四部分 高级课题
第16章 PowerBuilder基础类库(PFC)
16.1 目标
16.2 什么是PFC
16.3 什么是SBA
16.4 PFc体系结构
16.5 PFC主要对象和服务
16.5.1 PFC对象
16.5.2 PFC服务
16.6 PFC开始向导
16.7 PFC快速入门
16.8 PFC示例应用
16.9 使用公共PFC对象和服务
16.9.1 PFC常量
16.9.2 菜单
16.9.3 数据窗口(u_dw)
16.9.4 Resize服务
16.9.5 Linkage服务
16.9.6 分隔条
16.9.7 状态栏服务
16.10 更多预编码脚本
16.10.1 应用程序对象
16.10.2 窗口(W_master或Descendant)
16.10.3 数据窗口
16.11 提示和诀窍--从PFC中获得最大利益
16.12 速度要求
16.13 调试PFC
16.13.1 避免出现activate事件
16.13.2 PFC调试日志
16.14 PFC的变化
16.14.1 PowerBuilder 6中PFC的变化
16.14.2 PowerBuilder 7中PFC的变化
16.14.3 PowerBuilder 8中PFC的变化
16.14.4 PowerBuilder 9中PFC的变化
16.15 PFC资源
16.16 小结
第17章 第三方工具
17.1 目标
17.2 目前的状况
17.3 如果不去找,就找不到
17.3.1 在因特网上寻找工具
17.3.2 出版文章和广告
17.4 服务于为我们提供服务的人
17.5 购买与构建--激战正酣
17.6 对选择产品的建议
17.6.1 了解自己的需求
17.6.2 了解哪些是可用的
17.6.3 灵活性
17.6.4 考虑重组你的业务过程
17.6.5 现实
17.6.6 仔细考虑生产产品的公司的稳定性
17.6.7 购买源码
17.6.8 获得参考
17.6.9 别为小钱出汗
17.7 工具类型
17.7.1 前期开发工具
17.7.2 协同执行工具
17.7.3 提高效率的工具
17.8 产品列表
17.8.1 编码实用工具
17.8.2 重新生成/构造工具
17.8.3 测试工具
17.8.4 Web移植工具
17.8.5 Case、设计和分析工具
17.8.6 代码框架
17.8.7 终端用户报表工具
17.8.8 其他的实用工具
17.9 其他Sybase工具
17.10 小结
第18章 公共控件
18.1 目标
18.2 Win32 API是什么
18.2.1 寻找好的文档
18.2.2 C语言风格的文档
18.2.3 从C的数据类型到PowerBuilder的数据类型的转换
18.2.4 从Win32 API调用到PowerBuilder外部函数的转换
18.2.5 SendMessageA和SendMessageW的区别
18.2.6 重载SendMessage
18.2.7 为消息ID创建常量
18.2.8 从C的结构到PowerBuilder结构的转换
18.2.9 封装Win32 API调用
18.2.10 回顾
18.3 消息子系统
18.3.1 窗口句柄和事件
18.3.2 编程实现发送消息
18.3.3 子窗口、父窗口和通知消息
18.3.4 编程创建窗口
18.3.5 回顾
18.4 公共控件
18.4.1 公共控件列表清单
18.4.2 公共控件DLL版本
18.4.3 如何确定安装的COMCTL32.DLL是哪个版本
18.4.4 回顾
18.5 PowerBuilder外部可视化对象
18.6 封装一个公共控件
18.6.1 从哪里开始
18.6.2 初始化公共控件
18.6.3 窗口风格和类名
18.6.4 消息ID
18.6.5 向公共控件发送消息
18.6.6 在函数中封装消息
18.6.7 将实现与可视化控件联系起来
18.6.8 实现非可视化用户对象
18.6.9 回顾
18.7 创建可视化组件
18.7.1 使用公共控件
18.7.2 回顾
18.8 小结
第19章 PowerBuilder本机接口(PBNI)
19.1 目标
19.2 什么是PBNI
19.2.1 IPB_Session
19.2.2 IPB_Value
19.2.3 IPB_Arguments
19.2.4 IPB_VM
19.3 PBNI SDK
19.4 构建PBNI扩展
19.4.1 实现PBNI类
19.4.2 PBNI要求的功能
19.4.3 构建PBNI扩展DLL
19.5 你的第一个PBNI类
19.5.1 创建PBNI DLL
19.5.2 创建PBD
19.5.3 创建PB客户端
19.5.4 示例回顾
19.6 使用PBNI对象
19.6.1 用PowerBuilder交换数据
19.6.2 调用PowerScript对象函数
19.6.3 回顾PBNI回调示例
19.7 触发PowerBuilder事件
19.8 PBNI全局函数
19.9 从PBX内部调用PowerScript系统函数
19.10 访问和操作数组
19.10.1 PBBoundedArrayCreator
19.10.2 PBUnboundedArrayCreator
19.10.3 PBArrayAccessor
19.10.4 PBBoundedObjectArrayCreator
19.10.5 PBUnboundedObjectArrayCreator
19.10.6 PB0bjectArrayAccessor
19.11 PBNI可视化对象
19.11.1 GetWindowClassname
19.11.2 CreateControl
19.11.3 可视化PBNI示例回顾
19.12 在PowerBuilder中处理PBNI异常
19.13 调试PBNI类
19.14 部署你的PBNI扩展
19.15 在第三方应用程序中加载PowerBuilder虚拟机
19.16 PBNI实用工具
19.16.1 PBSIG90
19.16.2 PBX2PBD90
19.17 小结
第20章 对象链接与嵌入
20.1 目标
20.2 OLE环境
20.2.1 早期绑定与晚期绑定
20.2.2 ActiveX设计器
20.3 OLE自定义控件
20.4 OLE自动化
20.5 OLEStream和OLEStorage
20.6 小结
第21章 未来的方向
21.1 目标
21.2 前景
21.3 .NET
21.3.1 对XML服务的支持
21.3.2 Data Window.NET和DataStore.NET
21.3.3 从PowerBuilder IDE中创建.NET对象
21.3.4 对.NET的支持
21.4 Java
21.4.1 EAServer中的Web服务
21.4.2 EJB客户端、PowerBuilder Web服务和JSP
21.4.3 第三方应用服务器中的Power.Builder NVO
21.5 移动目标
21.6 IDE集成
21.7 小结
附录
附录A Sybase自适应服务器企业参考手册
附录B Oracle参考手册
附录C 第三方工具参考手册