当前位置:首页 > 工业技术
计算机技术译林精选系列 Access2000中文版开发指南
计算机技术译林精选系列 Access2000中文版开发指南

计算机技术译林精选系列 Access2000中文版开发指南PDF电子书下载

工业技术

  • 电子书积分:28 积分如何计算积分?
  • 作 者:(美)Alison Balter
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2000
  • ISBN:7111084599
  • 页数:1115 页
图书介绍:
《计算机技术译林精选系列 Access2000中文版开发指南》目录

第一部分 Access开发基础 3

第1章 Access作为开发工具 3

1.1 Access中可开发的应用程序类型 3

1.1.1 Access作为个人应用程序开发平台 3

1.1.2 Access作为小型商务应用程序开发平台 4

1.1.3 Access作为部门管理应用程序开发平台 4

1.1.4 Access 作为公司管理应用程序开发平台 4

1.1.5 Access 作为企业级客户/服务器应用程序开发平台 5

1.1.6 Access作为内部网/Internet应用程序开发平台 6

1.2 具有缩放能力的Access 6

1.3 什么是数据库 6

1.4 什么是数据库对象 7

1.4.1 表:数据的仓库 7

1.4.2 关系:联接表 9

1.4.3 查询:存储应用到数据的问题和操作 10

1.4.4 窗体:显示、修改和添加数据的手段 11

1.4.5 报表:将数据整理成信息 12

1.4.6 数据访问页:在浏览器内查看的窗体 14

1.4.7 宏:加强系统的自动化能力 14

1.4.8 模块:应用程序开发过程的基础 16

1.5 对象命名约定 16

1.6 硬件要求 17

1.6.1 开发人员的系统硬件要求 17

1.6.2 用户系统的硬件要求 18

1.7 Access应用程序的开发过程 18

1.7.1 任务分析 18

1.7.2 数据分析和设计 18

1.7.3 规范化的作用 19

1.7.4 原型开发 20

1.7.6 程序的实现 21

1.7.7 维护 22

1.8 小结 23

第2章 表的必要知识 24

2.1 创建新表 24

2.2 为数据选择合适的字段类型 27

2.2.1 文本字段:最常用的字段类型 29

2.2.2 备注字段:处理较长的注释和描述 29

2.2.3 数字字段:计算 29

2.2.4 日期/时间字段:跟踪事件的发生 29

2.2.5 货币字段:存储钱数 29

2.2.6 自动编号字段:唯一的记录标识符 30

2.2.7 是/否字段:从两个答案中选择一个正确答案 30

2.2.8 OLE对象字段:具有强大的存储功能 30

2.2.9 超级链接字段:实现与Internet的链接 30

2.3 字段属性操作 31

2.3.1 字段大小:限制对字段的输入 31

2.3.2 格式:决定数据的显示方式 32

2.3.3 输入掩码:决定何种数据能进入字段 32

2.3.4 标题:节省时间 34

2.3.5 默认值:节省数据输入时间 34

2.3.6 有效性规则:控制字段的输入 34

2.3.7 有效性文本:为用户提供错误消息 36

2.3.8 必填字段属性:强制用户输入字段值 36

2.3.9 允许空字符串:适应无数据的情况 37

2.3.10 索引:加速搜索 37

2.3.11 Unicode压缩 38

2.4 至关重要的主键 39

2.5 查阅操作 39

2.6 表的属性操作 41

2.7 使用索引提高性能 43

2.8 Access表和Internet 43

2.8.1 超级链接字段类型 43

2.8.2 将表的数据保存为HTML 45

2.9 小结 49

第3章 关系:数据完整性的关键 50

第3章 关系:数据完整性的关键 50

3.1 检查关系的类型 50

3.1.1 一对多关系 50

3.1.2 一对一关系 51

3.1.3 多对多关系 52

3.2 建立关系 52

3.2.1 在两个表之间建立关系 53

3.2.2 建立关系的原则 53

3.2.3 修改现有的关系 55

3.3 建立参照完整性 55

3.3.1 级联更新相关字段 57

3.3.2 级联删除相关记录 57

3.4 关系的作用 59

3.5 检查索引和关系 59

3.6 小结 61

第4章 查询的必要知识 62

4.1 什么是查询以及何时使用查询 62

4.2 查询基础 62

4.2.1 添加表到查询中 64

4.2.2 添加字段到查询中 64

4.2.3 从查询网格中删除字段 66

4.2.4 在查询创建后插入字段 67

4.2.5 在查询网格中移动字段的位置 67

4.2.6 保存查询以及为其命名 68

4.3 排序查询结构 68

4.4 用准则提炼查询 69

4.5 准则的日期操作 72

4.6 查询结果的更新 73

4.7 基于多个表创建查询 73

4.7.1 多表查询的缺陷 76

4.7.2 多表查询的行修复 77

4.8 创建计算字段 78

4.9 从表达式生成器获取帮助 81

4.10 以总计查询汇总数据 83

4.11 在输出中屏蔽字段 87

4.12 NULL值和查询结果 87

4.13 使用字段、字段列表和查询的属性提炼查询 90

4.13.1 字段属性:改变字段的特性 90

4.13.2 字段列表属性:改变字段列表的属性 91

4.13.3 查询属性:改变整个查询的性能 91

4.14 建立设计阶段不知道准则时可用的参数查询 92

4.15 小结 96

第5章 窗体的必要知识 97

5.1 窗体的应用 97

5.2 窗体剖析 99

5.3 创建新窗体 99

5.3.1 使用窗体向导创建窗体 100

5.3.2 从设计视图中创建窗体 102

5.4 窗体设计窗口的操作 103

5.4.1 理解和操作窗体设计工具 103

5.4.2 为窗体添加字段 105

5.4.3 窗体对象的选定、移动、对齐和调整大小 105

5.4.4 修改对象的Tab键次序 110

5.5 选择适当的控件 111

5.5.1 标签 111

5.5.2 文本框 112

5.5.3 组合框 112

5.5.4 列表框 115

5.5.5 复选框 116

5.5.6 选项按钮 116

5.5.7 切换按钮 116

5.5.8 选项组 116

5.6 控件转换 119

5.6.1 文本框转换为组合框 119

5.6.2 组合框转换为列表框 120

5.7 条件格式 120

5.8 可用的窗体属性 121

5.8.1 属性窗口的操作 121

5.8.2 窗体属性的操作 122

5.9 控件属性及其使用 126

