数据库应用基础:Access 2007
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

任务7 设置查阅字段列

任务描述

默认情况下,在数据表视图内向表中输入数据时,对于大多数数据类型(如文本型、数字型、日期/时间型)的字段来说,都是使用文本框控件来输入字段值的;对于是/否型字段的值,则可通过复选框控件来设置。在实际应用中,某些字段的值可能只是一些固定的值。例如,在“学生”表中,“性别”字段的值只能是“男”或“女”;在“课程”表中的“课程类别”字段的值只能是“公共基础”或“专业技能”。如果反复输入这些值,不仅效率低,还会让操作者感到单调 味。那么,输入数据时能否让用户从列表框中选择所需要的值呢?

此外,在创建一对多关系的情况下,子表中的外键字段值必须与父表中的主键字段值相同。例如,“学生”表中的“班级”编号必须与“班级”表中的同名字段相同;“选课”表中的“学号”字段必须与“学生”表中的同名字段相同,“课程编号”字段则必须与“课程”表中的同名字段相同(允许选择多项)。在这些场合,在“学生”表中不能接受“班级”表中不存在的班级编号,在“选课”表中不能接受“学生”表中不存在的学号及“课程”表中不存在的课程编号。那么,如何保证“选课”表中的学号和课程编号与相关表中的项相同呢?

通过创建或设置查阅字段列可以解决上述问题。在“数据表”视图中,字段的输入控件可以是组合框,并从自行输入的值、另一个表或查询为该字段提供数据。在本任务中,将对“成绩管理”数据库中的“学生”表进行修改,将其中的“学号”和“性别”字段设置为查阅字段列,另外将“选课”表中的“课程编号”字段设置为允许选择多值的查阅字段列。

实现步骤

1. 设置“值列表”查阅字段列

(1)在Access 2007中,打开“成绩管理”数据库。

(2)在设计视图中打开“学生”表,选择“性别”字段,从“数据类型”单元格的下拉列表中选择“查阅向导”,如图2.45所示;在如图2.46所示的“查阅向导”对话框中,选择“自行键入所需的值”,然后单击“下一步”按钮。

图2.45 选择“查阅向导”

图2.46 设置查阅列获取数据的方式

(3)在如图2.47 所示的“查阅向导”对话框中,确定查阅列中所需列数为1 并输入“男”和“女”两个值,还可以通过拖动或双击列的右边 来调整列宽度,然后单击“下一步”按钮;在如图2.48 所示的“查阅向导”对话框中,指定查阅列的标签为“性别”,然后单击“完成”按钮。

图2.47 确定查阅列中显示的值

图2.48 确定查阅列的标签文字

(4)在设计视图中选择“性别”字段,在“字段属性”中选择“查阅”选项卡,以查看查阅字段列的属性设置情况。在这里可以看到,“显示控件”属性为“组合框”,“行来源类型”属性为“值列表”,“行来源”属性为“"男"; "女"”;为了限制添加或修改记录时该字段只能从下拉列表中选择值,将“限于列表”属性设置为“是”,如图2.49所示。

图2.49 设置查阅字段列的属性

(5)切换到“数据表”视图,单击“性别”列的单元格中的向下箭头,可从下拉列表中选择所需的值,如图2.50所示。

图2.50 测试查阅字段列

2. 设置“表/查询”查阅字段列

(1)在“设计”视图中打开“学生”表,选择“班级编号”字段,从“数据类型”单元格的下拉列表中选择“查阅向导”。

(2)在如图2.51 所示的“查阅向导”对话框中,选择“使用查阅列查阅表或查询中的值”单选按钮,然后单击“下一步”按钮。

图2.51 确定查阅列获取数据的方式

(3)在如图2.52 所示的“查阅向导”对话框中,选择“表:班级”作为查阅列的数据来源,然后单击“下一步”按钮。

图2.52 选择“表:班级”作为查阅列的数据来源

(4)在如图2.53 所示的“查阅向导”对话框中,在“可用字段”列表框中单击“班级编号”,单击按钮,将该字段添加到“选定字段”列表框中,然后单击“下一步”按钮。

图2.53 确定查阅列中包含的字段值

(5)在如图2.54 所示的“查阅向导”对话框中,可为列表框中的项设置使用的排序次序,在这里不设置排序次序,直接单击“下一步”按钮。

图2.54 确定列表框中的项使用的排序次序

(6)在如图2.55 所示的“查阅向导”对话框中,通过拖动或双击列的右边 来调整列宽度,然后单击“下一步”按钮;在如图2.56 所示的“查阅向导”对话框中,将查阅列的标签指定为“班级编号”,然后单击“完成”按钮。

