第一部分 概述 1
第1章 绪论 1
1.1 为何有些人不用Oracle Developer 1
1.2 本书所涉及的范围 2
1.2.1 对Web的覆盖面 3
1.2.2 本书的覆盖面 3
1.2.3 为什么讨论标准 4
1.2.4 版本号策略 4
1.3 本书的读者对象 5
1.4 本书是如何组织的 5
1.5 怎样获得更多信息 6
1.5.1 获得更多信息的策略 6
1.5.2 Oracle用户信息 7
1.6 关于Developer Forms数据体系结构的回顾 8
1.7 示例文件 9
第2章 Oracle Developer版本6的新特性 10
2.1 如果跳过版本2怎么办 10
2.1.1 Forms从版本1到版本2的变化 10
2.1.2 Reports从版本1到版本2的改变 12
2.2 Developer版本6对Oracle8的支持 13
2.2.1 对象数据类型 13
2.2.2 PL/SQL 8 15
2.3 Forms Builder的新特性 16
2.3.1 使用方便的特性 16
2.3.2 Web特性 28
2.4 Report Builder的新特性 31
2.4.1 灵活使用 32
2.4.2 Web特性 35
第3章 SQL和PL/SQL标准 37
3.1 为什么制定代码标准 37
第二部分 Developer的基本标准 37
3.1.1 易读性 38
3.1.2 文档 38
3.2 强制执行标准 38
3.2.1 不使用代码标准的10个重要理由 38
3.2.2 答案是什么 39
3.2.3 帮助工具 39
3.3 通用代码标准 40
3.3.1 最长30个字符 40
3.3.2 缩进使用3个空格字符 40
3.3.3 关键字大写 41
3.3.4 小写用户定义的元素 42
3.3.5 一行不超过80个字符 42
3.3.6 等宽字体 44
3.3.7 每行做一件事 44
3.3.8 文档注释 45
3.3.9 将数据库对象的名字记到账户上 46
3.4 SQL代码标准 47
3.4.1 大写和小写 47
3.4.2 空格和缩进 47
3.4.3 代码注释 48
3.4.4 命名约定 49
3.4.5 代码的组织 50
3.4.6 样本代码 50
3.5 PL/SQL代码标准 51
3.5.1 大小写 51
3.5.2 空格和缩进 51
3.5.3 注释代码 52
3.5.4 命名规则 54
3.5.5 代码的用法 57
3.5.6 样本代码 63
4.1 表单查询文本 66
第4章 建立块的基础 66
4.2 不根据任何东西建立块 67
4.3 根据数据表建立块 68
4.4 根据视图建立块 69
4.4.1 可更改视图 70
4.4.2 带有INSTEAD OF触发器的视图 71
4.4.3 不可更改视图 73
4.4.4 实现基于视图的块 74
4.5 创建基于过程的块 75
4.5.1 PL/SQL表过程 75
4.5.2 REF CURSOR过程 76
4.5.3 实现基于过程的块 76
4.6 根据FROM子句查询建立块 82
4.7 根据事务触发器创建块 84
5.1 表单的开发过程 86
第5章 Forms的GUI标准 86
5.1.1 第一阶段——非功能故事板 87
5.1.2 第二阶段——半功能原型 88
5.1.3 第三阶段——产品表单 89
5.2 表单开发指南 89
5.2.1 表单的大小 89
5.2.2 屏幕的分辨率和监视器的大小 89
5.2.3 屏幕实际状况 90
5.2.4 项:字体、颜色和属性 93
5.2.5 文本、标签、线条和矩形 94
5.3 表单布局编辑器的技巧和技术 95
5.4 各种表单标准技术 95
5.4.1 延迟要求的强制性属性 95
5.4.2 建立目录结构 96
5.4.3 在Form Builder中排列窗口 96
5.4.6 开发环境中的快捷键 97
5.4.5 表单对象的注释属性 97
5.4.4 排列块和项的次序 97
第6章 表单命名约定 98
6.1 为什么要为表单对象命名 99
6.2 命名约定考虑 99
6.2.1 块命名考虑 99
6.2.2 其他考虑 100
6.3 特殊对象的命名约定 101
6.3.1 应用程序系统 101
6.3.2 表单和对象库 102
6.3.3 程序库 109
6.3.4 菜单 110
第7章 表单中的代码放在哪里 112
7.1 代码放置的标准 112
7.2 程序包与独立的程序 112
7.2.1 程序包的好处 113
7.2.2 程序包的缺点 114
7.3 数据库服务器与表单 115
7.3.1 如何分离表单代码 116
7.3.2 其他数据库代码源 117
7.4 处理Forms功能 118
7.4.1 如何处理Forms功能 119
7.4.2 表单级触发器 120
7.5 触发器与程序单元 120
7.6 表单与程序库 121
7.7 程序库 122
7.7.1 通用程序库 123
7.7.2 应用程序专用的程序库 123
7.7.3 表单专用的程序库 123
7.8 子类化与从对象库中拷贝 124
7.9 哪一级的触发器 125
7.9.2 另外的例子 127
7.9.3 选项 127
7.9.1 执行层次 127
7.10 开发过程 128
7.11 通用准则 129
第8章 Reports开发标准 130
8.1 使报表通用化 130
8.1.1 通用化报表的好处 130
8.1.2 通用化报表的缺点 131
8.1.3 什么时候使报表通用化 131
8.2 设置报表标准 131
8.2.1 打印硬件 131
8.2.2 把报表的代码放在哪里 133
第9章 报表命名约定 137
9.1 命名报表 137
9.2 为查询命名 137
9.3 组的命名 138
9.4.1 封闭框架 139
9.4 命名框架 139
9.4.2 重复框架 141
9.5 命名显示域 141
9.6 命名程序单元 141
9.7 命名模板项 141
第三部分 Forms模板 143
第10章 Forms模板基础 143
10.1 Forms和VRAD 143
10.2 什么是模板表单 144
10.2.1 使用模板的优点 144
10.2.2 使用模板的缺点 145
10.2.3 在模板中放什么 146
10.3 在模板中使用的Form Builder特性 154
10.3.1 模板支持 154
10.3.2 子类 155
10.3.3 对象组 157
10.3.4 对象库 159
10.4 模板系统结构 163
10.5 怎样使用模板 166
第11章 构造Forms模板系统 167
11.1 过程 167
11.1.1 生命周期 167
11.1.2 从哪里开始 168
11.1.3 RAD入门 169
11.1.4 步骤总结 169
11.2 代码和对象的通用化 170
11.2.1 代码的通用化 170
11.2.2 编写通用对象 174
11.3 对象库元素 177
11.3.1 标准对象 178
11.3.2 可选对象 181
11.3.4 项 182
11.3.3 容器 182
11.3.5 其他的SmartClasses 183
11.4 其他模板任务 185
11.4.1 参考表单 185
11.4.2 模板表单 186
11.4.3 为模板文件编写文档 186
11.4.4 菜单模板 187
11.4.5 修改模板组件 188
11.5 特殊类型的模板 189
11.5.1 选项卡界面 190
11.5.2 导航模板 190
11.5.3 管理模板 190
11.5.4 定位器模板 191
11.5.5 层次树模板 191
11.5.6 特定工程模板 191
12.1.1 放置模板文件 193
12.1 安装模板 193
第四部分 高级Forms主题 193
第12章 以模板为基础建立表单 193
12.1.2 设置开发环境 194
12.1.3 使用模板版本 194
12.1.4 设置数据访问 195
12.2 创建新表单 195
12.3 添加数据对象 196
12.3.1 使用块向导 196
12.3.2 手工建立块 202
12.4 应用SmartClasses 202
12.4.1 怎样进行SmartClass 203
12.4.2 选择哪个SmartClass 204
12.4.3 对其他对象进行SmartClass 204
12.5 修改模板代码 205
12.5.1 已子类化的触发器 205
12.4.4 移去SmartClass 205
12.5.2 为什么拷贝程序单元 207
12.5.3 STARTUP程序包 207
12.5.4 UTIL程序包 212
12.5.5 添加可重用对象和代码 214
12.6 增加其他对象 215
12.6.1 增加可重用组件 215
12.6.2 增加其他对象 215
12.7 增加其他代码 216
第13章 在Web上发布Forms 218
13.1 Web表单环境 219
13.1.1 Java虚拟机 220
13.1.2 中间层 220
13.1.3 Web表单的运行时期 221
13.1.4 优点 224
13.2 Oracle信息导航文档 225
13.1.5 开发环境 225
13.3 一般建议 226
13.3.1 为Web进行设计 226
13.3.2 测试Web 227
13.3.3 分割代码 227
13.3.4 了解“瘦客户机”的含义 227
13.3.5 建立用户期望 228
13.3.6 重新编译表单 228
13.3.7 简化表单 228
13.3.8 使用认证的客户JVM 229
13.3.9 设置基础结构 229
13.4 技术和考虑 229
13.4.1 操作系统 230
13.4.2 降低网络流量 231
13.4.3 设计差别 234
13.4.4 限制和变通办法 236
第14章 Forms帮助系统 238
14.1 需要多少帮助 238
14.1.1 哪一种层次的帮助 238
14.1.2 需要多少内容 239
14.2 内部Forms帮助 240
14.3 表格式帮助 241
14.3.1 帮助系统的组件 241
14.3.2 查询机制 245
14.3.3 增强系统 248
14.3.4 使用帮助窗口 249
14.3.5 其他表格式的帮助系统 249
14.4 WinHelp帮助系统 250
14.5 这是什么 251
14.5.1 应用WinHelp 251
14.5.2 怎样结合WinHelp和Forms 252
14.6.1 HTML形式的帮助 255
14.6 其他的帮助选择对象 255
14.6.2 用Designer生成帮助系统 256
第15章 定位器表单 257
15.1 设计定位器项 258
15.1.1 弹出列表和LOV 259
15.1.2 复选框 259
15.2 实现定位器查询准则 260
15.2.1 实现定位器 260
15.2.2 实现简单的数字项和简单的字符项 260
15.2.3 查询其他表 262
15.3 通用项查询 263
15.4 定位器结果块 265
第16章 多值选择对象 266
16.1 复选框 267
16.2 单选组 269
16.3.1 实现弹出列表 272
16.3 列表项 272
16.3.2 弹出列表的限制 273
16.4 值列表 273
第17章 集成Forms和Reports 275
17.1 从Forms调用Reports 275
17.1.1 向报表传递信息 276
17.1.2 处理参数列表 276
17.2 绑定变量和词汇参数 277
17.2.1 绑定变量 277
17.2.2 词汇参数 278
第五部分 Reports的应用 281
第18章 Reports综述 281
18.1 Reports Builder的体系结构 282
18.1.1 Data model数据模型 282
18.2 高级特性和尚未使用的特性 284
18.1.4 Live Previewer实况预览 284
18.1.3 Parameter Form参数表单 284
18.1.2 Layout Model布局模型 284
18.2.1 词汇参数 285
18.2.2 内置的PL/SQL函数 285
18.3 报表向导 285
18.4 数据模型 286
18.4.1 建立查询 287
18.4.2 组 288
18.4.3 汇总列和公式列 288
18.5 布局模型 292
18.6 对象导航器 295
18.6.1 Live Previewer 295
18.6.2 数据模型 295
18.6.3 布局模型 296
18.6.4 参数表单 296
18.6.7 附加库 297
18.6.8 模板 297
18.6.6 程序单元 297
18.6.5 报表触发器 297
18.6.9 外部SQL库 298
18.6.10 PL/SQL库 298
18.6.11 Debug Action and Stack 298
18.6.12 内置程序包 298
18.6.13 数据库对象 298
第19章 报表数据模型 299
19.1 精心设计查询——让它简单 299
19.1.1 查询生成器 299
19.1.2 多重查询 300
19.1.3 使用视图 303
19.1.4 给列取别名 304
19.1.5 在查询中选择PL/SQL函数 304
19.1.7 报表的临时数据表 305
19.1.6 外部连接 305
19.2 非查询字段 306
19.2.1 公式列 306
19.2.2 占位符列 306
19.2.3 报表层对象 307
19.3 组 308
19.3.1 Break列 309
19.3.2 指定组 310
19.3.3 组过滤器 311
第20章 报表布局模型 312
20.1 使用布局模型 313
20.1.1 使用框架 314
20.1.2 打印方向 317
20.1.3 垂直和水平弹性 317
20.1.4 折行模式 320
20.1.6 Additional default layout工具 321
20.1.5 限制模式 321
20.1.7 增加字段 322
20.1.8 移动对象 322
20.2 锚点:让它呆在属于它自己的地方 323
20.3 格式触发器 324
第21章 使用和建立Reports模板 325
21.1 综述 325
21.2.1 模板编辑器——数据模型 326
21.2 模板结构 326
21.2.2 模板编辑器——布局模型 327
21.2.3 报表触发器 330
21.2.4 程序单元 330
21.2.5 附属库 330
21.3 创建样本模板 330
21.3.1 数据模型 331
21.3.2 布局模型 331
21.3.4 改变模板的缺省设置 334
21.3.3 程序单元和附属库 334
21.4 设置报表模板标准 336
第22章 建立报表 337
22.1 准备建立报表 337
22.2 建立报表步骤 339
第六部分 Developer的应用 347
第23章 测试问题与解答 347
23.1 Oracle Developer的专业知识 347
23.2 关于测试问题 347
23.3 Oracle Forms测试问题 347
23.3.1 Forms初级问题 348
23.3.2 Forms中级问题 353
23.3.3 Forms高级问题 356
23.4 Oracle Reports测试问题 360
23.4.1 Reports初级问题 360
23.4.2 Reports中级问题 364
23.4.3 Reports高级问题 367
23.5 计算答案得分 372
第24章 Reports技巧与技术 373
24.1 页面中断 373
24.2 表单类型的报表中页面布局的控制 376
24.3 复杂的报表中心 378
24.4 使用圆点引导的策略 378
24.5 管理带有表单的报表 379
24.6 更换页标题 380
24.7 记录子集的计数 380
24.8 以函数为基础的查询 381
24.8.1 程序包 381
24.8.2 其他步骤 382
24.9.4 优化SQL 383
24.9.3 不要从数据库中提取不显示的从属记录 383
24.9.1 使用小数量的查询 383
24.9 报表中的性能优化 383
24.9.2 避免使用要求数据库访问的公式列 383
24.9.5 注意绑定变量 384
24.9.6 避免不必要使用图形 384
24.9.7 打印机性能 384
第25章 Forms的项的开发技巧与技术 385
25.1 层次树控制 385
25.1.1 准备 386
25.1.2 组成部分 387
25.1.3 步骤 387
25.1.4 在查询时 388
25.1.5 附加步骤 388
25.1.6 内置程序和触发器 390
25.2 动态弹出列表 391
25.3.2 利用数据库触发器 393
25.3 系统分配的ID值 393
25.3.1 表单和序列 393
25.3.3 利用PRE-INSERT触发器 394
25.4 加载图像项 395
25.5 文本项的访问键 397
25.5.1 定义访问键 397
25.5.2 文本项访问键的制法 398
25.5.3 其他思路 400
25.6 作为按钮图标的字符 400
第26章 Forms的块的开发技巧与技术 402
26.1 命名块 402
26.2 动态块的筛选 402
26.2.1 PRE-QUERY触发器中的查询条件 403
26.2.2 WHERE子句块属性 403
26.3 动态块排序 404
26.3.1 实现动态排序 404
26.2.3 如何以过程为基础建立块 404
26.3.2 列表项Order By 405
26.3.3 列的Order By按钮 406
第27章 Forms模块的开发技巧与技术 409
27.1 处理Forms错误和信息 409
27.1.1 触发器 410
27.1.2 过程 410
27.1.3 使用MESSAGE 412
27.1.4 错误文本和信息文本的标准 413
27.1.5 变更 413
27.2 警报系统 414
27.2.1 通用警报 415
27.2.2 警报函数 415
27.2.3 调用示例 416
27.2.6 OK警报过程 417
27.2.5 标准的警报信息文本 417
27.2.4 标准的按钮标签 417
27.3 通过对象循环 418
27.3.1 通过项循环 418
27.3.2 通过块循环 419
27.3.3 通过其他对象循环 419
27.4 调整表单 419
27.4.1 从表单外部调整 420
27.4.2 从表单内调整 421
27.5 查找表单中的代码和对象 424
27.5.1 查找代码 424
27.5.2 查找对象 425
27.5.3 生成Forms对象列表报告 425
27.5.4 利用Forms Open API 426
27.6 改变光标的形状 426
27.7.3 OPEN_FORM 428
27.7.2 NEW_FORM 428
27.7.1 CALL_FORM 428
27.7 调用其他表单 428
27.8 调用其他程序 429
27.8.1 不在Web上 429
27.8.2 HOST 429
27.8.3 HOST START 429
27.8.4 WinExec 429
27.9 其他技巧和技术 430
27.9.1 用户注释系统 430
27.9.2 对齐对象 430
27.9.3 浏览窗口和画布 430
第28章 Forms菜单技巧与技术 432
28.1 建立菜单的技术 432
28.1.1 创建菜单 432
28.1.2 菜单属性 434
28.1.3 魔术项 435
28.1.4 复选项和单选项 436
28.1.5 菜单图标 437
28.2 菜单工具条 438
28.2.1 按钮排序 438
28.2.2 隐藏和显示按钮 439
28.3 实现菜单安全 440
28.3.1 数据库设置 440
28.3.2 菜单设置 440
28.4 动态工具条和菜单 441
28.4.1 准备 442
28.4.2 组成要素 442
28.4.3 KEY-ENTQRY和KEY-EXEQRY触发器 443
28.4.4 CHANGE_MODE过程 443
28.4.5 步骤 444
28.4.6 变化 444
29.1.1 数据库程序包说明变量 445
第29章 Forms系统的技巧与技术 445
29.1 共享变量 445
29.1.2 表单程序包说明变量 446
29.1.3 参数 446
29.1.4 块中的项 448
29.1.5 全局变量 448
29.1.6 使用“不变的”变量 449
29.2 编译表单文件 449
29.2.1 编译表单 449
29.2.2 编译程序库 450
29.2.3 命令行参数 450
29.2.4 编译的次序 451
29.2.5 UNIX批编译 452
29.3 设置表单登记值 452
29.3.2 从表单内设置注册 453
29.3.1 设置路径 453
29.4 外部函数接口 454
29.4.1 FFIGEN.FMB 454
29.4.2 FFIGEN创建什么 455
29.4.3 FFI程序包说明 455
29.4.4 FFI程序包体 455
29.4.5 错误检查 458
29.5 Oracle安装程序安装哪些文件 458
附录 461
附录A PL/SQL库软件包和样本模板 461
附录B 面试问题 482
附录C WinHelp的概念 491
附录D 使用Report Wizard的步骤 494
附录E 进行报表审计 502
附录F 报表说明书 504
附录G 在Web上发布表单的Oracle白皮书 509