5.9.1 控件的格式属性 126

5.9.2 控件的数据属性 128

5.9.3 控件的其他属性 129

5.10 绑定控件、非绑定控件和计算控件 130

5.11 使用表达式强化窗体 130

5.12 命令按钮向导:无需键入的编程 131

5.13 创建基于多个表的窗体 134

5.13.1 创建一对多窗体 134

5.13.2 对子窗体的操作 137

5.14 基于查询的窗体:原因及方式 137

5.15 Access窗体和Internet 138

5.15.1 在窗体中添加超级链接 139

5.15.2 窗体保存为HTML 141

5.15.3 窗体保存为Microsoft ⅡS1-2或者Microsoft Active Server Pages 141

5.15.4 设计客户窗体 141

5.15.5 设计时间卡窗体 143

5.15.6 设计付款窗体 144

5.15.7 设计工程窗体 145

5.15.8 要做的工作 145

5.16 小结 146

第6章 报表的必要知识 147

6.1 报表的类型 147

6.1.1 明细报表 147

6.1.2 汇总报表 148

6.1.3 交叉列表报表 148

6.1.4 具有图形和图表的报表 150

6.1.5 具有窗体的报表 150

6.1.6 具有标签的报表 151

6.2 报表剖析 151

6.3 创建新的报表 153

6.3.1 使用报表向导创建报表 154

6.3.2 从设计视图中创建报表 155

6.4 报表设计窗口的操作 156

6.4.1 理解报表设计工具 156

6.4.2 为报表添加字段 157

6.4.3 报表对象的选定、移动、对齐和调整大小 157

6.5 选择适当的控件 159

6.5.1 标签 160

6.5.2 文本框 160

6.5.3 直线 160

6.5.4 矩形 160

6.5.5 绑定对象框 161

6.5.6 非绑定对象框 161

6.5.7 图像控件 162

6.5.8 其他控件 163

6.6 报表属性及使用 163

6.6.1 属性窗口的操作 163

6.6.2 报表的格式属性 163

6.6.3 报表的数据属性 164

6.6.4 报表的其他属性 164

6.7 控件属性及其使用 165

6.7.1 控件的格式属性 165

6.7.2 控件的数据属性 166

6.7.3 其他控件属性 167

6.8 插入分页符 167

6.9 非绑定控件、绑定控件和计算控件 167

6.10 使用表达式加强报表 168

6.11 创建基于多个表的报表 168

6.11.1 创建一对多报表 168

6.11.2 子报表的操作 174

6.12 排序和分组操作 174

6.12.1 添加排序和分组 175

6.12.2 排序和分组属性 175

6.12.3 组页眉和组页脚的属性及使用 177

6.13 基于存储查询的报表改善性能和可重用性 177

6.14 Access报表和Internet 178

6.14.1 对报表添加超级链接 178

6.14.2 报表保存为HTML 179

6.14.3 设计rptClientListing报表 179

6.14.4 设计rptTimeSheet报表 182

6.15 小结 184

第7章 VBA简介 185

7.1 VBA解释 185

7.2 Access的类模块、标准模块、窗体模块和报表模块 187

7.2.1 VBA代码的编写位置 187

7.2.2 模块概述 187

7.2.3 Option Explicit语句 190

7.2.4 创建事件过程 191

7.2.5 创建函数和子程序 191

7.2.6 调用事件和用户定义例程 192

7.2.7 过程的适用范围和生存期 193

7.3 变量的操作 196

7.3.1 声明变量 196

7.3.2 VBA数据类型 196

7.3.3 变量的适用范围和生存期:合理地开发变量 197

7.4 为代码添加注释 199

7.5 使用续行符 200

7.6 使用VBA控制结构 200

7.6.1 If...Then...Else 201

7.6.2 Immediate If(IIf)语句 202

7.6.3 条件If:条件编译 202

7.6.4 Select Case语句 203

7.6.5 循环 204

7.6.6 For...Next循环 206

7.6.7 With...End With语句 206

7.6.8 For Each..Next语句 207

7.7 传递参数和返回值 207

7.8 在模块窗口中执行过程 209

7.9 DoCmd对象:执行宏操作 209

7.10 内置函数的操作 210

7.10.1 内置函数 210

7.10.2 使用对象浏览器简化函数的编写 212

7.11 常数的操作 214

7.11.1 符号常数的操作 214

7.11.2 内部常数的操作 215

7.12 VBE的工具 217

7.12.1 属性/方法列表 217

7.12.2 常数列表 217

7.12.3 快速信息 218

7.12.4 参数信息 219

7.12.5 自动完成关键字 220

7.12.6 定义 220

7.12.7 熟悉编码环境 220

7.12.8 “工程”窗口 222

7.12.9 “属性”窗口 223

7.12.10 “视图Microsoft Access”工具 223

7.12.11 查找和替换 223

7.12.12 帮助 224

7.12.13 “代码”窗口的拆分 225

7.12.14 使用书签保存位置信息 227

7.13 自定义VBE 227

7.13.1 代码选项:“编辑器”选项卡 228

7.13.2 代码的颜色、字体和字体大小:“编辑器格式”选项卡 228

7.13.3 通用选项:“通用”选项卡 228

7.13.4 可连接选项:“可连接”选项卡 229

7.14 小结 231

第8章 对象、属性、方法和事件 232

8.1 理解Access的对象模型 232

8.1.1 Application对象 232

8.1.2 Forms集合 233

8.1.3 Reports集合 233

8.1.4 DataAccessPages集合 234

8.1.5 Modules集合 234

8.1.6 CurrentProject对象 234

8.1.7 CurrentData对象 235

8.1.8 CodeProject对象 235

8.1.9 CodeData对象 235

8.1.10 Screen对象 235

8.1.11 DoCmd对象 236

8.2 理解对象、属性、事件和方法 236

8.2.1 什么是对象 236

8.2.2 什么是属性 236

8.2.3 什么是事件 239

8.2.4 什么是方法 240

8.3 使用对象浏览器熟悉Access的对象 242

8.3.1 对象浏览器的使用方式 242

8.3.2 代码模板粘贴到过程中 243

8.4 对象的引用 244

8.5 属性和方法 244

8.6 对象变量的声明和赋值 246

8.6.1 对象变量和普通变量 246

8.6.2 通用对象变量和特殊对象变量 247

8.6.3 对象变量的清除 247

8.7 对象与集合的区别 248

