你可以使用表达式来对数据执行各种操作。 例如,确定订单发货后过去的天数,或者将 FirstName 和 LastName 组合为 FullName。 以下各节介绍如何分步创建表达式。
本文内容
计算窗体和报表中控件的值
使用表达式作为控件的数据源时,您所创建的控件就是计算控件。 例如,假定您有一个报表显示了多个库存记录,您要在报表页脚中创建一个总计来对报表上的所有行项目求和。
若要计算总计,请在报表页脚中放置一个文本框控件,然后将该文本框的 ControlSource 属性设置为以下表达式:
=Sum([table_field])
在本例中,table_field 是包含小计值的字段的名称。 该字段可以来自表或查询。 Sum 函数计算所有 table_field 值的总和。
过程
-
在导航窗格中,右键单击要更改的窗体,然后单击快捷菜单上的“布局视图”或“设计视图”。
-
选择要向其中输入表达式的控件。
-
如果尚未显示属性表,请按 F4 显示该表。
-
若要手动创建表达式,请在属性表中的“数据”选项卡上,单击文本框的“控件来源”属性,然后键入 =,后跟表达式的其余部分。 例如,若要计算如上所示的小计,请键入 =Sum([table_field]),务必以字段的名称替换 table_field。
-
若要 使用表达式生成器创建表达式,请单击属性框中的“ 生成 ”按钮 。
完成表达式后,属性表将与下图类似:
使用表达式作为查询条件
在查询中使用条件,以缩小查询结果。 如果输入一个条件作为表达式,Access 就只返回与表达式匹配的那些行。
例如,假设要查看发货日期在 2017 年前三个月的所有订单。 若要输入条件,请在查询中的“日期/时间”列的“条件”单元格中键入以下表达式。 本示例使用名为 ShippedDate 的“日期/时间”列。 若要定义日期范围,请按以下方式输入条件:
Between #1/1/2017# And #3/31/2017#
ShippedDate 列将与下图类似。
对于 Orders 表中的每个记录,如果 ShippedDate 列中的值在你指定的日期范围内,则查询输出中将包括该记录。 请注意,在表达式中用井号 (#) 将日期括起来。 Access 将井号内的值视为“日期/时间”数据类型。 通过将这些值视为日期/时间数据,可以对它们执行计算,例如从一个日期减去另一个日期。
过程
-
在导航窗格中,右键单击要更改的查询,然后单击快捷菜单上的“设计视图”。
-
在要输入条件的列的“条件”单元格中单击。
-
若要手动创建表达式,请键入条件表达式。 不要在条件表达式的前面加上 = 运算符。
-
若要使用表达式生成器创建表达式,请在功能区上单击“设计”,然后在“查询设置”组中,单击“生成器”。
若要在较大的区域中编辑表达式,请将光标放在“条件”单元格中,然后按 Shift+F2 来显示“缩放”框:
提示 若要让文本更易于阅读,请选择“字体”。
在查询中创建计算字段
假设您正在设计一个查询,希望显示使用查询中其他字段的计算的结果。 若要创建计算字段,请在查询的“字段”行的空白单元格中输入表达式。 例如,如果您的查询包含“数量”字段和“单价”字段,可以通过在查询的“字段”行中输入以下表达式将两个字段相乘来创建计算字段“总价”:
Extended Price: [Quantity] * [Unit Price]
使表达式以文本 Extended Price: 开头可将新列命名为 Extended Price。 此名称通常被称为别名。 如果未提供别名,Access 会创建一个,例如 Expr1.
在运行查询时,Access 会对每行执行计算,如下图所示:
过程
-
在导航窗格中,右键单击要更改的查询,然后单击快捷菜单上的“设计视图”。
-
单击要在其中创建计算字段的列中的“字段”单元格。
-
若要手动创建表达式,请键入表达式。
请不要在条件表达式前面加上 = 运算符,而要使表达式以描述性标签开头,后跟一个冒号。 例如,键入 Extended Price: 会为创建名为 Extended Price 的计算字段的表达式提供标签。 然后,在冒号后面为表达式输入条件。
-
若要使用表达式生成器创建表达式,请在功能区上单击“设计”,然后在“查询设置”组中,单击“生成器”。
在表中创建计算字段
在 Access 中,可以在表中创建计算字段。 无需再使用单独的查询来进行计算。 例如,如果你的表列出了订单中每种商品的数量、价格和税率,则可以添加显示总价格的计算字段,例如:
[Quantity]*([UnitPrice]+([UnitPrice]*[TaxRate]))
此计算不包括其他表或查询中的字段,且计算结果是只读的。
过程
-
通过在导航窗格中双击表来打开它。
-
水平滚动到表中最右边的一列,然后单击“单击以添加”列标题。
-
在出现的列表中,单击“计算字段”,然后单击结果所需的数据类型。 Access 会显示表达式生成器。
-
键入此字段所需的计算,例如:
[Quantity] * [Unit Price]
对于计算字段,表达式不要以等号 (=) 开始。
-
单击“确定”。
Access 会添加计算字段,然后突出显示字段标题,以便您可以键入字段名称。
-
为计算字段键入名称,然后按 Enter。
为表字段设置默认值
您可以使用表达式为表中的字段指定默认值,除非提供另一个值,否则 Access 将该值用于新记录。 例如,假定您希望在任何人添加新记录时自动将日期和时间插入到名为“订单日期”的字段中。 为此,您可以使用下面的表达式:
Now()
过程
-
在导航窗格中,双击要更改的表。
Access 将在数据表视图中打开该表。
-
选择要更改的字段。
-
在功能区上,单击“ 表字段”,在 “属性” 组中,单击“ 默认值”。 Access 会显示表达式生成器。
-
在框中键入表达式,确保表达式以等号 (=) 开头。
注意 如果将控件绑定到表字段,并且控件和表字段都具有默认值,则控件的默认值优先于表字段的默认值。
为控件设置默认值
使用表达式的另一个常见位置是控件的“默认值”属性。 控件的“默认值”属性的行为与表中字段的“默认值”属性的行为类似。 例如,若要将当前日期用作文本框的默认值,可以使用下面的表达式:
Date()
此表达式使用 Date 函数返回当前日期,而不是时间。 如果将文本框绑定到了表字段,并且该字段具有默认值,则控件的默认值优先于表字段的默认值。 通常最好为表中字段设置“默认值”属性。 这样,如果您使几个来自不同窗体的控件基于相同的表字段,则会对每个控件应用相同的默认值,从而帮助确保每个窗体上的数据输入一致。
过程
-
在导航窗格中,右键单击要更改的窗体或报表,然后单击快捷菜单上的“设计视图”或“布局视图”。
-
选择要更改的控件。
-
如果尚未显示属性表,请按 F4 显示该表。
-
单击属性表上的“全部”选项卡,然后单击“默认值”属性框。
-
键入表达式,或单击属性框中的“ 生成 ”按钮 , 使用表达式生成器创建表达式。
向表字段或记录添加验证规则
表达式非常适用于在向数据库中输入数据时对数据进行验证,可以防止错误数据进入。 在表中,有两种类型的验证规则:字段验证规则和记录验证规则,前者可防止用户在单个字段中输入错误数据,后者可防止用户创建不符合验证规则的记录。 您使用这两种验证规则的表达式。
例如,假定你有一个名为 Inventory 的表,其中包含一个名为 Units On Hand 的字段,而且你希望设置一个规则来强制用户输入大于或等于零的值。 换句话说,库存决不可为负数。 你可以在 Units On Hand 字段中使用以下表达式作为字段验证规则来实现此目的:
>=0
过程:输入字段或记录验证规则
-
在导航窗格中,双击要更改的表。 Access 将在数据表视图中打开该表。
-
对于字段验证规则,选择要更改的字段。
-
在功能区上,单击“ 表字段”,然后在“ 字段验证 ”组中单击“ 验证”,然后单击“ 字段验证规则 ”或“ 验证规则”。 Access 会显示表达式生成器。
-
开始键入所需条件。 例如,对于要求所有值都大于或等于零的字段验证规则,请键入以下命令:
>=0
不要在表达式前面加上等号 (=)。
验证规则表达式是布尔表达式,这意味着任何给定的输入值均为 True 或 False。 该值的验证规则必须为 True,否则 Access 不会保存输入和显示指示错误的验证消息。 在本示例中,如果你为 Units On Hand 字段输入小于零的值,则验证规则为 False,Access 不会接受该值。 如果你尚未按下节所述输入验证消息,则 Access 会显示自己的消息来指示该字段的验证规则禁止你输入的值。
过程:输入验证消息
为使你的数据库更加便于使用,可以输入自定义验证消息。 它们会替代 Access 在数据与验证规则不匹配时显示的常规消息。 可以使用自定义验证消息来提供有助于用户输入正确数据的特定信息,例如“Units On Hand 值不能为负数”。
-
在导航窗格中,双击要更改的表。
Access 将在数据表视图中打开该表。
-
对于字段验证消息,选择向其添加了验证规则的字段。
-
在功能区上,单击“ 表字段”,然后在“ 字段验证 ”组中单击“ 验证”,然后单击“ 字段验证消息 ”或“ 验证消息”。
-
在“输入验证消息”对话框中,键入您希望在数据与验证规则不匹配时显示的消息,然后单击“确定”。
向控件添加验证规则
除了表字段和记录,控件也可以具有可接受表达式的“验证规则”属性。 例如,假定你使用窗体输入报表的日期范围,并希望确保开始日期不早于 2017 年 1 月 1 日。 可以将输入开始日期的文本框的 “验证规则 ”和“ 验证文本” 属性设置为以下内容:
属性 |
设置 |
---|---|
验证规则 |
>=#1/1/2017# |
验证文本 |
不能输入早于 2017 年 1 月 1 日的日期。 |
如果尝试输入早于 2017 年 1 月 1 日的日期,将显示一条消息,并在 “验证文本 ”属性中显示文本。 如果未在 “验证文本 ”属性框中输入任何文本,Access 将显示一条泛型消息。 单击“确定”后,Access 将返回到文本框。
为表字段设置验证规则会在整个数据库中执行该规则,而无论在哪里修改该字段。 而为窗体上的控件设置验证规则只会在使用该窗体时才会执行该规则。 如果希望为不同用户建立不同的验证规则,为表字段和窗体上的控件分别设置验证规则会很有用。
过程
-
在导航窗格中,右键单击要更改的窗体或报表,然后单击快捷菜单上的“设计视图”或“布局视图”。
-
右键单击要更改的控件,然后单击快捷菜单上的“属性”。 Access 将显示控件的属性表。
-
单击“全部”选项卡,然后单击“验证规则”属性框。
-
键入表达式,或单击属性框中的“ 生成 ”按钮 , 使用表达式生成器创建表达式。
不要在表达式的前面加上 = 运算符。
-
若要自定义在用户输入的数据与验证规则不匹配时显示的文本,请在“验证文本”属性中键入所需文本。
分组和排序报表数据
使用“分组、排序和汇总”窗格来定义报表数据的分组级别和排序顺序。 一般根据列表中所选的字段进行分组或排序。 但如果想根据计算值进行分组或排序,则可以输入表达式。
分组是将包含重复值的列组合在一起的过程。 例如,假定数据库包含不同城市办事处的销售信息,并且数据库中的一个报表名为“城市销售额”。 提供该报表数据的查询按城市值对数据进行分组。 这种类型的分组可以使信息更易于阅读和理解。
而排序是将查询结果中的行(记录)按顺序排列的过程。 例如,您可以按其主键值(或另一个字段中的另一组值)的升序或降序对记录进行排序,也可以按一个或多个字符的指定顺序(例如字母顺序)对记录进行排序。
过程:向报表添加分组和排序
-
在导航窗格中,右键单击要更改的报表,然后单击快捷菜单上的“布局视图”或“设计视图”。
-
在功能区上,单击“ 报表设计”,然后在“ 分组 & 汇总 ”组中,单击“ 分组 & 排序”。 报表下方会显示“分组、排序和汇总”窗格。
-
若要向报表中添加分组级别,请单击“添加组”。
-
若要向报表中添加排序顺序,请单击“添加排序”。
窗格中会显示新组级别或排序顺序,还会显示提供报表数据的字段列表。 下图说明典型的新组级别(按类别分组)和排序顺序(按制造商排序),以及包含可用于分组和排序的字段列表:
-
在可用字段列表下,单击“表达式”,以开始使用表达式生成器。
-
在表达式生成器的表达式框(上部的框)中输入要使用的表达式。 表达式一定要以等号 (=) 运算符开头。
过程:将表达式添加到现有组或排序中
-
在导航窗格中,右键单击要更改的报表,然后单击快捷菜单上的“布局视图”或“设计视图”。
-
单击要更改的组级别或排序顺序。
-
单击“分组形式”(对于分组级别)或“排序依据”(对于排序顺序)旁边的向下箭头。 将显示包含可用字段的列表。
-
在包含这些字段的列表底部,单击“表达式”,以开始使用表达式生成器。
-
在表达式生成器的表达式框(上部的框)中键入表达式。 表达式一定要以等号 (=) 运算符开头。
控制运行哪些宏操作
在某些情况下,您可能希望只有在特定条件为 True 时才执行宏内的一个操作或一系列操作。 例如,假定您希望只有在文本框中的值等于 10 时才运行宏操作。 若要设置此规则,请在宏内的“If”块中使用表达式来定义宏内的条件。
在本示例中,假定文本框名为“Items”。 设置条件的表达式为:
[Items]>=10
过程
-
在导航窗格中,右键单击要更改的宏,然后单击快捷菜单上的“设计视图”。
-
单击要修改的“If”块,或从“操作目录”窗格中添加“If”块。
-
单击“If”块的第一行。
-
在框中键入条件表达式,或单击表达式框旁边的“ 生成 ”按钮 开始使用 表达式生成器。
键入的表达式必须是布尔表达式,即 True 或 False 中的一个。 仅当条件为 True 时,才会运行 If 块中的宏操作。