引言 1
第Ⅰ部分 学习规则 3
第1章 设计Customer(客户)数据库 3
1.1 维护客户帐目 4
1.2 使销售单据输入和谐动作 5
1.2.1 使用Inventory/Price List(?库存清单/价目表) 6
1.2.2 现金(Cash)销售和记帐(Charge)销售处理 6
1.3 生成客户财务报表 7
1.3.1 组织客户数据库以便快速输出数据 8
第2章 客户表的设计 15
2.1 MBS Customer表 16
2.2 客户帐目字段 17
2.2.1 客户帐目字段的系统修改 17
2.2.2 Customer表的辅助性字段 23
2.2.3 客户号字段 24
2.3 系统值表的使用 25
2.3.1 用程序分配客户号、销售号和部件号 25
2.3.2 税率和利率的系统存储 27
2.3.3 编制财务报表周期的系统跟踪 27
2.3.4 商务活动名字和地址信息的系统存储 28
2.3.5 系统存储操作员选择的数据库索引 29
第3章 设计客户表数据输入程序 31
3.1 用READ控制程序重复执行 33
3.1.1 READ CYCLE和CLEAR READ 34
3.1.2 使用@GET WHEN控制光标对字段的存取 35
3.1.3 使用@GET VALID执行例行程序 35
3.2 使用BROWSE顺序地显示和定位记录 37
3.3 记录顺序和索引辅助检索的控制 40
3.4 编写记录追加和编辑的例行程序 40
3.4.1 在数据显示和修改过程中使用内存变量 41
3.4.2 利用READ SHOW来条件控制带IF的READ动作 42
3.4.3 利用SHOW GET使用/禁止使用GET 44
3.4.4 指定Append过程中的缺省值 46
3.4.5 在屏幕上显示出重复的客户记录 47
3.4.6 最好地利用@GET〈变量〉(输入字段) 48
3.4.7 用按钮进行记录级的数据校验 51
3.4.8 网络Append和Edit例行程序 55
3.5 客户输入程序的概观 56
3.5.1 关于SHOW GETS和READ SHOW的附加注释 57
3.6 设计一个全局删除程序 58
3.6.1 在对话框中使用READ MODAL 60
3.6.2 删除记录例行程序 60
第4章 在FoxPro中使用索引标记 63
4.1 Customer表主索引标记 64
4.1.1 建立一个结构化复合索引 65
4.2 操作员选择和使用MBS中的索引标记 66
4.2.1 Customer表定位对话的要求 67
4.2.2 用@GET VALID和READ SHOW控制对话动作 70
4.2.3 用SEEK和SEEK()进行索引辅助检索 73
4.3 用控制框关闭窗口 75
4.3.1 用READKEY()和READ DEACTIVATE控制清理代码(Cleanup Code)的执行 78
4.4 MBS中执行Find/Reorder对话的一些不同方案 79
4.4.1 建立一个与表无关的Eind/Recorder对话 82
4.5 产生Customer Database Peports时选择索引标记次序 84
4.6 FoxPro索引的其它方面情况 84
4.6.1 构造复合/复杂索引标记 85
4.6.2 唯一索引标记和筛选索引标记 85
4.6.3 索引文件和复合索引文件的使用 85
4.7 索引标记和记录筛选器的Rushmore优化 86
4.7.1 可用FoxPro Rushmore优化的筛选器 86
4.7.2 部分可优化的条件 88
4.7.3 Rushmore的可用性 88
4.8 Rushmore优化在系统设计上的影响 88
4.8.1 帮助Rushmore工作 90
第5章 建立多窗口数据输入程序 93
5.1 设计Payments表 94
5.1.1 单一表中处理多种交易lookup 95
5.1.2 使用交易代码的查阅表(lookup table) 95
5.1.3 操作员选择支付类型 96
5.2 Customer Payments窗口概述 98
5.2.1 编写可重复使用的屏幕程序代码 99
5.3 在屏幕程序中使用BROWSE 100
5.3.1 用READ ACTIVATE或者READ WHEN执行BROWSE 101
5.3.2 DEFINE WINDOW名字和BROWSE窗口标题的约定 103
5.3.3 窗口名字、窗口函数和窗口下拉菜单 106
5.3.4 使用READ DEACTIVATE控制窗口级事件 106
5.3.5 使用READ ACTIVATE重新打开一个由人工关闭的BROWSE窗口 108
5.3.6 使用一个资源文件控制BROWSE窗口的尺寸和位置 109
5.3.7 获得对BROWSE窗口属性的额外控制 114
5.4 Payments输入程序的进一步讨论 117
5.4.1 Payments程序设置代码 117
5.4.2 Payments程序的READ窗口 118
5.4.3 Payments程序的READ SHOW子句 118
5.4.4 控制操作员键入交易记录以及MBS处理交易记录 120
5.4.5 Payments程序的READ DEACTIVATE和清理代码 124
5.5 MBS利息费的生成和处理 128
5.5.1 使用SQL_INSERT 130
5.5.2 构造一个智能的批修改例行程序 130
5.6 把MBS转换为捐赠追踪(donation tracking)系统 131
第6章 设计销售输入程序 133
6.1 设计Sales表 134
6.1.1 Sales表设计中的不同方案 135
6.1.2 设计Sales Detail表和Inventory表 136
6.2 Sales输入程序 138
6.2.1 Sales程序执行期间输入新的客户 140
6.3 使用适用于整个系统的缺省视图 141
6.3.1 通过USE ALIAS,AGAIN和NOUPDATE来多次使用表 142
6.4 使用Modal和Nonmodal屏幕集 144
6.4.1 窗口的多次(嵌套)的READ 146
6.4.2 Modeless(或Nonmodal)系统的技巧 147
6.5 Sales Transaction输入程序 148
6.5.1 使用建立和清理代码重新启动暂时中断的程序 148
6.5.2 销售交易输入屏幕集 152
6.5.3 用READ/SHOW控制多重动作 157
6.6 Add Items和Ed/Del Items例行程序 158
6.6.1 用选择列表进行菜单帮助的销售条目输入 159
6.7 Edit Sale Info例行程序 167
6.8 打印销售单据 168
6.9 终止Sales Entry/Edit程序 170
6.9.1 控制非独占屏幕Data Entry程序的终止 171
第Ⅱ部分 建立窗口式接口 179
第7章 采用Project Manager(项目管理程序)进行工作 179
7.1 开始一个项目 181
7.1.1 装入一个已经存在的应用程序 181
7.2 使用项目文件 184
7.2.1 项目的主目录和项目的文件名 184
7.2.2 项目文件类型字段 185
7.2.3 选择主(启动)程序 186
7.2.4 项目可用信息 186
7.2.5 在应用程序中包含文件或者排除文件 188
7.3 项目的典型初始化 189
7.3.1 自顶向下开发应用程序 190
7.4 发行应用程序 191
7.4.1 应用程序中的目录用法 192
7.5 发行你的应用程序 194
7.5.1 用DOS准备你的应用程序副本 195
7.5.2 使用DOS批处理文件监督系统安装 197
7.5.3 使用PoxPro准备发行磁盘 198
7.6 设置项目选项 199
7.7 使用MBS 201
7.7.1 启动应用程序的几种方法 201
7.8 逐步熟悉Project Manager 203
第8章 编写主(启动)程序 205
8.1 MBS主程序实例 206
8.2 编写Setup(设置)过程 208
8.2.1 确保一个清理干净的启动过程 209
8.2.2 保存内存对象和当前数据库视图 210
8.2.3 清除原来环境并且显示开始信息 210
8.2.4 设置应用程序环境 213
8.3 在程序开发期间使用ON KEY LABEL 218
8.3.1 崩溃后的清理恢复 219
8.3.2 使用ON KEY LABEL访问或建立调试工具 219
8.4 初始化全局内存变量 220
8.5 使用主FoxPro窗口 220
8.6 替换FoxPro系统菜单 222
8.7 用Foundation Read把FoxPro放置在等待状态 222
8.8 返回FoxPro时清理环境 223
8.9 使用FoxPro Help文件 224
8.9.1 程序执行期间控制Help的使用 226
第9章 建立应用程序系统菜单 229
9.1 简述系统菜单的命名规则 231
9.2 在Quick Menu下工作 231
9.2.1 手工输入FoxPro菜单条和填充项 234
9.2.2 修改FoxPro的下拉菜单 234
9.2.3 输入下拉菜单的菜单选项 236
9.2.4 采用Skip For使菜单选项能够/不能够工作 239
9.3 加入菜单条的填充项和下拉菜单 240
9.3.1 试验你的菜单 242
9.4 菜单程序结构 243
9.4.1 菜单程序的节和注释 244
9.4.2 使用通用过程 245
9.5 FoxPro系统菜单特写 247
9.5.1 菜单定义命令 248
9.5.2 修改FoxPro系统菜单 251
9.5.3 SET SYSMENU的选项 252
9.6 在READ MODAL期间重新激活系统菜单 253
9.7 控制和改变系统菜单 255
9.7.1 释放系统菜单填充项和弹出菜单 256
9.7.2 使用SET SKIP OF使菜单和菜单选项可用/不可用 257
9.8 改变交互式系统菜单 259
9.8.1 引用菜单程序的清理代码中的过程 259
9.9 在应用程序中包含保密级别 260
第10章 Windows应用程序中的事件处理 263
10.1 使用Foundation READ 264
10.1.1 用Foundation READ控制应用程序结束 264
10.1.2 使用Foundation READ VALID子句 265
10.1.3 影响Foundation READ的命令和事件 265
10.1.4 在独占应用程序中的Foundation READ 267
10.2 用Foundation READ控制窗口事件 267
10.2.1 系统菜单把屏幕程序作为窗口事件执行 268
10.2.2 为非独占应用程序建立事件处理程序 271
10.2.3 窗口级事件的快速检查 274
10.2.4 非READ窗口的处理 275
10.2.5 建立一个保护的窗口方式 277
10.2.6 用缩小的窗口工作 282
10.3 使用READ DEACTIVATE获得最佳效果 285
10.3.1 编写DEACTIVATE子句的几种方法 289
10.3.2 对两个或者更多的READ窗口使用READ DEACTIVATE 290
10.4 把非独占和独占屏幕程序结合在一起 293
10.5 关于FoxPro应用程序中事件处理的最后说明 293
第Ⅲ部分 使用Screen Builder 297
第11章 使用Sereen Builder(屏幕生成程序) 297
11.1 Screen Builder概述 299
11.1.1 定位和放大/缩小输入屏幕窗口 301
11.1.2 对象和屏幕下拉菜单简介 302
11.1.3 在Screen Builder中使用Clipboard 302
11.1.4 设置和保存环境 303
11.2 用Quick Screen开始工作 304
11.2.1 使用Quick Screen对话 305
11.3 设计READ窗口 309
11.3.1 选择窗口背景颜色 311
11.4 选择和操纵对象 313
11.4.1 成组和不成组对象 314
11.4.2 选择对象属性 314
11.4.3 定位和放大/缩小对象 316
11.4.4 用比例字形放大/缩小输入字段 316
11.4.5 使用Snap to Grid 319
11.4.6 用Show Position调整对象 319
11.4.7 使用Ruler/Grid对话 320
11.5 填充屏幕程序 321
11.6 使用Screen Layout对话 322
11.6.1 定义READ窗口 324
11.6.2 指定窗口的类型 326
11.6.3 选择窗口字形 328
11.7 键入屏幕程序代码 329
11.8 屏幕程序结构 333
11.8.1 输入屏幕程序设置代码 339
11.8.2 屏幕程序#REGION伪指令 342
11.8.3 另外的屏幕文件伪指令和READ子句 343
11.9 增加和定义对象 344
11.9.1 用文本对象工作 344
11.9.2 用输入/输出字段工作 346
11.9.3 用编辑区域工作 349
11.9.4 定义复选框 350
11.9.5 建立按钮 353
11.9.6 使用单选钮、弹出菜单和列表 356
11.9.7 增加图形对象 362
11.9.8 增加图象和显示General字段 364
11.9.9 增加三角形按钮(Spinner) 367
11.10 使用Object Order(对象次序)对话 368
11.11 生成屏幕程序 370
11.11.1 将Associated Windows列表用于独占屏幕程序 371
11.11.2 使用Arrange Screens对话 372
11.11.3 在一个项目中生成屏幕程序 373
11.12 生成具有多屏幕集的屏幕程序 374
11.12.1 具有多屏幕集的屏幕程序结构 377
11.12.2 具有多页的屏幕程序 380
11.13 使用一个屏幕文件建立另一个屏幕文件 380
11.14 在屏幕程序中控制操作员存取@GET和@EDIT 382
第Ⅳ部分 执行报表 387
第12章 产生报表程序 387
12.1 MBS Customer Database Reports(客户数据库报表) 388
12.1.1 使操作员能够输入记录筛选条件 390
12.1.2 采用屏幕控制为操作员选择报表参数 394
12.1.3 准备数据用于报表和标签输出 401
12.2 用SELECT装配数据库视图 402
12.2.1 对一个源表使用SELECT 403
12.2.2 对多个源表使用SELECT 411
12.2.3 在结果表中除去标有删除标记的记录 414
12.2.4 利用SELECT UNION结合两个结果表 415
12.3 准备筛选条件和记录排序 419
12.4 MBS Inventory和Letter Report程序 424
第13章 使用Report Writer 427
13.1 建立标签格式 428
13.1.1 定义报表表达式 431
13.1.2 抑制空行 433
13.1.3 插入正文、图形和图象对象 433
13.1.4 利用Clipboard复制标签字段 435
13.2 利用报表菜单 435
13.2.1 利用Page Layout对话 436
13.2.2 利用Page Preview检查布局 437
13.3 利用页和列的标题和注脚 438
13.3.1 输入计算的报表表达式 440
13.4 建立报表格式 442
13.4.1 在报表表达式中堆放数据 444
13.5 启动Quick Report 449
13.6 报表布局设计考虑 453
13.7 建立分组报表 454
13.7.1 对于多表分组报表建立视图 457
13.7.2 利用组标题和注脚带 458
13.7.3 在注脚带中执行计算 458
13.7.4 使用报表变量 459
13.7.5 使用嵌套数据组 460
13.8 产生格式信件 462
13.8.1 信件抬头的管理输出 463
13.8.2 信件正文和结尾称呼的输出 467
13.9 产生单据和财务报表 468
13.9.1 控制多页格式的标题 468
13.9.2 单据Detail带和GroupFooter带 471
13.9.3 财务报表Detail带和Group Footer带 473
13.9.4 用组报表(New Page=1)校正_PAGENO 477
13.10 用.prg文件恢复报表表视图 481
13.11 编后语(鼓励的话) 481
附录 485
附录A MRS的安装和文件清单 485
A.1 安装MBS 486
A.2 建立和执行MBS应用 487
A.2.1 执行MBS 489
A.2.2 尽早开始和使用MBS 490
A.3 MBS文件清单 491
附录B 使用FoxPro Distribution Kit建立.exe程序 495
B.1 安装Distribution Kit 496
B.2 可执行程序文件 497
B.2.1 可执行应用程序的限制 498
B.3 用Setup Wizard建立发行磁盘 500
B.3.1 在运行Setup Wizard之前 500
B.3.2 运行Setup Wizard 500
B.4 Distribution Kit中包括的Windows工具 506
词汇表 507