8.7.1 操作单个对象 248

8.7.2 操作对象集合 248

8.8 对象传递给子程序和函数 249

8.9 确定控件的类型 249

8.10 引用对象的特殊属性 251

8.11 小结 254

第9章 高级窗体技术 255

9.1 本章的重要性 255

9.2 窗体事件及应用 255

9.2.1 Current事件 255

9.2.2 BeforeInsert事件 256

9.2.3 AfterInsert事件 256

9.2.4 BeforeUpdate事件 256

9.2.5 AfterUpdate事件 258

9.2.6 Dirty事件 258

9.2.7 Delete事件 258

9.2.8 BeforeDelConfirm事件 258

9.2.9 AfterDelConfirm事件 259

9.2.10 Open事件 259

9.2.11 Load事件 259

9.2.12 Resize事件 259

9.2.13 Unload事件 260

9.2.14 Close事件 260

9.2.15 Activate事件 261

9.2.16 Deactivate事件 261

9.2.17 Gotfocus事件 261

9.2.18 LostFocus事件 261

9.2.19 Click事件 262

9.2.20 DblClick事件 262

9.2.21 MouseDown 262

9.2.22 MouseMove事件 262

9.2.23 MouseUp事件 262

9.2.24 KeyDown事件 262

9.2.25 KeyUp事件 263

9.2.26 KeyPress事件 263

9.2.27 Error事件 263

9.2.28 Filter事件 263

9.2.29 ApplyFilter事件 263

9.2.30 Timer事件 263

9.2.31 窗体事件的顺序 264

9.3 节和控件事件及应用 265

9.3.1 BeforeUpdate事件 265

9.3.2 AfterUpdate事件 266

9.3.3 Updated事件 266

9.3.4 Change事件 266

9.3.5 NotInList事件 266

9.3.6 Enter事件 267

9.3.7 Exit事件 268

9.3.8 GotFocus事件 268

9.3.9 LostFocus事件 268

9.3.10 Click事件 268

9.3.11 DblClick事件 269

9.3.12 MouseDown事件 270

9.3.13 MouseMove事件 270

9.3.14 MouseUp事件 270

9.3.15 KeyDown事件 270

9.3.16 KeyUp事件 270

9.3.17 KeyPress事件 270

9.3.18 控件事件的顺序 270

9.4 引用Me 271

9.5 可创建的窗体类型及应用 272

9.5.1 单一窗体:一次只看一个记录 272

9.5.2 连续窗体:一次查看多个记录 272

9.5.3 多页窗体:一屏无法显示所有项目的窗体 274

9.5.4 选项卡窗体:充分利用屏幕空间 276

9.5.5 切换面板窗体:控制应用程序 278

9.5.6 初始屏幕窗体:通向应用程序的专业途径 278

9.5.7 对话框窗体:收集信息 279

9.6 使用内建对话框 279

9.6.1 消息框 279

9.6.2 输入框 282

9.6.3 通用对话框 282

9.7 对窗体添加自定义菜单、工具栏和快捷菜单 282

9.8 利用内置窗体筛选功能 287

9.9 包含其他应用程序的对象:链接与嵌入 288

9.9.1 绑定OLE对象 288

9.9.2 未绑定OLE对象 289

9.10 OpenArgs属性 290

9.11 转换窗体记录源 290

9.12 增强组合框和列表框技术 293

9.12.1 处理NotInList事件 293

9.12.2 利用弹出式窗体 294

9.12.3 用Callback函数修改组合框或列表框内容 295

9.12.4 处理列表框中的多重选择 298

9.13 强大的子窗体技术 299

9.14 窗体与原始记录集的同步 300

9.15 创建自定义属性和方法 300

9.15.1 创建自定义属性 301

9.15.2 建立自定义方法 304

9.15.3 启动窗体的用途 305

9.15.4 建立初始屏幕 305

9.16 小结 306

第10章 高级报表技术 307

10.1 本章的重要性 307

10.2 报表事件及其应用 307

10.2.1 Open事件 307

10.2.2 Close事件 308

10.2.3 Activate事件 308

10.2.4 Deactivate事件 309

10.2.5 NoData事件 309

10.2.6 Page事件 309

10.2.7 Error事件 310

10.3 报表事件的顺序 310

10.4 报表节事件及其应用 310

10.4.1 Format事件 311

10.4.2 Print事件 312

10.4.3 Retreat事件 314

10.4.4 节事件的顺序 314

10.5 报表的特殊属性 314

10.5.1 MoveLayout 314

10.5.2 NextRecord 315

10.5.3 PrintSection 315

10.5.4 MoveLayout、NextRecord和PrintSection的相互作用 315

10.5.5 FormatCount 315

10.5.6 PrintCount 316

10.5.7 HasContinued 316

10.5.8 WillContinue 316

10.6 报表事件和属性的实际应用 316

10.6.1 改变报表的记录来源 316

10.6.2 用同一个报表显示汇总数据、明细数据或两者都显示 318

10.6.3 打印多份标签 320

10.6.4 确定标签打印位置 321

10.6.5 从交叉表查询建立报表 322

10.6.6 在页面页眉上打印第一项和最后一项 329

10.6.7 建立多细节交叉表报表 331

10.7 小结 334

第11章 高级查询技术 335

11.1 操作查询 335

11.1.1 更新查询 336

11.1.2 删除查询 337

11.1.3 追加查询 339

11.1.4 生成表查询 341

11.1.5 操作查询的特别注意事项 343

11.1.6 操作查询与使用代码处理记录的对比 343

11.2 查询的特殊属性 344

11.2.1 唯一值 345

11.2.2 唯一的记录 345

11.2.3 上限值 345

11.3 优化查询 348

11.3.1 了解查询编译过程 348

11.3.2 分析查询性能 349

11.3.3 提高查询性能的方法 349

11.3.4 Rushmore技术 350

11.4 交叉表查询 351

11.4.1 使用“交叉表查询向导”建立交叉表查询 351

11.4.2 不使用“交叉表查询向导”创建交叉表查询 354

11.4.3 创建固定的列标题 356

11.4.4 交叉表查询的重要注意事项 357

11.5 外部联接 357

11.6 自联接 359

11.7 了解SQL 360

11.7.1 什么是SQL?它从何而来 360

11.7.2 需要了解的SQL内容 360

11.7.3 应用知识 363

11.8 联合查询 365

11.9 传递查询 366

11.10 NullS的传播和查询结果 367

