豆仔玩库(23):“管家婆”特训第4课——查询初步

软件世界

  到上期为止,我们为大家介绍了家庭信息管理系统的最基础的部分。从这期开始,我们将进入实际应用部分,一步一步地为大家讲解如何建立查询。

  当我们在设计视图下建好表以后,打开Access“视图”菜单选择“数据表视图”,就可以看到表的“庐山真面目”了。如果你对Excel表的结构比较熟悉,很容易看出Access表就是去掉了行号、列标的Excel数据清单。两者在使用和功能上到底有哪些区别,必须从Access“查询”说起。

  一、查询的用途

  假如本文讲述的家庭事务管理采用了Excel,并且建立了“个人物品”和“个人收入”等工作表。一般来说,这些工作表不设置“姓名”字段是不行的,否则我们无法知道某个物品或某笔收入属于谁。因此,Excel工作表不仅存在数据冗余的缺陷,重新组织和使用工作表数据也比较麻烦。假如需要知道某个家庭成员的个人财产总值,必须从各个工作表筛选出相关数据,然后将所有数据复制到新的工作表,这样才能计算出他的财产(物品和资金)总值。

  与Excel工作表相比,Access采用了一类数据由一个表存储的办法,把有“关系”的多个表的数据组织起来使用,这种手段就叫做“查询”。这样做,一方面便于用户从不同角度查看数据,当我们改变有关系的某个表的数据以后,所建立的“查询”中的数据也会自动更新。另一方面“查询”可以作为“窗体”的数据源,用于向多个表输入数据之类的场合。为了满足用户组织数据的不同需要,Access提供了“选择查询”、“参数查询”等五种查询类型。其中“选择查询”是使用最多的查询,它可以从一个或多个有关系的表中选择满足要求的数据,并且将这些数据显示在新的查询数据表中。还可以按照一定要求对记录进行分组,或者对记录进行求和求平均值等计算。

  Access“查询”不同于我们理解的“查找”。如果通常说的“查找”是“搜索”数据的话,那么Access的“查询”则是表的“组织”或“复用”。“查询”最能体现Access作为关系数据库的特征。

  二、建立选择查询

  和表的建立一样,Access提供了“向导”和“设计视图”两种建立查询的方法。为了便于大家理解数据库中表的相互关系,认识查询字段之间是如何联系的,这里重点介绍如何利用“设计视图”建立查询。

  我们的目标是建立一个“个人财产”查询,能够逐条显示家庭成员的收入和物品价值记录,然后统计每条记录对应的财产总金额。

  1.打开数据库

  首先在Access中打开“家庭事务管理”数据库,单击数据库窗口“对象”列表中的“查询”,然后选中“在设计视图中创建查询”,单击“新建”按钮。打开“新建查询”对话框选中“设计视图”,单击“确定”按钮就可以看到如图1所示的窗口和对话框。其中“显示表”对话框有三个选项卡:“表”选项卡列出了数据库中所有的表,“查询”选项卡列出了数据库中所有的查询,“两者都有”选项卡显示数据库中所有的“表”和“查询”。

  2.选择需要的表

  假如需要将多个表内的字段添加到如图1所示查询窗口,可以选择“显示表”对话框中的“表”选项卡,按下Ctrl单击其中添加字段的表的名称,然后单击对话框中的“添加”按钮,即可将所选中的表的字段列表添加到查询窗口。而后单击对话框的“关闭”按钮,就可以在“查询窗口”中建立“查询”了。

  如图2所示查询窗口分为上下两部分,上面是放置表或查询列表的窗格,从中可以看到设计查询使用的所有数据源。下面称之为“查询设计窗格”,其中显示了查询使用的字段和条件等。

  已经放入窗口的列表如果需要删除,只须右击该表,选择快捷菜单中的“删除表”命令。需要添加新的列表时只须右击窗格上的空白处,然后选择快捷菜单中的“添加表”命令,就可以打开“显示表”对话框添加新表了。

  3.添加和删除查询的字段

  上述操作完成后就可以向查询设计窗格添加字段了。其添加方法有以下两种:

  一是单击查询设计窗格“字段”行中的某单元格,单击其右边的下拉按钮打开列表,就可以选择我们需要的字段了。如果几个列表中有相同名称的字段,Access会用“表名称.字段名称”的形式显示。

  二是使用鼠标直接拖动列表字段,如果需要将“家庭成员”中的“成员编号”放入“字段”行。只须选中“家庭成员”列表中的“成员编号”,按住鼠标将它拖到“字段”行的某个单元格即可。

  字段在“字段”行中的位置决定了它在查询数据表中的位置,用户可以根据需要决定字段的放置顺序。已经放入“字段”行单元格的字段如果需要删除,可以将该字段的字符全部选中,再按键盘上的“Delete”键即可。

  4.建立查询条件

  按照上述方法设计的查询会显示所有家庭成员的收入和物品数据,如果仅仅希望查看某个家庭成员的信息,可以设计相应的查询条件。假设某个家庭成员的“成员编号”是“2”,姓名是“李xx”。我们只须在“成员编号”列的“条件”单元格内输入“=2”,或者在“姓名”列的“条件”单元格内输入“=李xx”就可以了。

  5.利用Access的数据计算能力

  Access除了通过设置查询条件提供特定数据以外,还提供了一定的数据计算能力。如果需要在查询中计算收入金额和物品价值记录的合计金额,可以这样操作:首先在查询设计窗格中添一个字段,也就是如图3第五列第一个单元格的“财产总金额”字段。由于这个字段不在任何一个表中,必须用鼠标单击该单元格,在其中输入“财产总金额: 个人物品!物品价值+个人收入!收入金额”。上述内容除了汉字以外,其他字符必须在英文模式下输入。

  如果我们需要计算个人资产的现值,即“物品价值+收入金额-支出金额”。可以按图4方式在第一行的第五个单元格中添加“支出金额”字段,然后在“字段”行的第六个单元格输入“个人资产现值: Sum(个人收入!收入金额*个人物品!物品价值)-个人支出!支出金额”,然后打开“总计”行第六个单元格中的下拉列表,选择其中的“表达式”,就可以使用带有函数的表达式进行计算了。

  在上面的计算公式中,英文冒号“:”前面的部分是字段名,将来会显示在查询结果视图中。英文感叹号“!”前面部分是参与计算的字段所在的表的名称,后面则是计算的字段的名称。“*”则用来分隔参与计算的多个字段。按照这种格式,我们可以设计出比较复杂的计算公式。为了方便用户构建更加复杂的公式,Access提供了一个专用的“表达式生成器”。我们只须右击输入公式的单元格,选择快捷菜单中的“生成器”命令,就可以从中选择构建公式使用的符号等内容了。

  6.保存查询

  在查询设计过程中,只要我们关闭了“显示表”对话框,就可以单击Access工具栏中的“保存”按钮保存新建的查询。首次保存查询时,Access会在“另存为”对话框中询问如何命名查询。另外,如果用户没有保存查询而直接关闭查询窗口,软件会以同样方式提示保存查询。无论以上哪种情况,用户都可以输入自己的查询名称,而后保存自己的设计结果。

  除了上面这个例子以外,我们需要的其他查询都可以按照相同的方法建立。如果去除上例中的查询条件,这个查询也可以作为输入窗体的数据源。