图2.55 调整列的宽度

图2.56 指定查阅列的标签

(7)当弹出如图2.57 所示的“查阅向导”对话框时,单击“是”按钮,以保存对表所做的修改,同时在“班级”表与“学生”表之间建立一对多关系。

图2.57 保存表并在表之间建立关系

(8)在“设计”视图中选择“班级编号”字段,在“字段属性”的“查阅”选项卡中查看查阅字段列的属性设置。在这里可以看到,“显示控件”属性为“组合框”,“行来源类型”属性为“表/查询”,“行来源”属性为“SELECT [班级].[班级编号] FROM班级;(这是一个查询语句,其作用是从“班级”表中查询并返回“班级编号”字段的值)”;为了限制在“学生”表中添加或修改记录时“班级编号”字段只能从下拉列表中选择值,这里将“限于列表”属性设置为“是”,如图2.58所示。

图2.58 查阅字段列的属性设置

(9)切换到“数据表”视图,单击“班级编号”列单元格中右侧向下箭头,可从下拉列表中选择所需的值,如图2.59所示。

图2.59 在“数据表”视图中测试查阅字段列

3. 设置可包含多值的查阅字段列

(1)在“设计”视图中打开“选课”表,选择“课程编号”字段,并从“数据类型”单元格的下拉列表中选择“查阅向导”。

(2)在图2.60所示的界面中选择“使用查阅列查阅表或查询中的值”,然后单击“下一步”按钮;在图2.61中的选择“表:课程”作为查阅列的数据来源,然后单击“下一步”按钮。

图2.60 设置查阅列获取数据的方式

图2.61 设置查阅列的数据来源

(3)在图2.62 所示的界面中选择“课程编号”和“课程名称”字段包含在查阅列中,然后单击“下一步”按钮;在图2.63 中可设置列表项的排序次序,在此直接单击“下一步”按钮。

图2.62 设置为查阅列提供数据的字段

图2.63 设置列表项的排序次序

(4)在图2.64 所示的界面中选取“隐藏键列”复选框并调整列宽,然后单击“下一步”按钮;在图2.65中选择“课程编号”字段作为可用字段,然后单击“下一步”按钮。

图2.64 隐藏键列并调整列宽

图2.65 设置在数据库存储其值的字段

(5)在图2.66 所示的界面中将查阅标签设置为“课程编号”,并选中“允许多值”复选框,然后单击“完成”按钮;当弹出如图2.67 所示的对话框时,单击“是”按钮,保存表并在相关表之间建立关系。

图2.66 指定查阅列标签并允许多值

图2.67 保存表并建立关系

(6)选择“课程编号”字段,在“字段属性”中选择“查阅”选项卡,对“行来源”属性进行修改,即在“查阅向导”中设置的属性值后面添加“WHERE (((课程.课程性质)="选修"))”,以限制列表框中只显示选修课程,如图2.68所示。

图2.68 更改“行来源”属性

(7)切换到“数据表”视图,向“课程”表中添加新记录。在“课程”字段所在单元格中单击向下箭头,此时弹出的列表框中每个课程名称前面都有一个复选框,要选择多门课程,可选中相关的复选框并单击“确定”按钮,如图2.69所示。

图2.69 测试多值字段

知识与技能

查阅字段,也称为查阅列。查阅字段是表中的字段,其中的值是从另一个表或值列表中检索而来的。使用查阅字段,可以显示组合框或列表框中的选项。选项可以来自表或查询,也可以是用户自己提供的值。既可以通过查阅向导自动创建查阅列,也可以通过设置字段的“查阅”字段属性手动创建查阅列。如果可能,应该使用查阅向导创建查阅列。查阅向导可简化创建过程,如自动填写字段属性并创建适当的表关系等。通过使用查阅字段,可以使用列表框(或组合框)从另一个表(或值列表)中选择一个值,不仅提高了数据输入的效率,还能够避免输入无效的数据。创建查阅字段时,可以使用查阅向导或手工方式设置以下属性。

1. 显示控件

“显示控件”属性用于指定在数据表视图中使用什么类型的控件来显示字段。在设计视图中,可以选择“查阅”选项卡,然后设置字段的“显示控件”属性。对于文本型或数字型的字段,该属性可以设置为“文本框”、“列表框”或“组合框”;对于是/否型的字段,该属性可以设为“复选框”、“文本框”或“组合框”。

2. 行来源类型

将“行来源类型”属性和“行来源”属性一起使用,可以告知Access如何为列表框或组合框控件提供数据。在“行来源类型”属性中可使用以下3种设置。

