43实用选择查询设计 选择査询是 Access支持的多种类型查询对象 中最重要的一种,它不仅仅可以完成数据的 筛选、排序等操作,更常见的用途还在于它 的计算功能、汇总统计功能以及接受外部参 数的功能。同时,选择查询还是其他类型查 询创建的基础。在后续各节中我们会看到 为了创建其他类型的查询,常常会先建立 个选择查询,然后再逐步进行设计修改,以 达到实现相关类型查询的设计结果
4.3 实用选择查询设计 选择查询是Access支持的多种类型查询对象 中最重要的一种,它不仅仅可以完成数据的 筛选、排序等操作,更常见的用途还在于它 的计算功能、汇总统计功能以及接受外部参 数的功能。同时,选择查询还是其他类型查 询创建的基础。在后续各节中我们会看到, 为了创建其他类型的查询,常常会先建立一 个选择查询,然后再逐步进行设计修改,以 达到实现相关类型查询的设计结果
Q4.3实用选择查询设计 4.31、计算查询列设计 4.3.2、汇总查询设计 4.3.3、参数查询对象设计 0“器售商店管理信息系统” 中的汇总查询设计
4.3 实用选择查询设计 4.3.1、计算查询列设计 4.3.2、汇总查询设计 4.3.3、参数查询对象设计 “零售商店管理信息系统” 中的汇总查询设计
Q4.3.1计算查询列设计 通过查询操作完成基表内部或各基表之间数 据的计算,是建立查询对象的一个常用的功 能。完成计算操作是通过在查询对象中设计 计算査询列实现的,当查询运行时,计算查 询列就如同一个字段一样。计算查询列本质 上是一个计算表达式,设置计算查询列的操 作可以借助于向导在“表达式生成器”对话 框中完成。令光标停留在需要设置计算查询 列的“字段”行上,单击查询设计视图工具 栏上的“向导”工具按钮“”,即弹出“表 达式生成器”对话框,如图4-10所示。与设 定查询准则的逻辑表达式不同,计算查询列 上是一个计算表达式心
通过查询操作完成基表内部或各基表之间数 据的计算,是建立查询对象的一个常用的功 能。完成计算操作是通过在查询对象中设计 计算查询列实现的,当查询运行时,计算查 询列就如同一个字段一样。计算查询列本质 上是一个计算表达式,设置计算查询列的操 作可以借助于向导在“表达式生成器”对话 框中完成。令光标停留在需要设置计算查询 列的“字段”行上,单击查询设计视图工具 栏上的“向导”工具按钮“”,即弹出“表 达式生成器”对话框,如图4-10所示。与设 定查询准则的逻辑表达式不同,计算查询列 上是一个计算表达式。 4.3.1 计算查询列设计
图4-8中所示的“销售利润”列就是一个计 算查询列,在这一列的“字段”行中填入的内容 为 销售利润:[销售单价]销售数量]-[进货单 价]*销售数量] 这个计算表达式分为用冒号隔开的两个部 分。冒号右边是一个VBA算术表达式,它的含 义是用本查询中的“销售单价”与“销售数量” 两个字段的数据之积,减去本查询中的“进货单 价”与“销售数量”两个字段的数据之积。字段 名均用方括号括起来,这属于VBA的语法规则 必须遵循。由于所用字段都是本查询中的字段, 因此不用指明其父类,否则,需写成:[表名]! 「字段名]。所用到的算术运算符与其他程序设计 语言使用的算术运算个
图4-8中所示的“销售利润”列就是一个计 算查询列,在这一列的“字段”行中填入的内容 为: 销售利润: [销售单价]*[销售数量]-[进货单 价]*[销售数量] 这个计算表达式分为用冒号隔开的两个部 分。冒号右边是一个VBA算术表达式,它的含 义是用本查询中的“销售单价”与“销售数量” 两个字段的数据之积,减去本查询中的“进货单 价”与“销售数量”两个字段的数据之积。字段 名均用方括号括起来,这属于VBA的语法规则, 必须遵循。由于所用字段都是本查询中的字段, 因此不用指明其父类,否则,需写成:[表名]! [字段名]。所用到的算术运算符与其他程序设计 语言使用的算术运算符相同
冒号左边将等同于字段名,本例中设定为 销售利润”。如果使用向导,在“表达式生成 器”对话框中完成计算表达式的设计,Aces将 用“表达式1”作为第一个计算查询列的字段名 并依次为后续的计算查询列命名字段。 般情况下,人们都不会满意将字段名命 名为“表达式1”这样的形式。这就需要自己来 重新给字段命名。为此,可以在“表达式生成器 对话框中完成计算表达式的设计后,单击确定按 钮退回查询设计视图后,再将“表达式生成器” 自行确定的“表达式1”修改为“销售利润” 其操作方法是,鼠标单击字段行中的“表达式 ”,再删除该字段行中位于计算表达式冒号左 侧的字符,并输入所希望的字符串
冒号左边将等同于字段名,本例中设定为 “销售利润”。如果使用向导,在“表达式生成 器”对话框中完成计算表达式的设计,Access将 用“表达式1”作为第一个计算查询列的字段名, 并依次为后续的计算查询列命名字段。 一般情况下,人们都不会满意将字段名命 名为“表达式1”这样的形式。这就需要自己来 重新给字段命名。为此,可以在“表达式生成器” 对话框中完成计算表达式的设计后,单击确定按 钮退回查询设计视图后,再将“表达式生成器” 自行确定的“表达式1”修改为“销售利润” 。 其操作方法是,鼠标单击字段行中的“表达式 1”,再删除该字段行中位于计算表达式冒号左 侧的字符,并输入所希望的字符串
还可以设计计算查询列中数据的显示格式。 其操作方法是,在需要重新设置显示格式的计算 查询列“字段”行处右击鼠标,在随之弹出的快 捷菜单上单击【属性】;或令光标停留在需要设 置显示格式的计算査询列“字段”行上,在査询 设计视图的菜单栏上单击【视图】【属性】 (或单击查询设计视图工具栏上“属性”工具按 钮“”)。即弹出“字段属性”对话框,如图4 12所示。 在“字段属性”对话框中,即可为所选字 段设置包括显示格式在内的各项字段属性。图4 12所示,是将“销售数据记录查询”的“销售利 润”计算查询列的显示格式设置为货币格式的参 数设置操作示例
还可以设计计算查询列中数据的显示格式。 其操作方法是,在需要重新设置显示格式的计算 查询列“字段”行处右击鼠标,在随之弹出的快 捷菜单上单击【属性】;或令光标停留在需要设 置显示格式的计算查询列“字段”行上,在查询 设计视图的菜单栏上单击【视图】|【属性】 (或单击查询设计视图工具栏上“属性”工具按 钮“”)。即弹出“字段属性”对话框,如图4- 12所示。 在“字段属性”对话框中,即可为所选字 段设置包括显示格式在内的各项字段属性。图4- 12所示,是将“销售数据记录查询”的“销售利 润”计算查询列的显示格式设置为货币格式的参 数设置操作示例
Q4.3.2汇总查询设计 设计汇总查询也是在查询设计视图中 进行。在查询设计视图打开一个已经建 立的选择查询对象,在工具栏上单击 “汇总”按钮“”。这时,在查询设计 视图下部的参数设置区中将增加一个名 为“总计”的行,其间参数均为“ Group B 总计”行中的参数标明各字段是 属于分类字段( Group by)还是汇总字 段( Expression), 汇总查询至少应 有一个分类字段和一个汇总字段
设计汇总查询也是在查询设计视图中 进行。在查询设计视图打开一个已经建 立的选择查询对象,在工具栏上单击 “汇总”按钮“”。这时,在查询设计 视图下部的参数设置区中将增加一个名 为“总计”的行,其间参数均为“Group By”。 “总计”行中的参数标明各字段是 属于分类字段(Group By)还是汇总字 段(Expression),一个汇总查询至少应 有一个分类字段和一个汇总字段。 4.3.2 汇总查询设计
以“销售业绩查询”为例,如果希望得到 以“货名”、“规格”、“进货单价”和“销 售单价”三个字段作为分类字段的“销售数量” 和“销售利润”两个字段的汇总数据,则应将 “货名”、“规格”、“进货单价”和“销售 单价”四个字段均设置为分类字段,而将“销 售数量”和“销售利润”两个字段都设置为汇 总数据。图4-13所示即为相关设计参数。三个 分类字段可以采用41.1讲述的设定字段名的方 法设定,且“总计”行参数不用修改。两个汇 总字段可采用4.31节讲述的设定计算字段的方 法设定,且“总计”行参数会自动根据所设立 的计算表达式而改为 ssion o
以“销售业绩查询”为例,如果希望得到 以“货名” 、 “规格” 、 “进货单价”和“销 售单价”三个字段作为分类字段的“销售数量” 和“销售利润”两个字段的汇总数据,则应将 “货名” 、 “规格” 、 “进货单价”和“销售 单价”四个字段均设置为分类字段,而将“销 售数量”和“销售利润”两个字段都设置为汇 总数据。图4-13所示即为相关设计参数。三个 分类字段可以采用4.1.1讲述的设定字段名的方 法设定,且“总计”行参数不用修改。两个汇 总字段可采用4.3.1节讲述的设定计算字段的方 法设定,且“总计”行参数会自动根据所设立 的计算表达式而改为“Sum”或“Expression
图4-13“销售利润明细查询”的总计属性设计 白销售利润明细查询:选择查询 包回囟 库存数据 销售数据 号 销售序号 货名 货号 规格 货名 计量单位 规格 宇段:货号货名进货单价销售单价销售数量之总计:销售数量销售利润:Sⅷ(销售数 表:销售数挺。销售数排库存数据销售数据销售数据记录 总计:份组 分组 分组 分組 表达式 排序 显示 十十回 条件 或
图4-13 “销售利润明细查询”的总计属性设计
图4-13所示查询对象所对应的SQL语句为: SELECT库存数据记录货名,库存数据记录规格 库存数据记录进货单价, 销售数据记录销售单价, Sum(销售数据记录][销售数量])AS销售数量, [销售单价]*[销售数量]-[进货单价]*[销售数量] AS销售利润 FROM库存数据记录 INNER JOIN销售数据记录 ON库存数据记录货号=销售数据记录货号 GROUP BY库存数据记录货名,库存数据记录规 格,库存数据记录进货单价,销售数据记录销售 单价;
图4-13所示查询对象所对应的SQL语句为: SELECT 库存数据记录.货名, 库存数据记录.规格, 库存数据记录.进货单价, 销售数据记录.销售单价, Sum([销售数据记录]![销售数量]) AS 销售数量, [销售单价]*[销售数量]-[进货单价]*[销售数量] AS 销售利润 FROM 库存数据记录 INNER JOIN 销售数据记录 ON 库存数据记录.货号 = 销售数据记录.货号 GROUP BY 库存数据记录.货名, 库存数据记录.规 格, 库存数据记录.进货单价, 销售数据记录.销售 单价;