内容简介
《Access 2007开发指南(修订版)》讲解了在Access2007中文版中开发应用程序的重要技能。主要内容分为6个部分。第1章至第15章为第一部分,讲解Access开发的基础知识,包括表、关系、查询、窗体和报表的基本知识;宏的使用;VBA语言的编码;查询、窗体和报表的高级应用;高级VBA技术;类模块;ActiveX数据对象。第16章至第18章为第二部分,讲述如何解决开发过程中遇到的问题,如怎样用调试器检查代码问题,怎样实现应用程序中的错误处理,以及应用程序的优化方法。第19章至第22章为第三部分,讲述怎样为多用户环境或客户机/服务器环境开发应用程序。第23章至第28章为第四部分,介绍了功能区、自动化功能、WindowsAPI、库和加载项技术,并且简单介绍了Access与Internet集成应用。《Access2007开发指南(修订版)》的第五部分讲解了进一步改进应用程序的方法,内容涉及安全性、文档管理以及数据库的维护。
《Access2007开发指南(修订版)》适用于中高级Access用户,内容丰富全面,实用性强,并附有大量实例辅助用户学习。
作者简介
Alison Balter是Microsoft Access和SQL Server方面的权威作者,曾编写过多部畅销书。她是经验丰富的Access、SharePoint、.NET和SQL Server开发人员,并作为培训教师致力于教授他人如何开发Windows和Web应用程序。她在计算机行业有二十多年的工作经验,为许多公司和政府机构提供过培训和咨询服务。
目录
- 第 一部分 Access开发基础
- 第 1章 Access作为开发工具 3
- 1.1 本章的重要性 4
- 1.2 Access中可开发的应用程序类型 4
- 1.2.1 Access作为个人应用程序开发平台 4
- 1.2.2 Access作为中小型企业应用程序开发平台 4
- 1.2.3 Access作为部门管理应用程序开发平台 5
- 1.2.4 Access作为公司管理应用程序开发平台 5
- 1.2.5 Access作为企业级客户/服务器应用程序的前端 5
- 1.2.6 Access作为Intranet/Internet应用程序开发平台 6
- 1.3 具有缩放能力的Access 6
- 1.4 什么是数据库 7
- 1.5 什么是数据库对象 7
- 1.5.1 表:数据的仓库 7
- 1.5.2 查询:存储应用到数据的问题和操作 10
- 1.5.3 窗体:显示、修改和添加数据的手段 11
- 1.5.4 报表:将数据整理成信息 12
- 1.5.5 宏:使系统自动化的一种方式 12
- 1.5.6 模块:应用程序开发过程的基础 13
- 1.6 对象命名约定 14
- 1.7 硬件要求 14
- 1.8 Access应用程序的开发过程 15
- 1.8.1 任务分析 15
- 1.8.2 数据分析和设计 15
- 1.8.3 原型开发 17
- 1.8.4 测试 17
- 1.8.5 程序的实现 17
- 1.8.6 维护 17
- 1.9 Access 2007的新功能 18
- 1.9.1 用户界面的新功能 18
- 1.9.2 认识功能区 19
- 1.9.3 认识导航窗格 26
- 1.9.4 操作选项卡式的文档 28
- 1.9.5 探索新的状态栏 30
- 1.9.6 操作浮动工具栏 31
- 1.9.7 窗体的新功能 32
- 1.9.8 报表的新功能 33
- 1.9.9 透视表和透视图 33
- 1.10 Access 2007中的其他新功能 33
- 1.10.1 复制怎么了 33
- 1.10.2 ADP文件怎么了 36
- 1.11 额外的提示和技巧 36
- 1.11.1 *级导航窗格技巧 36
- 1.11.2 创建多值字段 42
- 1.12 实例:应用程序设计实例——一个计算机咨询公司 47
- 1.13 小结 48
- 第 2章 数据库和表*备知识 49
- 2.1 本章的重要性 50
- 2.2 创建新数据库 50
- 2.2.1 使用模板创建数据库 50
- 2.2.2 从头创建数据库 52
- 2.3 创建新表 52
- 2.4 为数据选择适当的字段类型 54
- 2.4.1 文本字段:**常用的字段类型 55
- 2.4.2 备注字段:处理较长的注释和说明 55
- 2.4.3 数字字段:计算 55
- 2.4.4 日期/时间字段:跟踪事件的发生 56
- 2.4.5 货币字段:存储钱数 56
- 2.4.6 自动编号字段:唯*的记录标识符 56
- 2.4.7 是/否字段:从两个答案中选择一个正确答案 56
- 2.4.8 OLE对象字段:具有强大的存储功能 57
- 2.4.9 附件字段:在单个字段中存储多个文件 57
- 2.4.10 超链接字段:实现与Internet的链接 57
- 2.5 字段属性操作 58
- 2.5.1 字段大小:限制对字段的输入 58
- 2.5.2 格式:决定数据的显示方式 59
- 2.5.3 输入掩码:决定何种数据能进入字段 59
- 2.5.4 标题:节省时间 60
- 2.5.5 默认值:节省数据输入时间 60
- 2.5.6 有效性规则:控制字段的输入 61
- 2.5.7 有效性文本:为用户提供错误消息 62
- 2.5.8 必填字段属性:强制用户输入字段值 63
- 2.5.9 允许空字符串:适应无数据的情况 63
- 2.5.10 索引:加速搜索 64
- 2.5.11 Unicode压缩:压缩数据 64
- 2.6 到关重要的主键 65
- 2.7 操作查阅向导 65
- 2.8 表的属性操作 67
- 2.9 使用索引提高性能 68
- 2.10 使用Access表和Internet 68
- 2.10.1 超链接字段类型 69
- 2.10.2 将表的数据保存为HTML文件 69
- 2.10.3 将表的数据保存为XML文件 71
- 2.11 查看对象相关性 72
- 2.12 检查数据库规格和限度 73
- 2.13 检查表特殊性和局限性 73
- 2.14 实例:设计计算机咨询公司的Time and Billing应用程序所要求的表 74
- 2.15 小结 76
- 第3章 关系:数据完整性的关键 77
- 3.1 本章的重要性 78
- 3.2 关系数据库设计概述 78
- 3.2.1 关系数据库设计的历史 78
- 3.2.2 关系数据库设计的目标 78
- 3.2.3 关系数据库设计的规则 78
- 3.2.4 规范化与范式 79
- 3.2.5 反规范化——有目的地违反规则 81
- 3.2.6 完整性规则 81
- 3.2.7 数据库特有的规则 82
- 3.2.8 检查关系的类型 82
- 3.3 建立关系 83
- 3.3.1 在两个表之间建立关系 83
- 3.3.2 建立关系的原则 84
- 3.3.3 修改现有的关系 85
- 3.4 建立参照完整性 85
- 3.4.1 级联更新相关字段 87
- 3.4.2 级联删除相关记录 87
- 3.5 关系的作用 88
- 3.6 检查索引和关系 89
- 3.7 实例:在Time and Billing数据库中建立表与表之间的关系 89
- 3.8 小结 90
- 第4章 查询*备知识 91
- 4.1 本章的重要性 92
- 4.2 什么是查询及何时使用查询 92
- 4.3 查询的基础 92
- 4.3.1 添加表到查询中 93
- 4.3.2 添加字段到查询中 93
- 4.3.3 从查询设计网格中删除字段 95
- 4.3.4 在查询创建后插入字段 95
- 4.3.5 在查询设计网格中移动字段的位置 96
- 4.3.6 保存查询及为其命名 96
- 4.4 排序查询结果 96
- 4.5 用准则提炼查询 98
- 4.6 准则的日期操作 99
- 4.7 查询结果的更新 100
- 4.8 基于多个表创建查询 101
- 4.8.1 多表查询的缺陷 102
- 4.8.2 多表查询的行修复 103
- 4.9 创建计算字段 105
- 4.10 从表达式生成器获取帮助 106
- 4.11 以总计查询汇总数据 107
- 4.12 在输出中屏蔽字段 110
- 4.13 NULL值和查询结果 110
- 4.14 使用字段、字段列表和查询的属性提炼查询 112
- 4.14.1 字段属性:改变字段的特性 112
- 4.14.2 字段列表属性:改变字段列表的属性 113
- 4.14.3 查询属性:改变整个查询的行为 113
- 4.15 建立设计阶段不知道准则时可用的参数查询 114
- 4.16 给查询添加智能标记 115
- 4.16.1 给查询添加一个智能标记 116
- 4.16.2 使用智能标记 117
- 4.17 从查询中创建数据透视表或数据透视图 118
- 4.17.1 创建显示在数据透视图或数据透视表视图中的查询 118
- 4.17.2 在数据透视表视图中显示查询 118
- 4.17.3 显示汇总的数据 119
- 4.17.4 筛选数据透视表数据 120
- 4.17.5 使用向下深化 121
- 4.17.6 交换坐标轴 121
- 4.17.7 切换到数据透视图视图 121
- 4.18 理解查询的规格和限度 122
- 4.19 实例:建立计算机咨询公司使用的Time and Billing应用程序需要的查询 122
- 4.20 小结 124
- 第5章 窗体*备知识 125
- 5.1 本章的重要性 126
- 5.2 窗体的应用 126
- 5.3 窗体剖析 127
- 5.4 创建新窗体 128
- 5.4.1 使用窗体向导创建窗体 128
- 5.4.2 从设计视图中创建窗体 130
- 5.5 窗体设计窗口的操作 130
- 5.5.1 理解和操作窗体设计工具 131
- 5.5.2 为窗体添加字段 132
- 5.5.3 窗体对象的选定、移动、对齐和调整大小 132
- 5.5.4 修改对象的Tab键次序 135
- 5.6 使用布局视图 136
- 5.6.1 使用堆积布局和表格布局 137
- 5.6.2 认识分割窗体 142
- 5.6.3 给窗体使用交替背景色 143
- 5.7 选择适当的控件 144
- 5.7.1 标签 144
- 5.7.2 文本框 144
- 5.7.3 组合框 145
- 5.7.4 列表框 147
- 5.7.5 复选框 147
- 5.7.6 选项和切换按钮 148
- 5.7.7 选项组 148
- 5.8 控件转换 149
- 5.8.1 文本框转换为组合框 150
- 5.8.2 组合框转换为列表框 150
- 5.9 条件格式 150
- 5.10 可用的窗体属性 151
- 5.10.1 属性表的操作 151
- 5.10.2 窗体属性的操作 151
- 5.11 控件属性及其使用 155
- 5.11.1 控件的格式属性 155
- 5.11.2 控件的数据属性 157
- 5.11.3 控件的其他属性 158
- 5.12 绑定控件、非绑定控件和计算控件 159
- 5.13 使用表达式强化窗体 159
- 5.14 命令按钮向导:无须输入的编程 160
- 5.15 创建基于多个表的窗体 161
- 5.15.1 创建一对多窗体 161
- 5.15.2 对子窗体的操作 163
- 5.16 基于查询的窗体:原因及方式 163
- 5.17 Access窗体和Internet 164
- 5.17.1 在窗体中添加超链接 164
- 5.17.2 窗体保存为HTML文件 165
- 5.17.3 将窗体保存为XML文件 166
- 5.18 给窗体添加智能标记 166
- 5.18.1 给窗体添加一个智能标记 166
- 5.18.2 使用智能标记 167
- 5.19 从窗体中创建数据透视表或数据透视图 168
- 5.19.1 创建可以在数据透视表或数据透视图中显示的窗体 168
- 5.19.2 在数据透视表视图中显示窗体 169
- 5.19.3 显示汇总数据 170
- 5.19.4 筛选数据透视表数据 171
- 5.19.5 使用向下深化 171
- 5.19.6 交换坐标轴 172
- 5.19.7 切换到数据透视图视图 172
- 5.20 检查窗体的规格和限度 172
- 5.21 实例:为应用程序设计窗体 172
- 5.21.1 设计客户窗体 173
- 5.21.2 设计工程窗体 174
- 5.21.3 添加链接客户和工程窗体的命令按钮 175
- 5.22 小结 176
- 第6章 报表的必要知识 177
- 6.1 本章的重要性 178
- 6.2 报表的类型 178
- 6.2.1 明细报表 178
- 6.2.2 汇总报表 178
- 6.2.3 交叉列表报表 179
- 6.2.4 具有图形和图表的报表 179
- 6.2.5 具有窗体的报表 180
- 6.2.6 具有标签的报表 180
- 6.3 报表剖析 181
- 6.4 创建新的报表 182
- 6.4.1 使用报表向导创建报表 182
- 6.4.2 从设计视图中创建报表 183
- 6.5 报表设计窗口的操作 184
- 6.5.1 理解报表设计工具 184
- 6.5.2 为报表添加字段 184
- 6.5.3 报表对象的选定、移动、对齐和调整大小 185
- 6.6 选择适当的控件 186
- 6.6.1 标签 186
- 6.6.2 文本框 187
- 6.6.3 直线 187
- 6.6.4 矩形 187
- 6.6.5 绑定对象框 187
- 6.6.6 非绑定对象框 187
- 6.6.7 图像控件 188
- 6.6.8 其他控件 189
- 6.7 报表属性及其使用 189
- 6.7.1 属性表的操作 189
- 6.7.2 报表的格式属性 189
- 6.7.3 报表的数据属性 190
- 6.7.4 报表的其他属性 191
- 6.8 控件属性及其使用 192
- 6.8.1 控件的格式属性 192
- 6.8.2 控件的数据属性 193
- 6.8.3 其他控件属性 193
- 6.9 插入分页符 194
- 6.10 非绑定控件、绑定控件和计算控件 194
- 6.11 使用表达式加强报表 194
- 6.12 创建基于多个表的报表 194
- 6.12.1 创建一对多报表 195
- 6.12.2 子报表的操作 199
- 6.13 排序和分组操作 199
- 6.13.1 添加排序和分组 199
- 6.13.2 组页眉和组页脚的属性及使用 201
- 6.14 改善基于存储查询或嵌入式SQL语句的报表的性能和可重用性 201
- 6.15 Access报表和Internet 202
- 6.15.1 对报表添加超链接 202
- 6.15.2 报表保存为HTML文件 203
- 6.15.3 报表保存为XML文件 203
- 6.16 报表的规格和限度 203
- 6.17 实例:给应用程序创建必要的报表 203
- 6.17.1 设计rptClientListing报表 203
- 6.17.2 设计rptTimeSheet报表 206
- 6.18 小结 208
- 第7章 宏及其用法 209
- 7.1 本章的重要性 210
- 7.2 创建和运行宏的基础知识 210
- 7.2.1 宏的操作 210
- 7.2.2 操作参数 211
- 7.2.3 宏名称 213
- 7.2.4 宏的条件 214
- 7.3 运行一个Access宏 215
- 7.3.1 从宏设计窗口运行一个宏 215
- 7.3.2 从导航窗格的宏组中运行一个宏 216
- 7.3.3 从窗体或报表事件中触发宏 216
- 7.4 修改现有宏 217
- 7.4.1 插入新的宏操作 218
- 7.4.2 删除宏操作 218
- 7.4.3 移动宏操作 219
- 7.4.4 复制宏操作 219
- 7.4.5 创建一个嵌入式宏 219
- 7.4.6 宏的新增功能 221
- 7.5 文件编制宏:给宏添加注释 222
- 7.6 调试宏 223
- 7.7 何时使用宏以及何时不使用宏 223
- 7.8 将宏转换为VBA代码 224
- 7.9 创建AutoExec宏 225
- 7.10 使用DoCmd对象 225
- 7.11 实例:给Time和Billing应用程序添加一个AutoExec宏 226
- 7.12 小结 226
- 第8章 VBA基础 227
- 8.1 本章的重要性 228
- 8.2 VBA解释 228
- 8.3 Access的类模块、标准模块、窗体模块和报表模块 229
- 8.3.1 VBA代码的编写位置 229
- 8.3.2 模块概述 230
- 8.3.3 Option Explicit语句 231
- 8.3.4 创建事件过程 232
- 8.3.5 创建函数和子程序 232
- 8.3.6 调用事件和用户定义例程 233
- 8.3.7 过程的适用范围和生存期 234
- 8.4 变量的操作 236
- 8.4.1 声明变量 236
- 8.4.2 VBA数据类型 236
- 8.4.3 变量的适用范围和生存期:合理地开发变量 237
- 8.5 为代码添加注释 239
- 8.6 使用续行符 239
- 8.7 使用VBA控制结构 240
- 8.7.1 If...Then...Else 240
- 8.7.2 Immediate If(IIf)语句 241
- 8.7.3 条件If:条件编译 241
- 8.7.4 Select Case语句 242
- 8.7.5 循环 243
- 8.7.6 For...Next循环 244
- 8.7.7 With...End With语句 245
- 8.7.8 For Each…Next语句 245
- 8.8 传递参数和返回值 246
- 8.9 在模块窗口中执行过程 247
- 8.10 DoCmd对象:执行宏操作 247
- 8.11 内置函数的操作 247
- 8.11.1 内置函数 248
- 8.11.2 使用对象浏览器简化函数的编写 250
- 8.12 常数的操作 251
- 8.12.1 符号常数的操作 252
- 8.12.2 内部常数的操作 252
- 8.13 操作VBE工具 253
- 8.13.1 属性/方法列表 253
- 8.13.2 常数列表功能 254
- 8.13.3 快速信息 254
- 8.13.4 参数信息 255
- 8.13.5 自动完成关键字 255
- 8.13.6 定义 255
- 8.13.7 熟悉编码环境 256
- 8.13.8 “工程”窗口 257
- 8.13.9 “属性”窗口 257
- 8.13.10 “视图Microsoft Access”工具 258
- 8.13.11 查找和替换 258
- 8.13.12 帮助 258
- 8.13.13 “代码”窗口的拆分 259
- 8.13.14 使用书签保存位置信息 260
- 8.14 自定义VBE 260
- 8.14.1 代码选项:“编辑器”选项卡 260
- 8.14.2 代码的颜色、字体和字体大小——“编辑器格式”选项卡 261
- 8.14.3 通用选项:“通用”选项卡 261
- 8.14.4 可连接选项:“可连接的”选项卡 261
- 8.15 实例:使用事件例程、用户定义函数和子程序 262
- 8.16 小结 264
- 第9章 对象、属性、事件和方法 265
- 9.1 本章的重要性 266
- 9.2 理解对象、属性、事件和方法 266
- 9.2.1 什么是对象 266
- 9.2.2 什么是属性 266
- 9.2.3 什么是事件 267
- 9.2.4 什么是方法 268
- 9.3 使用对象浏览器熟悉Access的对象 268
- 9.3.1 对象浏览器的使用方式 268
- 9.3.2 代码模板粘贴到过程中 269
- 9.4 对象的引用 270
- 9.5 操作属性和方法 270
- 9.5.1 判断属性和方法 270
- 9.5.2 使用感叹号与圆点号 271
- 9.5.3 默认属性 271
- 9.6 对象变量的声明和赋值 272
- 9.6.1 对象变量和普通变量 272
- 9.6.2 通用对象变量和特殊对象变量 273
- 9.6.3 对象变量的清除 273
- 9.7 对象与集合的区别 273
- 9.7.1 操作单个对象 273
- 9.7.2 操作对象集合 274
- 9.8 对象传递给子程序和函数 274
- 9.9 确定控件的类型 275
- 9.10 引用对象的特殊属性 276
- 9.11 理解Access的对象模型 277
- 9.11.1 Application对象 277
- 9.11.2 Forms集合 278
- 9.11.3 Reports集合 279
- 9.11.4 Modules集合 279
- 9.11.5 CurrentProject对象 279
- 9.11.6 CurrentData对象 281
- 9.11.7 CodeProject对象 282
- 9.11.8 CodeData对象 282
- 9.11.9 Screen对象 282
- 9.11.10 DoCmd对象 282
- 9.12 利用其他的有用属性 282
- 9.13 实例:对象的操作 283
- 9.14 小结 286
- 第 10章 *级窗体技术 287
- 10.1 本章的重要性 288
- 10.2 窗体事件及应用 288
- 10.2.1 Current事件 288
- 10.2.2 BeforeInsert事件 288
- 10.2.3 AfterInsert事件 289
- 10.2.4 BeforeUpdate事件 289
- 10.2.5 AfterUpdate事件 289
- 10.2.6 Dirty事件 290
- 10.2.7 Undo事件 290
- 10.2.8 Delete事件 290
- 10.2.9 BeforeDelConfirm事件 291
- 10.2.10 AfterDelConfirm事件 291
- 10.2.11 Open事件 291
- 10.2.12 Load事件 291
- 10.2.13 Resize事件 292
- 10.2.14 Unload事件 292
- 10.2.15 Close事件 292
- 10.2.16 Activate事件 293
- 10.2.17 Deactivate事件 293
- 10.2.18 Gotfocus事件 293
- 10.2.19 LostFocus事件 293
- 10.2.20 Click事件 293
- 10.2.21 DblClick事件 293
- 10.2.22 MouseDown事件 293
- 10.2.23 MouseMove事件 294
- 10.2.24 MouseUp事件 294
- 10.2.25 KeyDown事件 294
- 10.2.26 KeyUp事件 294
- 10.2.27 KeyPress事件 294
- 10.2.28 Error事件 294
- 10.2.29 Filter事件 295
- 10.2.30 ApplyFilter事件 295
- 10.2.31 Timer事件 295
- 10.2.32 窗体事件的顺序 295
- 10.3 节和控件事件及应用 296
- 10.3.1 BeforeUpdate事件 297
- 10.3.2 AfterUpdate事件 297
- 10.3.3 Updated事件 297
- 10.3.4 Change事件 297
- 10.3.5 NotInList事件 297
- 10.3.6 Enter事件 298
- 10.3.7 Exit事件 299
- 10.3.8 GotFocus事件 299
- 10.3.9 LostFocus事件 299
- 10.3.10 Click事件 299
- 10.3.11 DblClick事件 300
- 10.3.12 MouseDown事件 301
- 10.3.13 MouseMove事件 301
- 10.3.14 MouseUp事件 301
- 10.3.15 KeyDown事件 301
- 10.3.16 KeyUp事件 301
- 10.3.17 KeyPress事件 301
- 10.3.18 控件事件的顺序 301
- 10.4 引用“Me” 302
- 10.5 可创建的窗体类型及应用 302
- 10.5.1 单个窗体:一次只看一个记录 302
- 10.5.2 连续窗体:一次查看多个记录 303
- 10.5.3 多页窗体:一屏无法显示所有项目的窗体 304
- 10.5.4 选项卡窗体:充分利用屏幕空间 305
- 10.5.5 切换面板窗体:控制应用程序 306
- 10.5.6 初始屏幕窗体:通向应用程序的专业途径 307
- 10.5.7 对话框窗体:收集信息 307
- 10.6 使用内置对话框 308
- 10.6.1 消息框 308
- 10.6.2 输入框 310
- 10.6.3 FileDialog对象 310
- 10.7 利用内置窗体筛选功能 311
- 10.8 包含其他应用程序的对象:链接与嵌入 312
- 10.8.1 绑定OLE对象 312
- 10.8.2 未绑定OLE对象 313
- 10.9 使用OpenArgs属性 313
- 10.10 转换窗体记录来源 314
- 10.11 增强组合框和列表框技术 316
- 10.11.1 处理NotInList事件 316
- 10.11.2 操作弹出式窗体 317
- 10.11.3 运行时给组合框或列表框添加项目内容 318
- 10.11.4 处理列表框中的多项选择 318
- 10.12 强大的子窗体技术 319
- 10.13 使用Automatic错误检查 319
- 10.14 查看对象相关性 321
- 10.15 使用自动更正选项 321
- 10.16 传播字段属性 322
- 10.17 窗体与原始记录集的同步 323
- 10.18 创建自定义属性和方法 324
- 10.18.1 创建自定义属性 324
- 10.18.2 建立自定义方法 327
- 10.19 实例:在应用程序中使用*级技术 327
- 10.19.1 启动窗体的用途 328
- 10.19.2 建立初始屏幕 328
- 10.20 小结 328
- 第 11章 *级报表技术 329
- 11.1 本章的重要性 330
- 11.2 报表事件及其应用 330
- 11.2.1 Open事件 330
- 11.2.2 Close事件 330
- 11.2.3 NoData事件 331
- 11.2.4 Page事件 331
- 11.2.5 Error事件 331
- 11.3 报表事件的顺序 332
- 11.4 报表节事件及其应用 332
- 11.4.1 Format事件 332
- 11.4.2 Print事件 334
- 11.4.3 Retreat事件 335
- 11.4.4 节事件的顺序 335
- 11.5 编程操作报表的节 335
- 11.6 报表的特殊属性 336
- 11.6.1 MoveLayout 336
- 11.6.2 NextRecord 336
- 11.6.3 PrintSection 336
- 11.6.4 MoveLayout、NextRecord和PrintSection的相互作用 336
- 11.6.5 FormatCount 337
- 11.6.6 PrintCount 337
- 11.6.7 HasContinued 337
- 11.6.8 WillContinue 337
- 11.7 控制打印机 337
- 11.7.1 Printer对象 337
- 11.7.2 Printers集合 338
- 11.8 使用自动错误检查 338
- 11.9 传播字段属性 340
- 11.10 报表事件和属性的实际应用 341
- 11.10.1 改变报表的记录来源 341
- 11.10.2 操作报表筛选器 344
- 11.10.3 操作报表排序顺序 345
- 11.10.4 用同一个报表显示汇总数据、明细数据或两者都显示 346
- 11.10.5 给报表项目编号 347
- 11.10.6 打印多份标签 348
- 11.10.7 确定标签打印位置 349
- 11.10.8 从交叉表查询建立报表 351
- 11.10.9 在页面页眉上打印第 一项和**后一项 356
- 11.10.10 建立多细节交叉表报表 357
- 11.11 实例:练习所学知识 359
- 11.12 小结 360
- 第 12章 *级查询技术 361
- 12.1 本章的重要性 362
- 12.2 操作查询 362
- 12.2.1 更新查询 362
- 12.2.2 删除查询 363
- 12.2.3 追加查询 364
- 12.2.4 生成表查询 365
- 12.2.5 操作查询与使用代码处理记录的对比 366
- 12.3 查询的特殊属性 367
- 12.3.1 唯*值 368
- 12.3.2 唯*的记录 368
- 12.3.3 上限值 368
- 12.4 优化查询 369
- 12.4.1 了解查询编译过程 370
- 12.4.2 分析查询性能 370
- 12.4.3 提高查询性能的方法 370
- 12.4.4 Rushmore技术 371
- 12.5 交叉表查询 372
- 12.5.1 使用“交叉表查询向导”建立交叉表查询 372
- 12.5.2 不使用“交叉表查询向导”创建交叉表查询 374
- 12.5.3 创建固定的列标题 375
- 12.5.4 交叉表查询的重要注意事项 376
- 12.6 外部连接 376
- 12.7 自连接 377
- 12.8 了解SQL 378
- 12.8.1 什么是SQL,它从何而来 378
- 12.8.2 需要了解的SQL内容 378
- 12.8.3 SQL语法 379
- 12.8.4 SELECT语句 379
- 12.8.5 应用知识 383
- 12.9 联合查询 384
- 12.9.1 ALL关键字 384
- 12.9.2 查询结果排序 384
- 12.9.3 使用图形QBE创建联合查询 385
- 12.9.4 联合查询的重要注意事项 385
- 12.10 传递查询 386
- 12.11 Nulls的传播和查询结果 386
- 12.12 子查询 388
- 12.13 使用SQL更新数据 388
- 12.13.1 UPDATE语句 388
- 12.13.2 DELECT语句 389
- 12.13.3 INSERT INTO语句 389
- 12.13.4 SELECT INTO语句 389
- 12.14 使用SQL定义数据 390
- 12.14.1 CREATE TABLE语句 390
- 12.14.2 CREATE INDEX语句 390
- 12.14.3 ALTER TABLE语句 391
- 12.14.4 DROP INDEX语句 391
- 12.14.5 DROP TABLE语句 391
- 12.15 函数的结果作为查询的准则 391
- 12.16 从窗体中传递参数查询值 393
- 12.17 理解Jet4.0 ANSI-92扩展 394
- 12.17.1 表扩展 394
- 12.17.2 视图和存储过的程序扩展 396
- 12.17.3 转换扩展 397
- 12.18 实例:在应用程序中应用技术 397
- 12.18.1 存档付款 398
- 12.18.2 显示所有付款 399
- 12.18.3 创建State表 399
- 12.19 小结 399
- 第 13章 *级VBA技术 401
- 13.1 本章的重要性 402
- 13.2 用户定义类型的定义及使用原因 402
- 13.2.1 声明用户定义类型 402
- 13.2.2 创建Type变量 402
- 13.2.3 将窗体中的记录信息存储在Type变量中 403
- 13.2.4 检索Type变量元素中的信息 403
- 13.3 使用常量 404
- 13.3.1 定义自己的常量 404
- 13.3.2 内部变量的使用 405
- 13.4 使用数组 406
- 13.4.1 声明和使用固定的数组 406
- 13.4.2 声明和使用动态数组 407
- 13.4.3 将数组作为参数传递 409
- 13.5 *级函数技术 409
- 13.5.1 引用传递和值传递 409
- 13.5.2 可选参数:灵活性内置在函数中 411
- 13.5.3 命名参数:消除计算逗号的需要 413
- 13.5.4 递归程序 413
- 13.6 使用Empty和Null 414
- 13.6.1 Empty的使用 415
- 13.6.2 Null的使用 415
- 13.7 创建和使用自定义集合 419
- 13.7.1 创建集合 419
- 13.7.2 将条目添加到自定义集合中 420
- 13.7.3 访问自定义集合中的条目 420
- 13.7.4 删除集合中的条目 420
- 13.7.5 遍历自定义集合元素 421
- 13.8 处理具有底层文件处理的文件 421
- 13.9 理解和有效使用编译选项 422
- 13.10 导入和导出代码模块 422
- 13.11 工程属性的使用 423
- 13.12 实例:使用这些*级技术 424
- 13.12.1 Null、DoCmd对象和内部常量实例 424
- 13.12.2 使用类型结构的例子 425
- 13.13 小结 426
- 第 14章 利用类模块的功能 427
- 14.1 本章的重要性 428
- 14.2 面向对象介绍 428
- 14.3 创建和使用类模块 428
- 14.3.1 添加属性 429
- 14.3.2 添加方法 429
- 14.3.3 实例化和使用类 429
- 14.3.4 Property Let和Property Get:正确添加属性 430
- 14.4 使用Property Set设置值 431
- 14.5 创建多个类实例 431
- 14.6 添加代码到Initialize事件和Terminate事件 432
- 14.6.1 Initialize事件 432
- 14.6.2 Terminate事件 432
- 14.7 操作枚举类型 432
- 14.8 建立类的分级结构 434
- 14.9 给类添加Parent属性 434
- 14.10 使用Implements关键字 435
- 14.11 使用自定义集合 435
- 14.11.1 创建自定义集合 436
- 14.11.2 向集合中添加数据项 436
- 14.11.3 对自定义集合中的元素循环 436
- 14.11.4 引用集合中的数据项 437
- 14.11.5 从集合中删除数据项 437
- 14.12 添加用户自己的事件 437
- 14.13 实例:使用类模块 438
- 14.13.1 文件信息类 438
- 14.13.2 数据访问类 441
- 14.13.3 系统信息类 448
- 14.14 小结 450
- 第 15章 ADO及其重要性 451
- 15.1 本章的重要性 452
- 15.2 ADO模型 452
- 15.2.1 Connection对象 452
- 15.2.2 Recordset对象 455
- 15.2.3 Command对象 456
- 15.3 ADO记录集类型 457
- 15.3.1 CursorType参数 457
- 15.3.2 LockType参数 459
- 15.3.3 Options参数 460
- 15.3.4 一致更新与非一致更新 461
- 15.3.5 选择游标位置 462
- 15.3.6 操作Supports方法 462
- 15.4 使用ADO记录集属性及方法 463
- 15.4.1 移动记录的方法 463
- 15.4.2 检测记录集的边界 464
- 15.4.3 统计记录集中的记录数目 465
- 15.4.4 排序、筛选和查找记录 467
- 15.4.5 AbsolutePosition属性 470
- 15.4.6 Bookmark 属性 471
- 15.4.7 运行参数查询 472
- 15.4.8 刷新记录集数据 473
- 15.4.9 操作持久化的记录集 473
- 15.5 使用ADO代码修改表数据 474
- 15.5.1 一次改变一个记录数据 474
- 15.5.2 执行批量更新 476
- 15.5.3 批量更改 477
- 15.5.4 删除现有的记录 480
- 15.5.5 添加新记录 481
- 15.6 使用ADO代码创建和修改数据库对象 482
- 15.6.1 使用代码添加表 482
- 15.6.2 使用代码删除表 483
- 15.6.3 使用代码建立关系 483
- 15.6.4 使用代码创建查询 484
- 15.7 实例:将这些技术应用到应用程序中 485
- 15.8 小结 488
- 第 二部分 解决问题
- 第 16章 调试:开发成功的关键 491
- 16.1 本章的重要性 492
- 16.2 避免错误 492
- 16.2.1 Option Explicit 492
- 16.2.2 强制类型 492
- 16.2.3 命名规范 492
- 16.2.4 变量的作用范围 492
- 16.2.5 错误发生 493
- 16.3 立即窗口的应用 493
- 16.3.1 测试变量和属性值 493
- 16.3.2 设置变量和属性的值 494
- 16.3.3 清空立即窗口 495
- 16.3.4 使用内置函数 495
- 16.3.5 执行子程序、函数和方法 495
- 16.3.6 在运行时打印到立即窗口 496
- 16.4 调用调试程序 497
- 16.5 用断点排除故障 497
- 16.6 单步运行代码 498
- 16.6.1 逐语句 499
- 16.6.2 运行到下一个断点 500
- 16.6.3 逐过程 500
- 16.6.4 跳出 501
- 16.7 设置下一条执行语句 501
- 16.8 使用“调用堆栈”窗口 502
- 16.9 使用本地窗口 502
- 16.10 使用监视表达式 503
- 16.10.1 使用“自动显示数据提示” 503
- 16.10.2 使用“快速监视” 503
- 16.10.3 添加监视表达式 504
- 16.10.4 编辑监视表达式 505
- 16.10.5 表达式值为真时中断 505
- 16.10.6 表达式值改变时中断 506
- 16.11 出现运行错误后继续运行 506
- 16.12 在立即窗口查看错误 507
- 16.13 使用断言 507
- 16.14 调试提示信息 508
- 16.15 实例:调试实际的应用程序 508
- 16.16 小结 508
- 第 17章 错误处理:处理不可避免的错误 509
- 17.1 本章的重要性 510
- 17.2 实现错误处理 510
- 17.3 使用On Error语句 511
- 17.3.1 On Error GoTo语句 512
- 17.3.2 On Error Resume Next语句 513
- 17.4 使用Resume语句 513
- 17.4.1 Resume语句 514
- 17.4.2 Resume Next语句 515
- 17.4.3 Resume <LineLabel>语句 516
- 17.5 清除错误 516
- 17.6 检查级联错误影响 517
- 17.7 使用Err对象 518
- 17.8 触发错误 518
- 17.8.1 有目的地产生错误 518
- 17.8.2 创建用户自定义错误 519
- 17.9 使用Errors集合 520
- 17.10 创建通用错误处理程序 520
- 17.10.1 记录错误 523
- 17.10.2 对错误采取适当的响应 525
- 17.10.3 用电子邮件发送错误信息 527
- 17.10.4 创建错误窗体 528
- 17.10.5 打印错误窗体 531
- 17.11 防止调用自己的错误处理 531
- 17.12 创建调用堆栈 531
- 17.13 建立自定义错误处理类 534
- 17.14 操作错误事件 538
- 17.15 创建错误代码和说明的列表 538
- 17.16 实例:应用错误处理 539
- 17.17 小结 540
- 第 18章 优化应用程序 541
- 18.1 本章的重要性 542
- 18.2 优化简介 542
- 18.3 修改硬件和软件的配置 542
- 18.3.1 硬件升级:多多益善 542
- 18.3.2 改变Access的软件设置 545
- 18.4 Access数据库引擎 545
- 18.5 用性能分析器确定问题范围 545
- 18.6 设计表以优化性能 546
- 18.6.1 规范化的原因 546
- 18.6.2 规范化的缺陷 546
- 18.6.3 索引 546
- 18.6.4 选择正确的数据类型 547
- 18.7 设计数据库对象以优化性能 547
- 18.7.1 设计查询以优化性能 547
- 18.7.2 改变编码以改进性能 548
- 18.7.3 设计窗体和报表以改进性能 560
- 18.8 实例:改进应用程序的性能 561
- 18.9 小结 561
- 第三部分 开发多用户和企业应用程序
- 第 19章 开发Access应用程序的策略 565
- 19.1 本章的重要性 566
- 19.2 数据库划分成表和其他对象 566
- 19.3 基于查询或嵌入式SQL语句的窗体和报表 567
- 19.4 准备发行应用程序的步骤 568
- 19.4.1 以窗体为基础组织应用程序 568
- 19.4.2 为数据库增加启动选项 568
- 19.4.3 保障应用程序的安全 569
- 19.4.4 在应用程序中创建错误处理程序 569
- 19.4.5 增加自定义帮助 569
- 19.4.6 设立自定义功能区 569
- 19.5 Access作为前端 570
- 19.5.1 转换到客户/服务器时的考虑问题 570
- 19.5.2 客户/服务器技术的优缺点 571
- 19.5.3 Access作为前端的选项 571
- 19.5.4 迁移到客户/服务器环境的考虑问题 572
- 19.6 实例:对计算机咨询机构应用程序应用该策略 572
- 19.7 小结 572
- 第 20章 使用外部数据 573
- 20.1 本章的重要性 574
- 20.2 导入、链接和打开的时机和原因 574
- 20.2.1 选择选项 574
- 20.2.2 查看支持的文件格式 575
- 20.3 导入外部数据 576
- 20.3.1 使用用户界面 576
- 20.3.2 使用代码 577
- 20.4 创建到外部数据的链接 579
- 20.4.1 使用用户界面 579
- 20.4.2 使用代码 581
- 20.5 打开外部表 584
- 20.5.1 提供连接信息 585
- 20.5.2 打开表 585
- 20.6 理解Windows注册表设置 586
- 20.7 使用Jet OLEDB:Link Provider String 586
- 20.8 使用密码 587
- 20.9 更新和删除链接 588
- 20.9.1 更新已经移动的链接 588
- 20.9.2 删除链接 590
- 20.9.3 从链接表中生成本地表 590
- 20.10 特殊考虑 590
- 20.10.1 dBase 591
- 20.10.2 文本数据 591
- 20.11 故障排除 591
- 20.11.1 连接问题 592
- 20.11.2 临时空间 592
- 20.12 性能考虑与链接 592
- 20.13 使用HTML文档 592
- 20.14 实例:在应用程序内使用外部数据 594
- 20.14.1 用“数据库拆分器”拆分表 594
- 20.14.2 更新链接 595
- 20.15 小结 598
- 第 21章 Access 2007与SharePoint 599
- 21.1 本章的重要性 600
- 21.1.1 将选定的数据导出到SharePoint网站 600
- 21.1.2 将整个数据库移动到SharePoint网站 600
- 21.1.3 从SharePoint网站打开Access窗体和报表 600
- 21.1.4 由SharePoint列表创建数据库 600
- 21.1.5 使SharePoint列表与Access脱机 601
- 21.1.6 总结使用SharePoint的优势 601
- 21.2 Access 2007(accdb)文件格式与SharePoint 601
- 21.3 将数据导出到SharePoint网站 601
- 21.3.1 将数据导出到SharePoint网站的原因 601
- 21.3.2 将数据导出到SharePoint网站的方法 602
- 21.4 将数据发布到SharePoint网站 604
- 21.5 从SharePoint网站打开Access窗体和报表 607
- 21.6 链接到SharePoint列表与从SharePoint列表导入 610
- 21.7 使SharePoint列表与Access脱机 612
- 21.7.1 和SharePoint一起同步修改 612
- 21.7.2 联机工作 613
- 21.7.3 放弃更改 613
- 21.8 在移动SharePoint网站后重建链接 614
- 21.9 小结 614
- 第 22章 开发多用户应用程序 615
- 22.1 本章的重要性 616
- 22.2 开发应用程序的多用户问题考虑 616
- 22.2.1 多用户设计策略 616
- 22.2.2 链接外部数据的基础知识 618
- 22.3 Access的锁定机制 618
- 22.4 理解客户/服务器模型 619
- 22.5 确定是否用客户/服务器模型 619
- 22.5.1 处理大量数据 620
- 22.5.2 处理大量并发用户 620
- 22.5.3 需要更快的性能 621
- 22.5.4 处理增加的网络通信量 621
- 22.5.5 实现备份和还原 621
- 22.5.6 安全性重点 621
- 22.5.7 在多个前端工具之间共享数据 622
- 22.5.8 理解全部意义 622
- 22.6 Access在应用程序设计模型中的作用 622
- 22.6.1 Access ACCDB文件为前端和后端 622
- 22.6.2 前端用ACCDB文件,用链接同后端通信 623
- 22.6.3 前端用SQL传递查询同后端通信 624
- 22.6.4 前端执行存储在后端的程序 624
- 22.6.5 Access数据工程做前端直接与后端通信 625
- 22.7 客户/服务器术语 625
- 22.8 升迁的考虑问题 626
- 22.8.1 索引 626
- 22.8.2 自动编号字段 626
- 22.8.3 默认值 626
- 22.8.4 有效性验证规则 626
- 22.8.5 关系 627
- 22.8.6 安全性 627
- 22.8.7 表和字段的名称 627
- 22.8.8 保留字 627
- 22.8.9 区分大小写 627
- 22.8.10 属性 627
- 22.8.11 Visual Basic代码 628
- 22.9 预先准备升迁 628
- 22.10 使用事务处理 628
- 22.10.1 对事务处理优越性的理解 629
- 22.10.2 修改事务处理的默认状态 629
- 22.10.3 实现显式的事务处理 630
- 22.11 实例:准备生成企业环境的应用程序 631
- 22.12 小结 632
- 第四部分 *级编程
- 第 23章 操作和自定义功能区 635
- 23.1 本章的重要性 636
- 23.2 自定义功能区:概述 636
- 23.3 显示系统表 636
- 23.4 启用系统错误显示 637
- 23.5 创建USysRibbons表 638
- 23.6 给USysRibbons表添加数据 638
- 23.7 应用自定义功能区 639
- 23.7.1 给整个数据库应用自定义功能区 639
- 23.7.2 给窗体或报表应用自定义功能区 640
- 23.8 隐藏系统对象 641
- 23.9 将功能区恢复到默认设置 641
- 23.10 添加附加组合控件 642
- 23.11 从功能区上执行宏 643
- 23.12 实例:巩固一个Access 2007数据库 643
- 23.13 小结 644
- 第 24章 自动化:与其他应用程序通信 645
- 24.1 本章的重要性 646
- 24.2 定义自动化术语 646
- 24.3 声明对象变量以引用应用程序 646
- 24.4 创建自动化对象 648
- 24.5 操作自动化对象 648
- 24.5.1 设置和查询属性 649
- 24.5.2 执行方法 649
- 24.6 使用前期绑定与后期绑定 649
- 24.7 在Access中控制Excel 650
- 24.8 关闭Excel自动化对象 653
- 24.9 在Access中创建图表 654
- 24.10 在Access中控制Word 657
- 24.10.1 使用Word生成大量邮寄 657
- 24.10.2 使用Word克服Access作为报表编辑器的限制 659
- 24.11 在Access中控制PowerPoint 660
- 24.12 使用Access使Outlook自动化 662
- 24.13 在其他应用程序中控制Access 664
- 24.14 实例:使用自动化扩展应用程序的功能 666
- 24.15 小结 670
- 第 25章 深入Windows API的功能 671
- 25.1 本章的重要性 672
- 25.2 向编译器声明外部函数 672
- 25.2.1 给DLL函数传递参数 673
- 25.2.2 为函数取别名 674
- 25.3 使用常数和类型 675
- 25.3.1 使用常数 676
- 25.3.2 使用类型 676
- 25.4 调用DLL函数:重要的问题 677
- 25.5 使用API函数 677
- 25.5.1 操作Windows注册表 677
- 25.5.2 获得操作环境的信息 679
- 25.5.3 确定驱动器类型和可用的驱动器空间 686
- 25.6 实例:在应用程序中使用Windows API函数 688
- 25.7 小结 688
- 第 26章 创建用户的库 689
- 26.1 本章的重要性 690
- 26.2 数据库到库的准备工作 690
- 26.2.1 构造优化性能的代码模块 690
- 26.2.2 编写运行的库代码 691
- 26.2.3 编译库 691
- 26.3 创建引用 691
- 26.3.1 创建库引用 691
- 26.3.2 创建运行阶段的引用 692
- 26.3.3 创建显式引用 694
- 26.3.4 使用VBA代码创建引用 696
- 26.4 调试库数据库 697
- 26.5 实例:为应用程序建立库 697
- 26.6 小结 699
- 第 27章 使用生成器和向导 701
- 27.1 本章的重要性 702
- 27.2 使用生成器 702
- 27.2.1 设计原则 702
- 27.2.2 创建生成器 702
- 27.3 使用向导 710
- 27.3.1 设计原则 710
- 27.3.2 创建向导 710
- 27.3.3 准备使用向导 714
- 27.4 使用菜单加载项 714
- 27.4.1 设计原则 714
- 27.4.2 创建菜单加载项 715
- 27.5 实例:设计自己的加载项 715
- 27.6 小结 720
- 第 28章 Access和Internet/Intranet 721
- 28.1 本章的重要性 722
- 28.2 数据库对象保存为HTML文件 722
- 28.2.1 将表数据保存为HTML文件 722
- 28.2.2 查询结果保存为HTML文件 724
- 28.2.3 窗体保存为HTML文件 724
- 28.2.4 报表保存为HTML文件 724
- 28.3 链接HTML文件 725
- 28.4 导入HTML文件 727
- 28.5 将数据库对象保存为XML文件 728
- 28.6 导入XML文件 729
- 28.7 实例 729
- 28.8 小结 730
- 第五部分 润饰应用程序
- 第 29章 应用程序文档管理 733
- 29.1 本章的重要性 734
- 29.2 准备说明应用程序 734
- 29.2.1 表的说明 734
- 29.2.2 查询的说明 735
- 29.2.3 窗体的说明 736
- 29.2.4 报表的说明 736
- 29.2.5 宏的说明 736
- 29.2.6 模块的说明 737
- 29.2.7 使用数据库属性说明整个数据库 737
- 29.3 使用数据库文档管理器 738
- 29.3.1 使用文档管理器选项 740
- 29.3.2 产生其他格式的文档 741
- 29.4 使用对象相关性功能 742
- 29.5 编写代码创建自己的文档资料 743
- 29.6 实例:将所学的知识应用于Time and Billing应用程序 743
- 29.7 小结 744
- 第30章 维护应用程序 745
- 30.1 本章的重要性 746
- 30.2 压缩数据库 746
- 30.2.1 使用用户界面 747
- 30.2.2 使用快捷方式 748
- 30.2.3 当关闭数据库时压缩 748
- 30.2.4 使用JetEngine对象的CompactDatabase方法 749
- 30.2.5 使用Application对象的CompactRepair方法 750
- 30.3 备份数据库 750
- 30.4 转换Access数据库 751
- 30.5 删除断开的引用 752
- 30.6 实例:维护应用程序 752
- 30.7 小结 752
- 第31章 容易实现的数据库安全性 753
- 31.1 本章的重要性 754
- 31.2 Access 2007安全性的新增功能 754
- 31.3 用户级安全性 755
- 31.4 信任数据库 755
- 31.4.1 为当前会话信任数据库 755
- 31.4.2 *久信任数据库 756
- 31.5 使用数据库密码加密Office Access 2007数据库 757
- 31.6 打包、签名和分发Access数据库 758
- 31.6.1 创建自签名证书 758
- 31.6.2 创建自签名包 759
- 31.6.3 提取和使用签名包 760
- 31.7 使用信任中心 760
- 31.7.1 操作消息栏 760
- 31.7.2 使用个人信息设置 761
- 31.7.3 操作Access宏和VBA代码 761
- 31.7.4 操作受信任的位置 762
- 31.7.5 操作受信任发布者 763
- 31.8 理解信任和不信任时数据库的行为 765
- 31.9 使用沙箱模式 765
- 31.10 删除用户级安全 766
- 31.11 启用或取消ActiveX控件 766
- 31.12 启用或取消加载项 767
- 31.13 添加受信任的发布者 768
- 31.14 实例:保护Access 2007数据库 768
- 31.15 小结 768
- 第六部分 附录
- 附录A 命名约定 771
- 附录B 表结构 777
- B.1 tblClients表 778
- B.2 tblClientAddresses表 784
- B.3 The tblAddressTypes 表 788
- B.4 tblClientPhones表 789
- B.5 tblPhoneTypes 表 791
- B.6 tblCorrespondence 表 792
- B.7 tblCorrespondenceTypes 表 796
- B.8 The tblTerms 表 797
- B.9 tblContactType 表 799
- B.10 tblCompanyInfo表 800
- B.11 tblEmployees表 804
- B.12 tblErrorLog表 809
- B.13 tblErrors表 812
- B.14 tblExpenseCodes表 813
- B.15 tblPaymentMethods表 814
- B.16 tblPayments表 815
- B.17 tblProjects表 819
- B.18 tblTimeCardExpenses表 823
- B.19 tblTimeCardHours表 827
- B.20 tblTimeCards表 831
- B.21 tblWorkCodes表 833