(1)表/查询:其数据来自“行来源”属性指定的表、查询或SQL语句。这是默认值。例如,“学生”表中的“系别”和“班级编号”字段,以及“选课表”中的“学号”和“课程编号”字段,都属于这种情况。

(2)值列表:其数据是由“行来源”属性指定的项所组成的列表。例如,“班级表”中的“系别”和“专业”字段,以及“学生”表中的“性别”字段,都属于这种情况。

(3)字段列表:其数据是由“行来源”属性设置指定的表、查询或者SQL语句中的字段名所组成的列表。

3. 行来源

“行来源”属性与“行来源类型”属性一起使用,可以告知Microsoft Access如何为列表框或组合框提供数据。其中,“行来源”属性设置取决于“行来源类型”属性的设置。

(1)若要在一个列表框中显示“男”或“女”两项,可将“行来源类型”属性设置为“值列表”,并将“行来源”属性设置为一个字符串,其内容为“"男";"女"”,即用双引号括起每个项,用分号隔开两个不同的项。

(2)若要在一个列表框中显示“课程”表中的“课程编号”和“课程名称”数据,可将列表框的“行来源类型”属性设置为“表/查询”,并将“行来源”属性设置为以下查询语句。

          SELECT课程.课程编号,课程.课程名称FROM课程
          WHERE(((课程.课程性质)="选修"))ORDER BY课程.[课程编号];

这是一个SQL SELECT查询语句,用于从“课程”表获取所有课程的编号和名称,并按课程编号升序排序。这个SELECT语句由4 个子句组成:SELECT子句用于指定要在查询中选择哪些字段,字段可用“表名.字段名”形式表示,字段之间用逗号分隔;FROM子句用于指定从哪个表或查询中获取数据;WHERE子句用于指定如何对查询返回的记录进行筛选,只有符合筛选条件的记录才会包含在查询结果中;ORDER BY子句用于指定按照哪个字段对查询结果进行排序及如何排序。

此外,如果要消除查询结果中的重复记录,则需要使用DISTINCT关键字。关于SELECT语句的详细信息,请参阅本书第3章。

4. 绑定列

从列表框或组合框中进行选择时,“绑定列”属性用于确定Access把哪一列的值用做控件的值。“绑定列”属性的默认值为1,即指定第一个字段的值作为控件的值。

组合框中最左边可见的列包含组合框的文本框部分所显示的数据。在进行选择时,“绑定列”属性用于确定将存储文本框或组合框的列表中哪一列的值,这样可以显示不同于保存为控件值的数据。在输入数据时,Access将自动在组合框的文本框部分填写一个与组合框列表中的值相匹配的值。

5. 列数、列宽、列表行数和列表宽度

(1)“列数”属性用于指定列表框或组合框中所显示的列数。如果在显示学号时提供学生姓名作为参考,显示课程编号时提供课程名称作为参考,则都需要将“列数”属性设置为2。

(2)“列宽”属性用于指定多列组合框或列表框中每列的宽度。其列宽之间以半角分号分隔。例如,“1.5cm;0;2.5cm”表示第一列宽为1.5cm,第二列隐藏,第三列宽为2.5cm。“2cm;;2cm”表示第一列宽为2cm,第二列宽使用默认值,第三列宽为2cm。若将“列宽”属性留空,则3列的宽度相同。

(3)“列表行数”属性用于设置组合框中下拉列表部分所能显示的最大行数,默认值为16。

(4)“列表宽度”属性用于设置组合框中下拉列表部分的宽度。如果要显示多列,可输入使列表足够宽的值,以显示所有的列。

6. 限于列表

“限于列表”属性可以将组合框值限制为列表项。若将该属性设置为“是”,则当用户在组合框的列表中选择了某个项,或输入了与列表项相匹配的文本,Access都将接受。当输入的文本不在列表项中时,将不接受该文本,用户必须重新输入(或选择列表项、按“Esc”键、在“编辑”菜单中选择“撤销”命令)。若该属性设置为“否”,则Access将接受任何符合“验证规则”属性的文本。

7. 允许多值

“允许多值”属性确定是否允许选择多个项目。若将该属性设置为“是”,则在数据表视图中输入数据时,查阅字段组合框的下拉列表中每个选项前面包含一个复选框,底部包含一个“确定”按钮和一个“取消”按钮,允许用户从列表中选择多个值。这样的查阅字段称为多值字段(注意,多值字段是Access 2007的新增功能之一)。在某些场合,如在选课时每个学生都可以从选修课中选择多门课程;或者有一项任务要分配给员工或承包商,但需要将它分配给多个人员等,此时都可以创建一个多值字段,以便从列表框中选择多项。在本任务中,设置的多值字段的值是基于查询的(除此以外,该值也可以是基于值列表的)。