11.11 子查询 368

11.12 函数的结果作为查询的准则 369

11.13 从窗体中传递参数查询值 371

11.13.1 存档付款 372

11.13.2 显示所有付款 374

11.13.3 创建State表 374

11.14 小结 375

第12章 ADO、DAO及其重要性 376

12.1 了解DAO 376

12.2 比较ADO和DAO 376

12.3 ADO模型 377

12.3.1 Connection对象 377

12.3.2 Recordset对象 378

12.3.3 Command对象 380

12.4 ADO记录集类型 381

12.4.1 CursorType参数 382

12.4.2 LockType参数 383

12.4.3 Options参数 384

12.5 使用ADO记录集属性及方法 385

12.5.1 移动记录的方法 385

12.5.2 检测记录集的边界 386

12.5.3 统计记录集中的记录数目 387

12.5.4 排序、筛选和查找记录 389

12.5.5 AbsolutePosition属性 392

12.5.6 Bookmark属性 392

12.5.7 运行参数查询 393

12.6 使用ADO代码修改表数据 394

12.6.1 一次改变一个记录数据 394

12.6.2 批量更改 396

12.6.3 删除现有的记录 396

12.6.4 添加新记录 397

12.7 使用ADO代码创建和修改数据库对象 398

12.7.1 使用代码添加表 398

12.7.2 使用代码删除表 400

12.7.3 使用代码建立关系 400

12.7.4 使用代码创建查询 401

12.8 DAO模型 402

12.8.1 Workspaces集合 402

12.8.2 Users集合 403

12.8.3 Groups集合 403

12.8.4 Databases集合 403

12.8.5 TableDefs集合 404

12.8.6 Indexes集合 404

12.8.7 QueryDefs集合 404

12.8.8 Fields集合 405

12.8.9 Parameters集合 406

12.8.10 Recordsets集合 406

12.8.11 Relations集合 407

12.8.12 Containers集合 407

12.8.13 Documents集合 408

12.8.14 Properties集合 408

12.8.15 Errors集合 409

12.9 DBEngine对象 409

12.10 使用CurrentDB()函数 410

12.11 DAO记录集类型 410

12.11.1 动态集 410

12.11.2 数据快照 411

12.11.3 表 411

12.12 选取可用的DAO记录集对象类型 411

12.13 使用DAO Recordset的属性和方法 411

12.13.1 创建Recordset变量 412

12.13.2 使用参数打开记录集 413

12.13.3 检查移动记录的方法 414

12.13.4 检测记录集的边界 415

12.13.5 统计记录集中的记录数目 416

12.13.6 排序、筛选和查找记录 417

12.13.7 使用AbsolutePosition属性 420

12.13.8 使用Bookmark属性 420

12.13.9 使用RecordsetClone属性 421

12.13.10 运行Parameter查询 422

12.14 使用DAO代码修改表数据 422

12.14.1 一次改变一个记录中的记录数据 422

12.14.2 批量更改 423

12.14.3 删除现有的记录 424

12.14.4 添加新记录 424

12.14.5 使用LastModified属性 425

12.15 使用DAO代码创建和修改数据库对象 426

12.15.1 使用代码添加表 426

12.15.2 使用代码删除表 427

12.15.3 使用代码建立关系 428

12.15.4 使用代码创建查询 428

12.16 使用DAO容器集合 429

12.17 小结 433

第二部分 解决问题 437

第13章 调试:开发成功的关键 437

13.1 避免错误 437

13.1.1 Option Explicit 438

13.1.2 强制类型 438

13.1.3 命名规范 438

13.1.4 变量的作用范围 438

13.1.5 错误发生 438

13.2 立即窗口的应用 438

13.2.1 测试变量和属性值 439

13.2.2 设置变量和属性的值 440

13.2.3 清空立即窗口 441

13.2.4 使用内置函数 442

13.2.5 执行子程序、函数和方法 442

13.2.6 在运行时打印到立即窗口 442

13.3 调用调试程序 443

13.4 用断点排除故障 444

13.5 单步运行代码 445

13.5.1 逐语句 446

13.5.2 运行到下一个断点 448

13.5.3 逐过程 449

13.5.4 跳出 450

13.6 设置下一条执行语句 450

13.7 使用“调用”窗口 451

13.8 使用本地窗口 452

13.9 使用监视表达式 452

13.9.1 使用“自动显示数据提示” 453

13.9.2 使用“快速监视” 453

13.9.3 添加监视表达式 454

13.9.4 编辑监视表达式 455

13.9.5 表达式值为真时中断 455

13.9.6 表达式值改变时中断 456

13.10 出现运行阶段错误后继续运行 457

13.11 在立即窗口查看错误 458

13.12 小结 459

第14章 错误处理:处理不可避免的错误 460

14.1 本章的重要性 460

14.2 实现错误处理 460

14.3 使用错误事件 462

14.4 使用On Error语句 463

14.5 使用Resume语句 465

14.5.1 Resume语句 465

14.5.2 Resume Next语句 467

14.5.3 Resume<LineLabel>语句 467

14.6 清除错误 468

14.7 检查级联错误影响 468

14.8 使用Err对象 469

14.9 触发错误 470

14.9.1 有目的地产生错误 470

14.9.2 创建用户自定义错误 470

14.10 使用Errors集合 471

14.11 创建通用错误处理程序 472

14.11.1 记录错误 475

14.11.2 对错误采取适当的响应 477

14.11.3 创建错误窗体 480

14.11.4 打印错误窗体 483

14.12 防止调用自己的错误处理 483

14.13 小结 485

第15章 优化应用程序 486

15.1 本章的重要性 486

15.2 优化简介 486

15.3 修改硬件和软件的配置 487

15.3.1 硬件升级:多多益善 487

15.3.2 改变Access的软件设置 489

15.4 Jet4.0改进性能的方式 490

15.5 用性能分析器确定问题范围 491

15.6 设计表以优化性能 491

15.6.1 规范化的原因 492

15.6.2 规范化的缺陷 492

15.6.3 索引 493

15.6.4 选择正确的数据类型 493

15.7 设计查询以优化性能 493

15.8 改变编码以改进性能 494

15.8.1 删除变体和用最小的数据类型 494

15.8.2 使用特定的对象类型 494

15.8.3 使用内联代码 495

15.8.4 使用Not触发布尔变量 495

15.8.5 利用内置集合 496

15.8.6 应用长度函数 496

