联系管理应用对大多数第一次使用 A c c e s s的用户来讲显得过于复杂。“数据库向导” 在新 数据库中生成了多个表、窗体、报表和模块对象。以下几节将在新建的联系应用的上下文中, 对每个对象的作用进行解释。 2.3.1 数据库窗口中的表对象 表是A c c e s s数据库的基础。为了研究由“数据库向导”从 Contact Management 模板生成的 某些表对象,可以采取如下做法: 1) 单击“数据库”窗口的“还原”按钮, 以N o r m a l模式打开“数据库”窗口。一 个O u t l o o k风格的快捷方式栏将出现在列表的 左边。 2) 如果需要,单击“表”快捷方式,显 示一个由三个“创建表”选项和四个联系数 据库中的四个表对象组成的列表(见图2 - 11 )。 3) 双击“联系人”项,在“数据表”视 图中打开“联系人”。联系人表中的字段对应 于第二个向导对话框列表中的项 (参见前一 节中的第六步)。第一个字段是一个自动编号 字段,它可以自动对你添加的记录顺序编 号;不能改变一个自动编号字段的值。 4) 在“联系人”表开头的可见字段中键入一个测试用联系条目。当你在第一个“名字”单 元格中键入时,在联系人 I D单元格的左侧将出现一个铅笔符号,指示一个编辑正在进行之中, 并且一个新的行—在本书中叫做假设追加记录—出现在测试用联系人记录的下方 (见图2 - 1 2 )。单击假设追加记录中的任何一个单元格,保存你的输入 ; 你必须转到数据表中的另一行才 能确保所做的输入已经添加到联系人表。 5) 返回“数据库”窗口,双击打开“联系类型”表。在“联系类型”字段中,键入一个典 型的标题,例如高级管理人员。添加主管、经理和总监作为“联系类型”。单击第一个记录中 第2章 建立第一个Access 2000应用 29 下载 图2-11 在“数据库”窗口的表页显示出 Contacts.mdb的表对象的某个单元格,保存你最后的输入,然后关闭“联系类型”窗口。 图2-12 在“数据表”视图中打开的“联系人”表中添加一条测试记录 6) 使用滚动条显示“联系人”表最右边的记录。单击表中第一个记录的“联系类型” I D单 元格,在网格中显示出一个下拉列表按钮。单击该按钮,打开你在“联系类型”表中添加的各 项的一个列表 (见图2 - 1 3 )。 如果你对该界面的使用还不是很熟悉,可以参见3 . 2节“理解 A c c e s s的表显示”。 图2-13 使用“联系人”表“联系类型ID”字段的下拉查找列表 提示 “联系人”表的“联系类型I D”字段与“联系类型”表的“联系类型I D”字段是相关的, 其中包含有编号值 1 (主管)、2 (经理)、3 (总监)和任何其他你在第四步中添加的记录。表间关系 是关系型数据库管理系统 (RDBMS)的基础。“联系人”和“联系类型”表之间的关系叫做多对一 关系,因为“联系人”表中的许多记录可以和“联系类型”表中的一个记录发生关系。“联系人” 表的“联系类型I D”字段,其实包含的是编号值1或者2,叫做查找字段,因为它基于编号值在 “联系类型”表中查找数据,并用相应的文本值替代该编号。在下拉列表中选择买主,便可以把 “联系类型ID”从卖主改为买主。 除此之外,从一个查找字段插入条目也是避免拼写错误和减少重复选择时的击键次数的一 种常见方法。 使用该方法进行数据输入的其他例子,见1 0 . 3节“使用表中的查找字段”。 7) 滚动到表的第一个字段(联系人I D ),单击该字段左侧的加号 ( + ),便会打开一个子数据 表,为你的测试联系人输入显示出一个空的“通话”数据表。子数据表用于显示与当前打 30 第一部分 Access基础 下载开表有关的其他表中的记录,是 Access 2000的一个新功能。在子数据表字段中键入典型的电 话记录数据(见图2 - 1 4 )。“通话”表与“联系人”表之间存在多对一关系。 图2-14 基于“通话”表“联系人ID字段”的“子数据表”显示 8) 从“工具”菜单,选择“关系”可以以图形方式在 A c c e s s的“关系”窗口显示出“联系 类型”、“联系人”和“通话”表之间的关系。将“联系人”列表拖动到最底端显露出“联系类 型I D”字段 (见图2 - 1 5 )。 图2-15 Access的图形“关系”窗口显示出Contacts.mdb 数据库“联系类型”、 “联系人”和“通话”表之间的关系 “联系类型”和“联系人”表“联系类型I D”字段之间的连线用以表示一个多对一关系 (箭 头所指向的方向为关系中“一”的一方 )。“联系人”和“通话”表“联系人 I D”字段之间的连 线指示的也是多对一关系 (无穷大符号用以标识“多”的一方而 1代表关系中“一”的一方 )。 联系人I D这条线还指示A c c e s s将保证关系的参照完整性。参照完整性是一个高级的话题,它在 本书后面的很多章节中都有讨论。 关于关系如何帮助保护你的数据的详细信息,参见 2 2 . 9节“实施数据库完整性”。 提示 “关系”窗口中的字段名和出现在“数据表”视图中的相应表的字段是不相同的。“数据 表”视图中的字段名是大写的,为了增强可读性,其中包含了空格。而出现在“关系”窗口字 段列表中的实际字段名并没有包含空格。 9) 关闭“关系”和“联系人:表”窗口,保存布局改变。 第2章 建立第一个Access 2000应用 31 下载2.3.2 切换面板窗体 主切换面板是联系管理应用的控制窗体 (参见图2 - 1 0 )。切换面板窗体代替了传统 Wi n d o w s 应用的菜单选择,这在商业A c c e s s应用中是相当常见的。主切换面板上的五个按钮所执行的功 能如下: • 输入/查看联系人 打开联系人窗体,等价于从“视图”菜单中选择“联系人”。 • 输入/查看其他信息 用窗体切换面板页替换主切换面板。窗体切换面板有两个按钮:一 个可以打开一个小的窗体,向“联系类型”表中添加额外的记录,另一个用于返回主切 换面板。 • 预览报表 打开报表切换面板页,可以预览和打印按字母顺序排序的联系人清单报表或周 通话总计报表或返回主切换面板。预览报表等价于从“文件”菜单中选择“打印预览”。 • 更改切换面板项(Switchboard Items) 打开切换面板管理器窗体,对切换面板页进行定 制,添加一个新的切换面板页或者删除一个页。 • 退出数据库 关闭“联系人”数据库,但是不退出A c c e s s。 图2 - 1 6所示为组成联系管理应用的三个版本的切换面板和窗体以及报表上的按钮之间的关 系。为了更加清晰,该图表省略了“通话细节子窗体”、“通话列表子窗体”和“报表日期范围” 子窗体。 子窗体是包含在其他窗体之内的窗体,是A c c e s s所独有的。窗体和表之间的连线带有 双箭头表明具有显示和编辑表数据的双重能力。报表和表之间的连线只具有单箭头,因为报表 只涉及到读取表的数据。 图2-16 联系管理应用的窗体、报表、表切换面板按钮之间的关系 32 第一部分 Access基础 下载关于如何在建立一个新的子窗体时获得帮助,参见1 2 . 2节“使用窗体向导创建事务处理窗体”。 注意 图2 - 1 6所示为三个单独的切换面板窗体。联系管理应用使用Switchboard Items表的记录来 定制单个切换面板窗体以执行图表中所示的三个功能。 与菜单命令相比,切换面板提供了对用户和数据显示、输入窗体之间交互顺序的更多控制。 主切换面板的作用就相当于一个根据地,当你完成一个或者多个特定的任务后,总要返回主切 换面板。能够简化在窗体多个层面之间的切换是许多 Access 开发人员在复杂的应用中使用切 换面板的主要原因。 2.3.3 Access 窗体 如下步骤向你介绍了A c c e s s窗体和基于窗体的数据输入: 1) 关闭所有打开的 Access 窗口,只留下切换面板窗体和“数据库”窗口。 注意 如果你不小心关闭了切换面板窗体,打开“数据库”窗口,单击窗体快捷方式,双击列表 中的“Switchboard”项便可以打开主切换面板。 2) 单击“输入/查看联系人”按钮, 打开“联系人”窗体,它在文本框中 显示出你在“联系人”表中输入的第 一个记录的大部分数据 (见图 2 - 1 7 )。 在窗体中显示的记录称为表的当前 记录。 3) 单击位于窗体底部的“下一个 记录”按钮 (向右指示的三角形 ),可 显示“联系人”表中的后续记录。如 果你只向联系人表添加了一个记录, 则文本框为空,这时可以添加一个新 的记录。 4) 单击“第一个记录”按钮 (带 有指向左的三角形和一条竖线 ),返回 你键入的第一个记录。 5) 单击窗体底部的“2”按钮,它 用于显示“联系人”表的其余字段的 数据。你还可以使用窗体的滚动条来 显示其余的字段数据。单击“附注” 文本框内部,将向该文本框添加一个 滚动条 (见图2 - 1 8 )。单击“ 1”按钮, 返回窗体的顶端。 6) 连续按下Ta b键1 0次,将焦点移 到“工作电话”字段 ( Ta b键是在窗体 的字段之间移动的主要方法 )。单击 “拨号”按钮,打开U t i l i t y.mda 库的“自动拨号器”窗体 (见图2 - 1 9 )。单击“设置”按钮,打 开Windows 9x或者Windows NT“调制解调器”属性页。如果你打开了“调制解调器”属性页, 第2章 建立第一个Access 2000应用 33 下载 图2-17 “联系人”窗体的上面部分显示了 “联系人”表第一个记录的大部分信息 图2-18 单击“2”按钮后显示出来的 联系人窗体的下半部分将之关闭,然后单击“取消”,关闭“自动拨号器”窗体。 注意 “自动拨号器”使用Windows 9x 或者Windows NT 内置的“电话拨号器” 附件。“自动拨号器”检查这次通话是 否在你的本地拨号区 (由你从 “调制 解调器”属性页打开的“拨号”属性 页进行设置 )。当拨打长途电话时, “电话拨号器”将向区号和电话号码的 前面加上数字1。 7) 单击“通话”按钮, 打开“通 话”窗体,它将覆盖在“联系人”窗 体之上。“通话”窗体将只显示在“联 系人”窗体中所选择的那个联系人在 “通话”表中对应的记录,这是一种称 为同步窗体的处理过程 (见图 2 - 2 0 )。 “通话”窗体必须显示多个记录,以便 “通话”窗体使用通话表的“数据表” 视图。 8) 单击假设追加记录的“主题” 字段并输入一些文本,为你输入的 “联系人”记录添加一个新的联系人记 录。当你开始键入文本时,一个新的 假设追加记录将出现。 9) 单击“通话选择”文本框,然 后键入该通话的一个简短的抄本 (见图 2 - 2 1 )。通话选择标题和文本框被包含 在“通话细节子窗体”中。 10) 如果想删除你刚才添加的记 录,只需单击“通话日期”左侧的灰 色记录选择器,然后按下D e l e t e键即可。 你将会收到如图 2 - 2 2所示的一个警告 消息。 11) 关闭“通话”窗体,返回“联 系人”窗体。 12) 如果你想向联系人窗体添加一 个新联系人记录,则单击假设追加记 录导航按钮,打开一个窗体,在该窗 体中只有“联系人 I D”字段是被填充 的 (见图2 - 2 3 )。 13) 关闭“联系人”窗体,返回“主切换面板”。 注意 “联系人ID”字段使用“自动编号”字段数据类型,它自动地向添加的记录赋于按顺序排 34 第一部分 Access基础 下载 图2-19 从你启动Access时附加的Utility.mda函数库 数据库中打开的“自动拨号器”窗体 图2-20 “通话”窗体与“联系人”窗体的 当前记录保持同步 图2-21 向“通话”窗体添加一个新的记录列的下一个编号。如果你不在任何字段中输入任何文本,然后用导航按钮将记录指针移向一个 活动记录,则这个空记录不会被追加。 如果想删除一个记录,只需单击位于窗体的 左侧该记录的选择器栏,然后按下D e l e t e键即 可。如果你删除“联系人”表中与“通话” 表中记录有相关关系的记录,则与之相关的 通话记录也将同时被删除,这个过程称为级 联删除。相关的通话记录之所以被删除,是 因为在“通话”和“联系人”表之间存在强 制的参照完整性,而级联删除是在“关系” 窗口中关系的属性中指定的。 单击“输入/查看其他信息”按钮,重新 生成“窗体切换面板”。添加一个新的联系类 型时,单击“输入/查看联系类型”按钮,打 开简单的“联系类型”窗体。与“联系I D”相似,“联系类型I D”也是一个“自动编号”字段。 关闭“联系类型”窗体,然后单击“返回主切换面板”按钮,将“切换面板”窗体返回到初始 状态。 图2-23 用于向联系数据库添加一个新的联系人的空记录 2.3.4 Access 报表 报表是A c c e s s的最强劲的卖点之一。用程序生成复杂的和完全格式化的报表的能力使得 A c c e s s在众多的竞争者(包括M i c r o s o f t自己的 Visual Basic在内)中显得卓而不群。如果想预 览和试着打印一下联系管理应用的两个报表,可遵循如下步骤: 1) 单击“预览报表”按钮,生成“报表切换面板”,然后单击“预览按字母顺序排列的联 系人清单报表”,以1 0 0 %的尺寸在正常模式下打开“打印预览”窗口。 2) 单击“最大化”按钮,在缩放列表中键入8 5 %,便可查看几乎所有的报表 (见图2 - 2 4 )。 3) 打印该报表时,单击工具栏上的“打印”按钮。 4) 关闭“打印预览”窗口,单击“切换面板”窗体的“还原”按钮,单击“预览每周通 话摘要报表”按钮,打开“每周通话摘要”窗体。默认的报表起止日期为当前的系统日期和 前六天。 5) 在起始通话日期文本框中编辑日期,选择一个数据可用的日期。 第2章 建立第一个Access 2000应用 35 下载 图2-22 弹出的对话框为你提供了在永久地删除 一个记录之前最后一次改变想法的机会图2-24 最大化模式下缩放比例为85%时,按字母顺序排列的联系人报表的打印预览窗口 6) 单击“预览”按钮,在“打印预览”模式中打开该报表。改变缩放值为 75% ( 见 图2 - 2 5 )。 7) 如果需要,可以打印该报表的一份拷贝,然后关闭“打印预览”窗口,单击“返回主切 换面板”按钮。 图2-25 “打印预览”模式下的“每周通话摘要”报表 2.3.5 Access 模块 Access 模块包含 V B A子过程和函数,它们对于任何窗体或者报表的类模块中所包含的 V B A代码来说都是可访问的。你还可以使用 Access 宏的R u n C o d e调用模块中的 VBA 函数。 Access 2000第一个与O ff i c e应用共享一个V B A编辑器A c c e s s版本。编写 VBA 子过程和函数来 自动操作你的A c c e s s应用是第七部分“A c c e s s应用的程序设计和转换”中各章的主题。如果想 36 第一部分 Access基础 下载看和测试一个函数的简单V B A代码的例子,可以遵循如下步骤: 1) 从“窗口”菜单中,选择“1 Contacts:数据库”,打开“数据库”窗口。 2) 单击“模块”标签,然后双击列表中的“全局代码”项,在 V B A代码编辑器中打开 “全局代码”模块。“全局代码”模块包含一个单独的函数 IsLoaded (见图2 - 2 6 ),它在所指定的 窗体被打开(加载)时返回Tr u e,所指定的窗体没有打开时,则返回F a l s e。 图2-26 由“数据库向导”创建的“全局代码”模块的IsLoaded函数 3) 如想测试I s L o a d e d函数,则按下C t r l + G,打开“立即窗口”。在“立即窗口”底部的窗 格中键入 ? IsLoaded(“S w i t c h b o a r d”)。V B A调试器返回 -1 (VBA Tr u e这个内在常数的数字值), 指示“切换面板”窗体是打开的 (见图2 - 2 7 )。 图2-27 在VBA编辑器的“立即窗口”中测试“全局代码”模块的IsLoaded函数 4) 关闭“立即窗口”,按下A l t + Ta b转到A c c e s s,将“数据库”窗口最小化,返回“主切换 面板”。