目录 1
第一部分 Visual FoxPro 5简介 1
第1章 快速回顾Visual FoxPro界面 1
1.1 启动并运行FoxPro 1
1.1.1 标题栏 4
1.1.2 主菜单栏 6
1.1.3 工具栏 16
1.1.4 状态栏 18
1.2 控制窗口 18
1.2.1 缩放窗口 18
1.2.2 调整窗口的大小 19
1.2.3 移动窗口 19
1.2.4 常用的窗口对象 20
1.3 Project Manager(项目管理器) 22
1.3.1 增加和删除文件 24
1.3.2 查看文件 25
1.3.3 修改文件 25
1.4 设置配置选项 26
1.4.1 Controls选项 26
1.4.2 Data选项 26
1.4.3 Debug选项 29
1.4.4 Field Mapping选项 29
1.4.5 File Locations选项 30
1.4.6 Forms选项 31
1.4.7 General选项 33
1.4.8 Projects选项 35
1.4.9 Regional选项 37
1.4.10 Remote Data选项 38
1.4.11 Syntax Coloring选项 39
1.4.12 View选项 40
1.5.1 使用Contents查找帮助 41
1.5 从Visual FoxPro获取帮助 41
1.5.2 使用Index查找帮助 44
1.6 小结 45
第2章 面向对象的编程 46
2.1 对象和类 47
2.1.1 基类 49
2.1.2 容器类 50
2.1.3 控件类 50
2.1.4 继承性 50
2.1.5 实例 50
2.1.6 属性 51
2.1.7 属性封装 51
2.2 对象 52
2.2.1 为对象赋多个别名 52
2.2.2 释放对象 52
2.3.1 构建容器类 53
2.3 类层次结构 53
2.3.2 引用容器中的对象 54
2.4 使用代码创建子类 54
2.4.1 定义子类 54
2.4.2 向类定义加入新的属性 57
2.4.3 向容器加入控件 57
2.5 事件 58
2.5.1 识别事件 58
2.5.2 为事件连接方法 60
2.6 引用对象 65
2.6.1 使用对象数组 65
2.6.2 使用域变换运算符引用方法 66
2.7 创建自定义类 68
2.8 创建类库 69
2.8.1 使用类库 72
2.8.4 将类定义从一个类库移到另一个类库 73
2.8.2 修改库中的类定义 73
2.8.3 从类库删除类定义 73
2.9 面向对象编程的特点 74
2.10 小结 74
第3章 定义数据库、表格和索引 75
3.1 为应用程序创建表格 76
3.1.1 确定所需的数据类型 76
3.1.2 数据事实的命名 77
3.1.3 数据类型 78
3.1.4 使用Table Designer 83
3.1.5 使用Null 86
3.2 修改表格结构 87
3.2.1 增加字段 87
3.2.2 删除字段 87
3.2.3 字段重命名 88
3.2.4 重定义字段 88
3.2.6 独立的、结构化的和非结构化的索引 89
3.2.5 表格记录排序 89
3.2.7 Normal和Unique索引 90
3.2.8 Candidate和Primary关键字 91
3.2.9 复杂表达式索引 92
3.2.10 在运行时选择活动索引 95
3.3 添加记录 96
3.3.1 通过BROWSE或EDIT屏幕录入记录 96
3.3.2 通过编程添加记录 96
3.3.3 从其他表格添加记录 97
3.4 创建数据库 99
3.4.1 将已存在的表格加入数据库 100
3.4.2 使用主关键字和候补关键字 103
3.4.3 利用编程来修改表格属性 103
3.5.3 从数据库删除表格 104
3.5.2 从Visual FoxPro 3.0转换 104
3.5.1 与FoxPro 2.x共享表格 104
3.5 兼容性问题 104
3.6 小结 105
第4章 高级的数据库管理概念 106
4.1 数据规范化 106
4.1.1 函数依赖 107
4.1.2 第一范式 108
4.1.3 第二范式 109
4.1.4 第三范式 110
4.1.5 何时可违反规范化规则 111
4.2 命名规则 111
4.2.1 应用程序中的命名问题 112
4.2.2 命名内存变量 112
4.2.3 命名表格中的字段 117
4.2.4 命名对象 119
4.2.5 相关应用程序中的命名规则 120
4.2.6 使用企业级命名规则 121
4.3 Visual FoxPro数据库容器的其他高级功能 121
4.3.1 使用记录级有效性检验 121
4.3.2 维护引用的完整性 123
4.3.3 构造永久性关系 124
4.3.4 使用引用完整性构建器 126
4.3.5 建立自己的引用完整性 127
4.3.6 使用触发器 128
4.4 小结 141
第5章 将Wizard用于快速应用程序开发 142
5.1 Wizards简介 142
5.1.1 打开Wizards 143
5.1.2 使用Wizards进行设计 143
5.2 Visual FoxPro的Wizards 144
5.1.4 修改Wizards所得的结果 144
5.1.3 存储Wizards设计的结果 144
5.2.1 Table Wizard 145
5.2.2 Query Wizard族 147
5.2.3 交叉表(CrossTab)Wizard 153
5.2.4 透视表(Pivot Table)Wizard 154
5.2.5 表单(Form)Wizard 155
5.2.6 一对多表单(One-To-Many Form)Wizard 159
5.2.7 标签(Label)Wizard 160
5.2.8 输入(Import)Wizard 163
5.2.9 报表(Report)Wizard族 165
5.2.10 文档编制(Documenting)Wizard 169
5.3 小结 171
第二部分 将数据转换成信息 173
第6章 选择查看和排序数据 173
6.1 在工作区中打开表格 173
6.1.1 打开自由表格 174
6.1.2 多次打开表格 176
6.1.3 打开数据库绑定的表格 177
6.2 把数据输出到屏幕或打印机 178
6.2.1 使用LOCATE查找记录 180
6.2.2 按索引值查找记录 181
6.2.3 选择一组记录 183
6.2.4 使用WHILE处理记录 184
6.3 表格中数据的排序 185
6.3.1 创建永久排序 185
6.3.2 使用索引创建虚拟排序 186
6.4 为Rushmore设计索引 191
6.4.1 关闭Rushmore 194
6.4.2 改善Rushmore 194
6.5 小结 196
7.1.1 从数据库增加表格或视图 198
第7章 创建基本的查询 198
7.1 为查询选择表格 198
7.1.2 增加一个自由表格 199
7.2 选择查询中包括的字段 203
7.3 结果排序 204
7.4 Miscellaneous标签选项 204
7.5 查看结果 205
7.6 使用多个条件过滤器 207
7.6.1 输出查询结果 208
7.6.2 输出到游标 209
7.6.3 输出到表格 209
7.6.4 输出到图形 210
7.6.5 输出到屏幕 212
7.6.6 输出到报表 212
7.6.7 输出到标签 213
7.7 Query Designer和手工创建的SQL SELECT语句 214
7.8 将记录分组以总结数据 218
7.9 在程序和表单中使用查询 221
7.10 编辑产生的SQL SELECT语句 222
7.11 创建复杂的查询 222
7.11.1 使用BETWEEN从句过滤一个范围的值 223
7.11.2 使用IN从句过滤选定的值 225
7.11.3 定义子查询 225
7.12 小结 228
第8章 高级的查询和视图 229
8.1 连接多个查询结果 229
8.1.1 检索当前顾客记录 229
8.1.2 DISTINCT和GROUP BY 230
8.1.3 检索与购买商品相应的供应商记录 231
8.1.4 检索雇员记录 232
8.1.5 使用UNION连接SELECT结果 232
8.1.6 创建内部连接 236
8.1.7 创建外部连接 237
8.1.8 创建自连接 238
8.2 优化查询的产生 239
8.2.1 使用Rushmore的基本规则 239
8.2.2 最少化查询的字段 242
8.3 创建交叉表 242
8.4 使用视图和可更新的查询 245
8.4.1 本地数据视图 245
8.4.2 远程视图更新选项 250
8.4.3 在选择条件中使用内存变量 252
8.4.4 参数化的查询条件 253
8.4.5 远程数据的视图 253
8.5 小结 260
第9章 使用BROWSE查看数据 261
9.1 打开和漫游BROWSE窗口 261
9.1.1 使用键盘和鼠标漫游 262
9.1.2 使Table菜单漫游 263
9.2 配置BROWSE窗口 264
9.2.1 重新调整列的宽度 264
9.2.2 重新组织BROWSE列 264
9.2.3 BROWSE窗口的分区 265
9.3 增加、修改和删除数据 266
9.4 从Command窗口使用BROWSE从句 267
9.4.1 使用FIELD列表 268
9.4.2 使用FOR和KEY浏览表格子集 269
9.4.3 LAST 270
9.4.4 PREFERENCE 270
9.4.5 WHEN、VALID和ERROR 270
9.5 浏览相关的表格 271
9.5.1 浏览一对一关系 271
9.5.2 浏览一对多关系 272
9.6 小结 275
第三部分 用对象方法建立应用程序 276
第10章 编程结构 276
10.1 建立逻辑表达式 276
10.1.1 比较两个值 278
10.1.2 建立复合逻辑表达式 281
10.1.3 确定逻辑表达式的运算顺序 283
10.1.4 简化逻辑表达式 283
10.2 条件结构 284
10.2.1 DOCASE...ENDCASE结构 287
10.2.2 何时使用IF...ENDIF或者DO CASE...ENDCASE 288
10.3 简单的循环结构 288
10.3.1 何时使用DO WHILE...ENDDO结构 290
10.3.2 何时使用FOR...ENDFOR结构 290
10.3.3 何时使用SCAN...ENDSCAN结构 291
10.4.1 用DO命令执行外部程序 292
10.4 执行外部程序 292
10.4.2 使用SET PROCEDURE TO 294
10.4.3 使用SET LIBRARY TO 295
10.5 小结 295
第11章 用简单的表单结构构建应用程序 296
11.1 表单对象 296
11.2 定义表单的总体属性 300
11.2.1 数据环境 302
11.2.2 向表单加入控件 303
11.2.3 使用控件的典型属性 306
11.2.4 添加新的属性或方法 306
11.2.5 定义方法 307
11.2.6 对齐控件 310
11.2.7 定义Tab顺序 311
11.3 基本的表单控件 312
11.3.1 Line控件 320
11.3.2 Shape控件 321
11.3.3 Container控件 323
11.3.4 label控件 323
11.3.5 Text Box控件 324
11.3.6 Edit Box控件 325
11.3.7 Command Rutton控件 325
11.3.8 Command Group控件 326
11.3.9 Option Group(Radio Button)控件 327
11.3.10 Check Box控件 328
11.3.11 Spiner控件 328
11.3.12 Image控件 329
11.4 与READ表单相关的方法 329
11.5 使用一个表单的多个实例 334
11.6 使用多个活动表单 336
11.6.3 管理窗口 337
11.6.2 在窗口间切换控制 337
11.6.1 引用Form Set中的其他表单的对象 337
11.7 小结 338
第12章 深入讨论面向对象的设计 339
12.1 尽量利用继承性 339
12.2 使用Visual Class Designer 340
12.3 开发应用程序框架的技术 341
12.3.1 Visual Class Designer 341
12.3.2 在控件中加入调试代码 342
12.3.3 在对象中包含外部文件 342
12.3.4 用属性和方法扩展框架 343
12.4 保护属性和方法 343
12.5 使用通用代码开发对象 344
12.6 使用FoxPro存取变量来引用对象 344
12.7 设置类信息 345
12.8.2 指定一个模板表单 347
12.8.1 指定缺省类库 347
12.8 扩展FoxPro开发环境 347
12.9 使用Class Browser 348
12.10 建立自己的OLE服务器 351
12.11 将框架扩展到事件的世界中 354
12.11.1 确定常见的控件事件和它们的顺序 355
12.11.2 使用事件跟踪 355
12.11.3 理解事件的等级 356
12.12 小结 357
第13章 高级的表单设计控件 358
13.1 使用列表框 358
13.1.1 使用List Box Builder创建列表框 359
13.1.2 使用列表框限制值的范围 361
13.1.3 访问列表项目 361
13.1.4 允许用户加入列表 362
13.1.6 在列表中选定多个条目 364
13.1.5 显示多列列表 364
13.2 使用组合框 365
13.3 使用页框架 367
13.4 定义网格 368
13.4.1 在网格列中使用控件 370
13.4.2 设置常用的网格属性 371
13.4.3 在网格中创建一对多的表单 372
13.5 小结 373
第14章 自定义报表的生成 374
14.1 设计报表 374
14.2 创建报表模板 375
14.3 在报表中使用表达式和变量 376
14.4 使用模板构建报表 378
14.5 使用程序初始化报表 383
14.6 小结 386
15.1.1 使用大纲控件 387
第15章 将应用程序部件组织成项目 387
15.1 熟悉Project Manager 387
15.1.2 创建新文件和把文件加入项目 388
15.1.3 删除文件 389
15.1.4 修改已存在的项目元素 390
15.2 将Project Manager用作应用程序界面 390
15.2.1 从Project Manager运行程序和表单 391
15.2.2 预览报表 391
15.2.3 打开数据库和浏览表格 391
15.2.4 拖放项目元素 393
15.3 在Project Manager中使用快捷方式 394
15.3.1 将标签作为访问主要类目的快捷方式 394
15.3.2 折叠和停靠Project Manager 394
15.3.3 使用Project Information对话框 395
15.4 建立Visual FoxPro的.APP和.EXE文件 398
15.4.1 设置一个主文件 399
15.4.2 在.APP和.EXE中包括和排除文件 400
15.4.3 从Command窗口建立项目 400
15.4.4 建立安装程序 401
15.4.5 使用MAKEDIST过程为Setup Wizard作准备 401
15.5 在工作组开发中使用Visual SourceSafe进行版本控制 410
15.5.1 集成VSS和Visual FoxPro 5.0项目 410
15.5.2 Visual FoxPro 5.0配置 410
15.5.3 创建源控制项目 410
15.5.4 考察Visual SourceSafe项目的结构 412
15.5.5 使用VSS版本控制功能 412
15.5.6 使用VSS服务器和VSS应用程序执行VSS命令 413
15.6 小结 413
第四部分 由专业人员提供的技巧 415
第16章 错误的测试和消除 415
16.1 识别常见的编码错误 415
16.1.1 语法错误 416
16.1.2 逻辑错误 419
16.1.3 例外错误 420
16.2 代码模块化以减少错误 422
16.3 正确的参数传递 424
16.4 消除多点退出和返回 425
16.5 开发测试例行程序库和对象库 427
16.6 处理文件崩溃 428
16.7 设计测试计划 430
16.7.1 数据驱动和逻辑驱动的测试 431
16.7.2 定义测试技术 431
16.7.3 确定测试何时结束 433
16.7.4 创建测试环境 434
16.7.5 定义检查所有程序路径的测试实例 434
16.7.6 使用真实数据拷贝的测试实例 434
16.7.8 其他的测试准则 435
16.7.7 测试实例存档 435
16.7.9 在测试过程中提问 436
16.8 跟踪错误的方法 436
16.8.1 在Command窗口中测试错误 438
16.8.2 加入Wait窗口或其他打印输出 439
16.8.3 Trace窗口 441
16.8.4 Locals窗口 446
16.8.5 Watch窗口 447
16.8.6 Call Stack窗口 448
16.8.7 Debug Output窗口 449
16.8.8 事件跟踪 449
16.8.9 Coverage 449
16.9 使用错误处理程序 450
16.10 使用对象中的错误事件 461
16.11 小结 463
17.1 文件冲突、竞争和死锁 464
第17章 网络数据共享 464
17.2 锁定的类型 465
17.2.1 记录锁定和文件锁定 465
17.2.2 自动锁定与手工锁定 465
17.3 当所需记录被加锁时怎么办 468
17.4 会话 468
17.5 缓冲编辑 469
17.5.1 记录缓冲 470
17.5.2 表格缓冲 470
17.5.3 锁定缓冲区 470
17.5.4 更新记录 471
11.5.5 检测和消除冲突 473
17.6 错误处理 476
17.7 事务处理 476
17.7.2 恢复事务处理 477
17.7.1 事务处理的限制 477
17.7.3 嵌套事务处理 478
17.8 避免锁定的方法 480
17.8.1 对象和信号锁定 480
17.8.2 将要检查的数据存入数组 480
17.8.3 使用临时文件或游标 480
17.8.4 EXCLUSIVE命令 480
17.9 小结 481
第18章 数据字典 482
18.1 将数据库容器用作数据字典 482
18.1.1 定制及增强数据库容器 484
18.1.2 取回和设置属性值 486
18.1.3 使用数据库容器工具 489
18.1.4 从数据库容器生成文档 503
18.2 设计数据字典 503
18.3 小结 506
第19章 Internet支持 507
19.1 是什么令Internet如此令人激动 507
19.1.1 统一的客户:Web浏览器作为通用界面 508
19.1.2 Web中的分布式应用程序 508
19.1.3 开放式标准 509
19.1.4 建立基于Web的应用程序的局限性 509
19.2 Web中的数据库开发 510
19.2.1 开发Web应用程序的工具 510
19.2.2 在Web上运行应用程序 511
19.2.3 如何将Visual FoxPro用于Web 513
19.2.4 为什么应该或不应该使用Visual FoxPro 514
19.2.5 Internet Database Connector 515
19.2.6 将Visual FoxPro作为数据服务器 520
19.2.7 将FoxISAPI和OLE服务器用于Web应用程序 520
19.2.8 将Web Connection用于Web应用程序 529
19.2.9 使用Web浏览器 546
19.2.10 使用Visual FoxPro时的Web开发问题 548
19.3 应用程序的Internet实现 549
19.3.1 通过FTP下载文件 549
19.3.2 发送SMTP邮件 552
19.3.3 从Visual FoxPro激活Web浏览器 555
19.4 小结 558
第20章 创建联机帮助 559
20.1 FoxPro支持两种帮助 559
20.1.1 比较帮助系统 561
20.1.2 Windows风格帮助的特点 561
20.2 Windows 95帮助系统 562
20.2.1 Windows 95帮助界面 562
20.2.2 Contents 562
20.2.3 主题窗口 562
20.3.1 标准的帮助 564
20.3 几种帮助 564
20.2.4 Index 564
20.2.5 Find 564
20.3.2 上下文敏感的帮助 565
20.4 设计联机帮助系统 565
20.4.1 帮助信息的类型 565
20.4.2 主题 566
20.4.3 最低限度的编程 567
20.4.4 信息分层 567
20.5 建立一个Windows 95帮助系统 567
20.5.1 FoxPro附带的Help编辑工具 568
20.5.2 教程:创建一个基本的帮助系统 570
20.5.3 教程:向帮助系统加入一些功能 574
20.6 Windows 95帮助系统的其他功能 580
20.7 创建Windows 95上下文敏感的帮助 581
20.7.1 为应用程序的界面映像主题 581
20.8.3 建立基本的帮助菜单 582
20.8.2 激活帮助 582
20.8 为应用程序加入帮助 582
20.8.1 装入帮助文件 582
20.8.4 上下文敏感的帮助 583
20.8.5 加入表单级的上下文敏感帮助 583
20.8.6 加入What’s This帮助 584
20.8.7 将上下文ID作为帮助 585
20.9 Help编辑工具 586
20.10 小结 587
附录A 配置文件 588
A.1 命令行选项 588
A.2 使用CONFIG.FPW配置启动会话 588
A.3 从Visual FoxPro内部设置环境 591
A.4 取回设置 594
A.4.1 SET()函数 594
A.4.3 使用SYS()获得系统设置 595
A.4.2 ON()函数 595
A.4.4 使用GETENV()获得操作系统的环境信息 596
附录B 资源文件 597
B.1 使用资源文件 598
B.1.1 资源文件的操作 599
B.1.2 在程序中修改资源文件 600
B.2 资源文件和性能 601
附录C 优化性能 602
C.1 硬件要求 602
C.1.1 内存和处理器 602
C.1.2 硬盘驱动器 603
C.1.3 视卡 603
C.2 配置Windows 603
C.3 配置Visual FoxPro 604
C.3.1 使用Rushmore技术进行优化 604
C.2.2 Windows NT 604
C.2.1 Windows 95 604
C.3.2 执行循环 606
C.3.3 使用PROCEDURE或FUNCTION从句 607
C.3.4 设置临时文件 607
C.3.5 使数据文件一直保持打开 607
C.3.9 避免宏代换 608
C.3.8 最少地使用界面部件 608
C.3.7 将应用程序编译成.APP或.EXE文件 608
C.3.6 SQL命令与过程式代码 608
C.3.10 引用对象属性 609
附录D 快捷键、功能键和事件 610
D.1 快捷键 610
D.2 功能键 611
D.3 事件 611
D.4 ON KEY代码 613
D.5 使用Click和其他事件 614