15.8.7 用True和Fale代替0 496

15.8.8 使用事务 497

15.8.9 删除无用的Dim和Declare语句 497

15.8.10 删除无用的代码 497

15.8.11 使用变量引用属性、控件和数据访问对象 498

15.8.12 使用With....End With 498

15.8.13 使用Me关键字 498

15.8.14 尽可能使用字符串函数 499

15.8.15 使用动态数组 499

15.8.16 尽可能使用常数 499

15.8.17 使用书签 499

15.8.18 设置对象变量等于Nothing 500

15.8.19 用操作查询代替循环记录集 500

15.8.20 用编译的模块交付应用程序 501

15.8.21 保持编译状态 501

15.8.22 作为MDE分发应用程序 501

15.8.23 组织模块 502

15.9 设计窗体和报表以改进性能 502

15.9.1 设计窗体 502

15.9.2 设计报表 503

15.10 小结 504

第三部分 开发多用户和企业应用程序 507

第16章 开发Access应用程序的策略 507

16.1 本章的重要性 507

16.2 数据库划分成表和其他对象 507

16.3 基于查询或嵌入式SQL语句的窗体和报表 509

16.4 Access运行引擎 510

16.4.1 MOD的特征 510

16.4.2 Access标准版本与运行版本的区别 511

16.4.3 准备发行应用程序的步骤 512

16.4.4 Access运行引擎概述 514

16.5 EXE与Access数据库:这意味着什么 515

16.6 数据库安全的重要性 515

16.7 Access作为前端 516

16.7.1 转换到客户/服务器时的考虑问题 516

16.7.2 客户/服务器技术的优缺点 517

16.7.3 Access作为前端的选项 518

16.7.4 迁移到客户/服务器环境的考虑问题 518

16.8 小结 519

第17章 开发多用户应用程序 520

17.1 开发应用程序的多用户问题考虑 520

17.1.1 多用户设计策略 520

17.1.2 安装应用程序的策略 521

17.1.3 链接外部数据的基础知识 522

17.2 Access的锁定机制 524

17.3 锁定和更新策略 525

17.3.1 默认记录锁定 526

17.3.2 记录级锁定 526

17.3.3 默认打开模式 527

17.3.4 更新重试次数 527

17.3.5 ODBC刷新间隔 527

17.3.6 刷新间隔 528

17.3.7 更新重试间隔 528

17.3.8 刷新与重新查询数据的对比 529

17.4 窗体锁定策略 529

17.4.1 无锁定 529

17.4.2 所有记录 529

17.4.3 编辑记录 530

17.5 记录集锁定 531

17.5.1 保守式锁定 531

17.5.2 开放式锁定 533

17.6 有效处理锁定冲突 535

17.6.1 保守式锁定的错误 535

17.6.2 保守式锁定冲突的编码 536

17.6.3 开放式锁定时的错误 539

17.6.4 开放式锁定冲突的编码 539

17.7 测试记录的锁定状态 542

17.8 用代码刷新或重新查询 543

17.9 理解LDB文件 544

17.10 用户名单 544

17.11 创建自定义计数器 545

17.12 使用非绑定窗体 545

17.13 用同步复制改进性能 546

17.14 小结 547

第18章 使用外部数据 548

18.1 本章的重要性 548

18.2 导入、链接和打开的时机和原因 549

18.2.1 选择选项 549

18.2.2 查看支持的文件格式 550

18.3 导入外部数据 551

18.3.1 使用用户界面 551

18.3.2 使用代码 552

18.4 创建到外部数据的链接 554

18.4.1 使用用户界面 554

18.4.2 使用代码 558

18.5 打开外部表 561

18.5.1 提供连接信息 562

18.5.2 打开表 562

18.6 理解Windows注册表设置 563

18.7 使用Jet OLED:Link Provider String 564

18.8 使用密码 564

18.9 更新和删除链接 566

18.9.1 更新已经移动的链接 566

18.9.2 删除链接 567

18.10 特殊考虑 567

18.10.1 dBase 568

18.10.2 文本数据 568

18.11 故障排除 569

18.11.1 连接问题 569

18.11.2 临时空间 569

18.12 性能考虑与链接 569

18.13 使用HTML文档 569

18.13.1 用“数据库拆分器”拆分表 572

18.13.2 更新链接 572

18.14 小结 576

第19章 客户/服务器技术 577

19.1 理解客户/服务器模型 577

19.2 确定是否用客户/服务器模型 578

19.2.1 处理大量数据 578

19.2.2 处理大量并发用户 579

19.2.3 需要更快的性能 579

19.2.4 处理增加的网张通信量 580

19.2.5 实现备份和还原 580

19.2.6 安全性重点 581

19.2.7 在多个前端工具之间共享数据 581

19.2.8 理解全部意义 581

19.3 Access在应用程序设计模型中的作用 582

19.3.1 Access为前端和MDB文件为后端 582

19.3.2 前端用MDB文件,用链接同后端通信 583

19.3.3 前端用SQL传递查询同后端通信 584

19.3.4 Microsoft Access数据工程做前端直接与后端通信 584

19.4 客户/服务器术语 584

19.5 升迁的考虑问题 585

19.5.1 索引 587

19.5.2 自动编号字段 587

19.5.3 默认值 588

19.5.4 有效性验证规则 588

19.5.5 关系 588

19.5.6 安全性 588

19.5.7 表和字段的名称 588

19.5.8 保留字 589

19.5.9 区分大小写 589

19.5.10 属性 589

19.5.11 Visual Basic代码 589

19.6 预先准备升迁 589

19.7 使用升迁向导 589

19.8 定义ODBC数据源 593

19.9 连接到数据库服务器 597

19.10 使用链接表 598

19.10.1 通过用户界面链接外部表 598

19.10.2 用代码链接外部表 600

19.10.3 链接到视图而不是表 601

19.11 使用传递查询 605

19.11.1 使用用户界面在MDB文件中创建传递查询 605

19.11.2 用代码执行传递查询 606

19.12 执行和创建存储过程 607

19.13 用Microsoft Access数据工程访问客户/服务器数据 610

19.13.1 创建ADP 610

19.13.2 使用SQL Server表 613

19.13.3 使用SQL Server视图 614

19.13.4 使用数据库图表 615

19.13.5 使用存储过程 617

19.13.6 创建并使用窗体、报表、宏和模块 618

19.13.7 探索ADP的其他特性 618

