实现数据库查询 2001年 7期 小欣总算是把准备工作做完了,现在她开始学习怎样使用了。   “查询是一种检索数据库表中信息的工具,数据库的最大使用价值也就在于此,它是根据给定的条件从数据库的表(一个或者是多个表)中筛选出符合条件的记录,构成一个新的数据集合。最方便的是,你可以把建立好的查询看作一个简化了的数据表,直接由它构成窗体和报表的数据来源,也可以用它再次构成其他的查询。”阿月总是从最基本的说起。   “Access中,有关查询的操作实际上都是通过查询对象来实现的,它负责管理查询的制作,实现数据查询,并将符合查询条件的记录显示出来,提供给用户使用,对于普通用户来讲,并不需要知道它是怎样工作的,而仅仅只需要知道怎样使用就可以了。”阿月又说道。   “照你这样说来,我可以直接把查询的结果作为报表,或者是窗体显示了,那么,Access中又有哪些查询?它们又是怎样实现的?”小欣好奇地问。   阿月逐一讲解起来。   一、 选择查询实现   这是一种最常用的查询,它可以从一个或者多个表中选择符合条件的记录,来看看要查找设备明细表中所有1997年1月1日前购进的办公设备的操作是怎样完成的吧!   使用查询向导可以比较轻松地实现选择查询!   1. 在^07060101b^1-2(上一篇)所示的窗口中首先在“对象”列表选择“查询”,然后再选择“使用向导创建查询”并单击“新建”按钮。   2. 在弹出的“新建查询”对话框中选择“简单查询向导”并确定,如^07060102a^2-1所示。   3. 在“简单查询向导”对话框中选择想在查询中出现字段所在的表,这里为设备明细表;在“可用字段”列表中选择要使用的字段,并将它们加入到“选定的字段”表中去,这里需要的字段有:设备编号、设备名称、设备型号、设备数量、购置日期以及使用情况和使用部门。   4. 单击“下一步”按钮后,在接下来的对话框中选择“明细”按钮,再进入下一步。   5. 输入查询名称为“1997年前购进设备查询”,并选择“修改查询设计”。将进入如^07060102b^2-2所示的窗口。   6. 在“准则”一行,购进日期正下方的空格内输入“<=97-01-01”,然后直接点击“查询”菜单中的“运行”或者点击工具栏上的运行按钮,则立刻可以看到查询结果。   “照你的方法看来,实现对满足条件记录的筛选好像不算难,但是我请问一下,如果我要想实现对我办公室设备的现有状况进行查询,又怎样实现了?比如,我想看看各种设备的总数量以及各个年度的购置情况又怎么办呢?”小欣结合工作实际问道。   “这个啊,它可以使用Access提供的另外一种查询──交叉查询来实现。”阿月继续讲解。   二、交叉查询实现   交叉表是一种常用的汇总表,它可以利用表格的行标题和列标题以及交叉点信息来显示来自多个表的数据,比如显示来源于表中某个字段的合计、平均值、计数等等。它还可以按照用户的要求将字段进行分组,一组列在数据表的左侧,一组列在数据表的上部,所以它被很形象地称为“交叉查询”,光说不做你还是不很明白,看看怎样做的才是关键!   1.和前面的选择查询前两步一样,只是这里在“新建查询”对话框中选择“交叉表查询向导”并确定。   2. 在弹出的对话框(如^07060102c^2-3所示),单击“表”单选钮,并选择所需的表──设备明细表,进入下一步。   3. 在新弹出的对话框中,选择合适的字段作为行标题,比如,我们这里可以选择“设备名称”作为行标题,如^07060102d^2-4所示。进入下一步后,选择需要查看的字段──购置日期作为列标题后进入下一步。   4. 在如^07060102e^2-5所示的对话框中,选择按年来划分,这样就只显示各年度各种设备的购置情况(在数据库中保存的是购置设备的具体年月日)。进入下一步后将出现如^07060102f^2-6所示的对话框。   5.由于我们需要统计各种设备总数,因此,在这里需要对“设备数量”字段进行统计。选择“字段”为“设备数量”,选择“函数”为“求和”,进入下一步。   6. 在弹出对话框中输入查询名称为“设备购置情况查询”,选择“查看查询”单选钮,完成后可以直接看到查询结果,也可以选择“修改设计”单选钮后,再运行,同样可以看到查询结果,如^07060102g^2-7所示。   Access的一大特点就是还可以使用向导建立不很复杂的查询,实际上,如果熟练掌握上述方法也能完成常见的查询。向导使用简单,但功能有一定的局限性,如果使用向导建立的查询不能满足实际需要,就只有使用人工的方法来创建查询了。小欣在前面看到图2-2所示界面实际上就已经是查询设计图了。(^07060102h^2-8)   这时,你需要借助Access中规定的各种数学运算符、内部计算函数、关系运算符、逻辑运算符以及特殊运算符,在指定位置输入查询要求,就可以实现相对复杂的查询了!   “其实这些对于有点数据库基础的人,比如学过FOXPRO的人来说,并不是太难!至于你嘛?我就不好说了!”阿月说道。   “那怎么办啊?”小欣赶忙问道。   “如果你需要完成比较复杂的查询或为了尽可能避免出错时,你可以把查询分成若干步骤,在一个查询的基础上再作进一步查询,这样事情就简单多了。你看了下面这个例子你就明白了……”阿月发现不给小欣说明白是不可能走得掉的了。   三、计算查询的实现   现在,我们想要利用查询实现计算各设备资产总额以及每年度用于购置各种设备的资金使用情况。由于设备明细表中的每一个记录只是每一次购置设备的原始记录,比如:1999年6月1日购进PⅡ计算机10台,每台价格5500元,在这里只保存了购置设备的单价,如果我们要想统计出各设备资产总额的话,首先必须计算出每一次购置设备的资产总额。实现方法如下:   1. 在上一篇文章的^07060101b^1-2所示的窗口中首先在“对象”列表选择“查询”,然后选择“在设计视图中创建查询”并按“新建”按钮,在弹出的对话框中选择“设计视图”后确定,将同时弹出“查询”和“显示表”两个对话框,如^07060102i^2-9所示。   2. 选择需要使用的设备明细表,添加后,关闭“显示表”对话框。   3. 在表设计视图中,将需要的字段:设备编号、设备名称、设备数量、设备价格以及购置日期直接拖到字段行中。   4. 鼠标点击最后一个字段的空白列,或者在适当位置,单击“插入”菜单中的“列”命令,加入一列,并在该列中输入字段名称“设备总额”。   5. 点击工具栏上的生成器按钮,在弹出的表达式对话框中输入“设备总额:[设备价格]*[设备数量]”(如^07060102j^2-10所示)。   6. 单击“运行”按钮后,在显示的查询结果中可以看到,系统已经自动增加了“设备总额”这一列,并将每一次购买设备的资产总额计算出来了,如^07060102k^2-11所示。   7. 关闭该查询结果并将其命名为“设备购置总额查询”。   这样,我们就完成了第一步查询,现在我们在这个查询的基础上,对所有的记录进行分类,计算出每一类设备总额,具体实现方法如下:   1.和前面交叉查询实现方法的第一、二步一样,只不过这里单击“查询”单选钮,并选择我们刚才建立的“设备购置总额查询”,进入下一步。   2. 在新弹出的对话框中,选择设备名称作为行标题,进入下一步,选择购置日期作为列字段,这样我们就可以看到每年购买某种设备的资金耗费情况了。   3.仍然选择按年的时间间隔来划分,进入下一步后,选择“字段”为“设备总额”,选择“函数”为“求和”,输入查询名称为“设备资产分布查询”,就可以完成该查询了,该查询窗口的结构如^07060102l^2-12所示。   “现在你看到了吧!”阿月摇头晃脑地似乎还有很多没有说完似的。“其实,刚才的这个查询如果自己设计的话也并不是太复杂。最开始时可以使用向导,但平时多学习,多尝试自己设计查询,多积累才能真正掌握它!”