19.14 小结 618

第20章 客户/服务器方案 619

20.1 本章的重要性 619

20.2 选择最好的记录集类型 619

20.2.1 CursorType类型 619

20.2.2 LockType属性 620

20.2.3 Open方法的Options参数 620

20.3 使用传递查询和存储过程 621

20.4 使用ADP 621

20.5 优化数据处理 622

20.6 优化查询和窗体 622

20.6.1 优化查询 622

20.6.2 优化窗体 622

20.7 小结 627

第21章 运行的客户/服务器应用程序 628

21.1 本章的重要性 628

21.2 用链接表创建客户/服务器应用程序 628

21.2.1 链接到包含在SQL Server数据库中的表 629

21.2.2 生成Customer窗体 631

21.3 用ADP创建客户/服务器应用程序 647

21.4 小结 655

第22章 事务处理 657

22.1 本章的重要性 657

22.2 对优越性的理解 658

22.3 修改默认状态 659

22.4 实现显式的事务处理 660

22.5 事务处理问题 662

22.5.1 认识工作空间中发生的事务 662

22.5.2 确保数据源支持事务 662

22.5.3 嵌套事务 666

22.5.4 忽略显式提交事务 666

22.5.5 查看可用内存 666

22.5.6 结合窗体和事务 667

22.6 在多用户环境中使用事务处理 667

22.7 在客户/服务器环境中使用事务处理 672

22.7.1 隐含事务 672

22.7.2 显式事务 672

22.7.3 锁定的局限性 674

22.7.4 特定服务器事务命令的负面作用 674

22.8 小结 676

第23章 同步复制简化工作 677

23.1 本章的重要性 677

23.2 同步复制的使用 677

23.2.1 多个办公室之间共享数据 678

23.2.2 分散用户之间共享数据 678

23.2.3 减少网络负荷 678

23.2.4 分布的应用程序更新 678

23.2.5 备份应用程序中的数据 679

23.3 同步复制的局限性 679

23.4 同步复制的实现 679

23.4.1 Access用户界面 679

23.4.2 “我的公文包”同步复制 680

23.4.3 同步复制管理器 680

23.4.4 ADO代码 680

23.4.5 支持使用ADO代码进行同步复制的程序 680

23.5 同步复制的整体结构:同步复制的过程 680

23.5.1 跟踪层 681

23.5.2 Microsoft同步复制管理器 681

23.5.3 同步器 681

23.5.4 文件系统传输 682

23.5.5 公文包协调器 682

23.5.6 注册表条目 682

23.6 同步复制的拓扑结构 683

23.6.1 星形拓扑结构 683

23.6.2 环形拓扑结构 684

23.6.3 完全连接的拓扑结构 684

23.6.4 线型拓扑结构 684

23.6.5 混合型拓扑结构 684

23.7 同步复制对数据库的改变 685

23.7.1 添加到每个同步复制表中的字段 685

23.7.2 添加到数据库的系统表 685

23.7.3 为数据库对象添加的属性 685

23.7.4 对连续的“自动编号”字段的改变 686

23.7.5 对数据库大小所作的改变 686

23.8 使数据库具有可同步复制性 686

23.8.1 为可同步复制数据库提供Access用户界面 686

23.8.2 为可同步复制数据库提供Windows“我的公文包” 688

23.9 防止同步复制某些对象 688

23.10 创建附加副本 689

23.10.1 使用Access用户界面创建附加副本 690

23.10.2 使用Windows“我的公文包”创建附加副本 690

23.11 同步副本 691

23.11.1 使用Access用户界面同步数据库 691

23.11.2 使用Windows“我的公文包”同步数据库 692

23.12 解决同步复制冲突 692

23.13 使用同步复制管理器 693

23.13.1 第一次运行同步复制管理器 694

23.13.2 使用Replication Manager同步复制数据库 699

23.13.3 使用RepLication Manager创建副本 701

23.13.4 使用Replication Manager同步副本 702

23.13.5 查看同步历史 703

23.13.6 使用同步属性 705

23.14 使用部分同步复制 705

23.15 使用代码进行同步复制 708

23.15.1 使用代码同步复制数据库 708

23.15.2 将某个对象标记为本地的 709

23.15.3 使用代码创建副本 709

23.15.4 使用代码创建部分副本 710

23.15.5 使用代码同步数据库 711

23.15.6 使用代码处理冲突 711

23.16 小结 712

第四部分 高级编程 715

第24章 高级VBA技术 715

24.1 本章的重要性 715

24.2 用户定义类型的定义及使用原因 715

24.2.1 声明用户定义类型 716

24.2.2 创建Type变量 716

24.2.3 将窗体中的记录信息存储在Type变量中 716

24.2.4 检索Type变量元素中的信息 717

24.3 使用常量 717

24.3.1 定义自己的常量 718

24.3.2 内部变量的使用 719

24.4 使用数组 720

24.4.1 声明和使用固定的数组 721

24.4.2 声明和使用动态数组 722

24.4.3 将数组作为参数传递 723

24.5 高级函数技术 724

24.5.1 引用传递和值传递 724

24.5.2 可选参数:灵活性内置在函数中 726

24.5.3 命名参数:消除计算逗号的需要 728

24.6 使用Empty和Null 728

24.6.1 Empty的使用 728

24.6.2 Null的使用 729

24.7 创建和使用自定义集合 733

24.7.1 创建集合 734

24.7.2 将条目添加到集合中 734

24.7.3 访问集合中的条目 734

24.7.4 删除集合中的条目 735

24.7.5 遍历集合元素 735

24.8 理解和有效使用编译选项 735

24.8.1 请求时编译 736

24.9 导入和导出代码模块 736

24.10 工程属性的使用 737

24.10.1 Null、DoCmd对象和内部常量实例 738

24.10.2 使用类型结构的例子 738

24.11 小结 740

第25章 使用ActiveX控件 741

25.1 介绍ActiveX控件 741

25.2 在Access 2000中合并ActiveX控件 742

25.2.1 安装ActiveX控件 742

25.2.2 注册ActiveX控件 742

25.2.3 向窗体中添加ActiveX控件 744

25.2.4 理解和管理Access应用程序中引用的控件 746

25.3 在设计阶段设置ActiveX控件的属性 747

25.4 ActiveX控件的编码事件 747

25.5 使用Calender控件 749

25.5.1 Calender控件属性 749

25.5.2 Calender控件的方法 751

25.6 使用UpDown控件 752

25.6.1 使用StatusBar控件 753

25.6.2 使用Common Dialog控件 755

25.6.3 使用Rich Textbox控件 758

25.6.4 使用TabStrip控件 760

25.7 使用ImageList控件 762

25.8 许可证和分布问题 763

25.9 小结 765

第26章 自动功能:与其他应用程序通信 766

26.1 本章的重要性 766

26.2 定义自动功能术语 767

26.3 声明对象变量以引用应用程序 767

26.4 创建自动功能对象 768

26.5 操作自动功能对象 770

26.5.1 设置和查询属性 770

26.5.2 执行方法 770

26.6 在Access中控制Excel 770

26.7 关闭Excel自动功能对象 774

26.8 在Access中创建图表 774

26.9 在Access中控制Word 779

26.10 在Access中控制PowerPoint 780

27.11 在其他应用程序中控制Access 784

26.12 小结 792

第27章 深入Windows API的功能 793

27.1 本章的重要性 793

27.2 向编译器声明外部函数 793

27.2.1 按引用传递和按值传递 794

27.2.2 传递字符串参数 795

27.2.3 为函数取别名 796

27.2.4 函数调用和非法字符 796

27.2.5 有重复名称的DLL函数 796

27.2.6 删去ANSI所需的A 797

27.2.7 Access库或模块中的唯一过程名 797

27.2.8 调用序数引用的函数 798

27.3 使用常数和类型 798

27.3.1 使用常数 798

27.3.2 使用类型 798

27.3.3 使用Windows API Text Viewer 800

27.3.4 加载文本文件 801

27.3.5 加载数据库文件 802

27.3.6 粘贴API声明、类型和常数 802

27.4 调用DLL函数:重要的问题 804

27.5 16位和32位API的区别 805

27.6 使用API函数 805

27.7 获得操作环境的信息 805

27.8 确定驱动器类型和可用的驱动器空间 811

27.9 小结 814

第28章 利用类模块的功能 815

28.1 类模块的好处 815

28.2 面向对象介绍 815

28.3 创建和使用类模块 816

28.3.1 添加属性 816

28.3.2 添加方法 817

28.3.3 实例化和使用类 817

28.3.4 Property Let和Property Get:正确添加属性 818

28.4 创建多个类实例 819

28.5 Initialize事件和Terminate事件 820

28.5.1 Initialize事件 820

28.5.2 Terminate事件 820

28.6 使用自定义集合 820

28.6.1 创建集合 821

28.6.2 向集合中添加数据项 821

28.6.3 对自定义集合中的元素循环 822

28.6.4 引用集合中的数据项 822

28.6.5 从集合中删除数据项 823

28.6.6 文件信息类 823

28.6.7 使用集合操作文件信息类的多个实例 825

28.6.8 数据访问类 826

28.6.9 系统信息类 833

28.6.10 自定义错误处理程序类 836

28.7 小结 841

第29章 创建自己的库 842

29.1 本章的重要性 842

29.2 数据库到库的准备工作 842

29.2.1 构造优化性能的代码模块 843

29.2.2 编写运行的库代码 843

29.2.3 编译库 844

29.3 创建引用 844

29.3.1 创建库引用 844

29.3.2 创建运行阶段的引用 844

29.3.3 运行阶段调用库中的函数 846

29.3.4 创建显式引用 847

29.3.5 使用VBA代码创建引用 850

29.4 调试库数据库 851

29.5 保护Access库 852

29.6 小结 855

第30章 使用生成器、向导和菜单加载项 856

30.1 本章的重要性 856

30.2 使用生成器 856

30.2.1 设计原则 857

30.2.2 创建生成器 857

30.2.3 编写生成器函数 857

30.2.4 设计生成器窗体 860

30.2.5 注册生成器 861

30.2.6 自动创建注册表条目 865

30.3 使用向导 867

30.3.1 设计原则 867

30.3.2 创建向导 867

30.3.3 准备使用向导 872

30.4 使用菜单加载项 872

30.4.1 设计原则 873

30.4.2 创建菜单加载项 873

30.5 小结 879

第31章 Access和Internet 880

31.1 Access和Internet的新特征 880

31.2 数据库对象保存为HTML 880

31.2.1 将表数据保存为HTML 881

31.2.2 查询结果保存为HTML 881

31.2.3 窗体保存为HTML 882

31.2.4 报表保存为HTML 883

31.3 链接HTML文件 884

31.4 导入HTML文件 885

31.5 确定HTML格式是静态还是动态 887

31.6 使用.ASP文件 887

31.7 使用HTX/IDC文件 888

31.8 测试ASP和HTX/IDC文件 889

31.9 使用HTML模块 890

31.10 向FTP或HTTP服务器发送数据 890

31.10.1 在FTP和HTTP服务器上导入和链接数据 891

31.10.2 向FTP服务器发送对象 892

31.11 利用超级链接 892

31.11.1 在表中保存超级链接 892

31.11.2 将超级链接放置到窗体和报表上 892

31.12 Web工具栏 892

31.13 在Internet上实现同步复制 894

31.14 小结 894

第32章 使用数据访问页 895

32.1 了解数据访问页 895

32.2 创建数据访问页 895

32.2.1 使用自动创建数据页特征创建数据访问页 896

32.2.2 使用向导创建数据访问页 897

32.2.3 从现有的Web页创建数据访问页 900

32.2.4 从头开始创建数据访问页 901

32.3 修改数据访问页的重要属性 904

32.3.1 DataEntry属性 904

32.3.2 MaxRecords属性 905

32.3.3 RecordsetType属性 905

32.3.4 UseRemoteProvider属性 905

32.4 修改记录浏览控件属性 906

32.4.1 RecordSource属性 906

32.4.2 ShowNextButton、ShowPrevButton、ShowFirst 907

32.4.3 ShowNewButton属性 907

32.4.4 ShowDelButton属性 907

32.4.5 ShowSaveButton属性 907

32.4.6 ShowUndoButton属性 907

32.4.7 ShowSortAscendingButton和ShowDescendingButton属性 907

32.4.8 ShowToggleFilterButton属性 908

32.5 创建分组的数据访问页 908

32.6 使用VbScript增强数据访问页 911

32.6.1 重要的数据访问页事件 913

32.6.2 VBScript与VBA的比较 914

32.6.3 VBScript与JavaScript的比较 916

32.7 小结 916

第五部分 修饰应用程序 919

第33章 容易实现的数据库安全性 919

33.1 本章的重要性 919

33.2 实现共享级的安全性:建立数据库密码 919

33.3 数据库加密 921

33.4 建立用户级安全性 921

33.4.1 步骤1:创建工作组 922

33.4.2 步骤2:更改“管理员”用户的密码 926

33.4.3 步骤3:创建管理级的用户 927

33.4.4 步骤4:使管理级的用户成为“管理员”组的成员 928

33.4.5 步骤5:退出Access,并以系统管理员的身份登录 929

33.4.6 步骤6:从“管理员”组中删除“管理员”用户 930

33.4.7 步骤7:为系统管理员指定密码 930

33.4.8 步骤8:打开想保护的数据库 931

33.4.9 步骤9:运行“安全机制向导” 931

33.4.10 步骤10:创建用户和组 936

33.4.11 步骤11:为用户和组指定权力 938

33.5 提供附加的安全级别:创建MDE 940

33.6 特殊问题 941

33.6.1 密码 941

33.6.2 安全性和链接表 942

33.6.3 所有者 942

33.6.4 打印安全性 943

33.7 小结 946

第34章 高级安全技术 947

34.1 本章的重要性 947

34.2 使用代码维护组 947

34.2.1 添加组 948

34.2.2 删除组 949

34.3 使用代码维护用户 951

34.3.1 添加用户 951

34.3.2 把用户分配到一个组中 952

34.3.3 从组中删除用户 954

34.3.4 删除用户 955

34.4 列出所有组和用户 957

34.4.1 列出所有组 957

34.4.2 列出所有用户 958

34.5 使用密码 959

34.5.1 为用户指定密码 960

34.5.2 列出未使用密码的用户 961

34.5.3 确保用户使用密码 963

34.6 使用代码指定和取消对对象的访问权限 964

34.7 使用代码给数据库加密 966

34.8 使用查询完成字段级的安全性 967

34.9 禁止用户和组创建对象 967

34.10 以另一个用户的身份登录完成未授权的任务 969

34.11 保护客户/服务器应用程序 969

34.12 安全性和复制 969

34.13 小结 970

第35章 应用程序文档管理 971

35.1 本章的重要性 971

35.2 准备说明应用程序 971

35.2.1 表的说明 972

35.2.2 查询的说明 972

35.2.3 窗体的说明 973

35.2.4 报表的说明 975

35.2.5 宏的说明 975

35.2.6 模块的说明 975

35.2.7 使用数据库属性说明整个数据库 976

35.3 使用数据库文档管理器 978

35.3.1 使用文档管理器选项 979

35.3.2 产生其他格式的文档 982

35.4 编写代码创建自己的文档资料 982

35.5 小结 984

第36章 维护应用程序 985

36.1 本章的重要性 985

36.2 压缩数据库 985

36.2.1 使用用户界面 986

36.2.2 使用快捷方式 988

36.2.3 当关闭数据库时 988

36.2.4 使用代码 988

36.3 小结 990

第37章 Microsoft Office Developer 991

37.1 分布应用程序简介 991

37.2 讨论MOD 991

37.2.1 Developer Application 992

37.2.2 Developer Tools 993

37.2.3 MOD组件的杂项 1006

37.3 小结 1018

第38章 使用Visual SourceSafe管理应用程序开发 1019

38.1 本章的重要性 1019

38.2 如何安装Visual SourceSafe 1019

38.3 使用Visual SourceSafe概述 1020

38.4 使用Visual SourceSafe管理工程的善后处理 1021

38.4.1 将数据库添加到Visual SourceSafe中 1021

38.4.2 从SourceSafe工程创建数据库 1025

38.4.3 Visual SourceSafe工程创建数据库 1026

38.4.4 签入和签出数据库对象 1027

38.4.5 获得最新版本 1028

38.4.6 将对象添加到Visual SourceSafe中 1029

38.4.7 刷新对象的状态 1029

38.5 权衡使用Visual SourceSafe 1029

38.5.1 显示模块之间的差别 1029

38.5.2 显示对象的历史 1030

38.5.3 还原为对象的以前版本 1031

38.6 Visual SourceSafe对Access行为的更改 1031

38.6.1 压缩命令 1031

38.6.2 打开数据库 1031

38.6.3 关闭数据库 1031

38.6.4 在设计视图中打开对象 1032

38.6.5 保存新对象,或者使用“另存为”保存现有对象 1032

38.6.6 重命名对象 1032

38.6.7 删除对象 1032

38.7 获得Visual SourceSafe的帮助 1033

38.8 了解Visual SourceSafe的限制 1033

38.9 小结 1034

第39章 分布应用程序 1035

39.1 本章的重要性 1035

39.2 Package and Deployment Wizard简介 1035

39.3 加载Package and Deployment Wizard 1036

39.4 分布应用程序用Access的完全版本运行 1036

39.5 使用Access的运行版本与完全版本 1037

39.5.1 隐藏“数据库”窗口 1038

39.5.2 隐藏设计视图 1038

39.5.3 不支持内置的工具栏 1038

39.5.4 不可用菜单项 1038

39.5.5 禁用的键 1038

39.6 准备让数据库在Access的运行版本下使用 1039

39.6.1 创建应用程序 1039

39.6.2 将自定义的帮助文件添加到应用程序中 1045

39.6.3 测试和调试应用程序 1045

39.6.4 使用/Runtime命令行参数运行和测试应用程序 1045

39.6.5 运行Package and Deployment Wizard 1046

39.6.6 配置应用程序 1053

39.6.7 分布应用程序 1056

39.7 讨论其他问题 1057

39.7.1 自动进行与表的链接处理 1057

39.7.2 采用同步复制技术有效地分布应用程序 1061

39.8 小结 1062

第六部分 附录 1065

附录A 表结构 1065

A.1 tblClients表 1065

A.2 tblCompanyInfo表 1074

A.3 tblEmployees表 1079

A.4 tblErrorLog表 1084

A.5 tblErros表 1087

A.6 tblExpenseCodes表 1089

A.7 tblPaymentMethods表 1089

A.8 tblPayments表 1091

A.9 tblProjects表 1094

A.10 tblTimeCardExpenses表 1099

A.11 tblTimeCardHours表 1103

A.12 tblTimeCards表 1107

A.13 tblWorkCodes表 1109

附录B 1111

相关图书
作者其它书籍
返回顶部