生成表达式

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

以生成表达式的 Access 数据库中,选择对象或属性您要使用表达式,然后按 Ctrl + F2-这将打开表达式生成器,具有大量部分构建的表达式为您节省时间和内置帮助以保存您的工具时遇到问题。您可以使用表达式以使用您的数据执行各种操作,如确定之后发运订单过了多少天或将 FirstName 和 LastName 合并全名。如果您是 Excel 人员,视为表达式的公式的 Access 版本。

在 Access web 应用程序和桌面数据库中的一些表达式不工作方式相同。本文中的所有内容适用于 web 应用程序和数据库,除非另行说明的位置。

表达式-有关详细信息何时使用及如何构建-阅读。

本文内容

表达式概述

使用表达式生成器

计算窗体和报表中控件的值

使用表达式作为查询条件

在查询中创建计算字段

在表中创建计算字段

向表字段或记录添加验证规则

向控件添加验证规则

为表字段设置默认值

为控件设置默认值

控制运行哪些宏操作

分组和排序报表数据

表达式概述

还记得数学课上的公式吗? 假设 x2+z = (2y-1)/7,求解 x,诸如此类的问题? 或许您还记得,公式是现代工程的基础。如果要造出牢固的建筑物,可以使用公式来回答具体问题(如“需要多粗的螺栓才能支撑楼梯间?”)。这就是表达式的作用,将 xyz 用来代表 [单价][折扣] [数量]。表达式不仅可以进行数学计算,也可以使用文本数据执行各种操作。

可以使用表达式执行的操作

以下是一些可以使用表达式执行操作的常见示例。

  • 计算年龄

  • 将姓和名放在一起

  • 对已发生更改的日期和时间做更改记录

  • 指定模式的数据输入必须匹配

  • 裁剪文本行任意一侧的字符

技术概述

注意: 此部分是有关生成表达式的选读材料,它可以让您更好地了解表达式的工作方式,并且该部分使用了一些技术术语,可帮助您在其他技术站点(如 MSDN)上找到相关信息。

表达式是以下部分或全部内容的组合:内置或用户定义的函数、标识符、运算符和常量。表达式值的计算结果为单个值。

表达式的组成部分。

例如,以下表达式包含全部四种元素:

=Sum([Purchase Price])*0.08

在此示例中,Sum() 是内置函数,[Purchase Price] 是标识符,* 是数学运算符,0.08 是常量。此表达式可在窗体页脚或报表页脚中的文本框中用于计算一组项目的营业税。

表达式可能会比此示例复杂得多或简单得多。例如,此布尔表达式(计算结果为 TrueFalse 的表达式)只包括运算符和常量:

>0

此表达式在与大于 0 的数字进行比较时返回 True,在与小于或等于 0 的数字进行比较时返回 False。您可以在控件或表字段的“验证规则”属性中使用此表达式,以确保只输入大于 0 的值。

在 Access 中,表达式在很多地方都用于执行计算、操作字符或测试数据。表、查询、窗体、报表和宏都具有接受表达式的属性。例如,可以在控件的“控件来源”和“默认值”属性中使用表达式。此外,在为事件过程或模块编写 Microsoft Visual Basic for Applications (VBA) 代码时,使用的表达式通常与在 Access 对象(如表或查询)中使用的表达式类似。

返回页首

使用表达式生成器

表达式生成器具有下列优点:

  • 您可以轻松地查找和插入函数、运算符、常量和标识符(例如,字段、表、窗体和查询的名称),从而节省时间并减少错误。

  • 表达式生成器根据在表达式上下文限制可用的表达式部分。

  • 您可以从各种现成表达式(如页码、当前日期或当前日期和时间)中选择。

  • IntelliSense 在“表达式生成器”中可用,因此,您不必记住表达式需要的所有参数。

  • 表达式生成器中的帮助触手可及,只需单击“快速信息”工具中显示的链接即可。

启动表达式生成器

启动表达式生成器的键盘快捷键是 Ctrl + F2。第一次使用此快捷键,将启动“选择生成器”对话框,只需双击对话框中的“表达式生成器”便可继续。

查看有关如何使用“表达式生成器”的详细信息。

在 web 数据库中的表达式的嵌套限制是 65

表达式嵌套超过 65 级别深在中无法使用浏览器中,以便您不应在 Access web 数据库中使用这样的表达式。您将不会收到任何错误消息-只需将无法正常使用表达式。

重要: 使用“&”、“AND”和“OR”运算符可以在服务器上创建不反映在 Access 客户端上的其他嵌套层。例如表达式 "a" & "b" & "c" 未嵌套在表达式生成器中,但在 SharePoint 中将变成 concatenate.Db("a", concatenate.Db("b", "c") )。此转换将创建一个嵌套层。在单个表达式中使用多个连续的“&”,“AND”或“OR”运算符,可能会导致超过服务器 65 层的嵌套限制,此时表达式在浏览器中不起作用。

返回页首

计算窗体和报表中控件的值

使用表达式作为控件的数据源时,您所创建的控件就是计算控件。例如,假定您有一个报表显示了多个库存记录,您要在报表页脚中创建一个总计来对报表上的所有行项目求和。

报表上的总计

若要计算总计,请在报表页脚中放置一个文本框控件,然后将该文本框的 ControlSource 属性设置为以下表达式:

=Sum([ table_field ])

在本例中,table_field 是包含小计值的字段的名称。该字段可以来自表或查询。SUM 函数计算所有 table_field 值的总和。

以下过程说明如何在文本框控件中输入表达式。

在文本框控件中输入表达式

  1. 在导航窗格中,右键单击要更改的窗体,然后单击快捷菜单上的“布局视图”或“设计视图”。

  2. 选择要向其中输入表达式的控件。

  3. 如果尚未显示属性表,请按 F4 显示该表。

  4. 若要手动创建表达式,请在属性表中的“数据”选项卡上,单击文本框的 ControlSource 属性,然后键入 = ,后跟表达式的其余部分。例如,若要计算如上所示的小计,请键入 =Sum([table_field]),务必以您字段的名称替换 table_field。

  5. 若要使用表达式生成器创建表达式,请单击属性框中的“生成”按钮 按钮图像

    完成表达式后,属性表将与下图类似:

    文本框的“控件来源”属性中的表达式。

返回页首

使用表达式作为查询条件

在查询中使用条件以缩小查询结果。作为表达式中,输入条件时,并访问返回那些匹配表达式的行。若要查看丰富的示例,请参阅查询条件示例一文。

例如,假设您要查看其发货日期在 2010 年前三个月的所有订单。若要输入条件,请在查询中的“日期/时间”列的“条件”单元格中键入以下表达式。此示例使用名为 ShippedDate 的“日期/时间”列。若要定义日期范围,请按以下方式输入条件:

Between #1/1/2010# And #3/31/2010#

ShippedDate 列将与下图类似。

查询网格的“条件”行中的表达式。

对于订单表中的每个记录,如果 ShippedDate 列中的值在您指定的日期范围内,则查询输出中将包括该记录。请注意,在表达式中用井号 (#) 将日期括起来。Access 将井号内的值视为“日期/时间”数据类型。通过将这些值视为日期/时间数据,您可以对它们执行计算,例如从一个日期减去另一个日期。

在查询设计网格中输入条件

  1. 在导航窗格中,右键单击要更改的查询,然后单击快捷菜单上的“设计视图”。

  2. 在要输入条件的列的“条件”单元格中单击。

  3. 若要手动创建表达式,请键入条件表达式。

    注意: 不要在条件表达式的前面加上 = 运算符。

  4. 若要使用表达式生成器创建表达式,请在功能区上单击“设计”,然后在“查询设置”组中,单击“生成器按钮图像

    若要在较大的区域中编辑表达式,请将光标放在“条件”单元格中,然后按 Shift+F2 来显示“缩放”框:

    “缩放”对话框中的表达式。

返回页首

在查询中创建计算字段

假设您正在设计一个查询,希望显示使用查询中其他字段的计算的结果。若要创建计算字段,请在查询的“字段”行的空白单元格中输入表达式。例如,如果您的查询包含“数量”字段和“单价”字段,可以通过在查询的“字段”行中输入以下表达式将两个字段相乘来创建计算字段“总价”:

总价: [数量] * [单价]

使表达式以文本 Extended Price: 开头可将新列命名为 Extended Price。此名称通常被称为别名。如果您没有提供别名,Access 会创建一个,例如 Expr1

使用表达式在查询中创建计算字段。

在运行查询时,Access 会对每行执行计算,如下图所示:

数据表视图中显示的计算字段。

在查询设计视图中创建计算字段

  1. 在导航窗格中,右键单击要更改的查询,然后单击快捷菜单上的“设计视图”。

  2. 单击要在其中创建计算字段的列中的“字段”单元格。

  3. 若要手动创建表达式,请键入表达式。

    注意: 请不要在条件表达式前面加上 = 运算符,而要使表达式以描述性标签开头,后跟一个冒号。例如,键入 Extended Price: 会为创建名为 Extended Price 的计算字段的表达式提供标签。然后,在冒号后面为表达式输入条件。

  4. 若要使用表达式生成器创建表达式,请在功能区上单击“设计”,然后在“查询设置”组中,单击“生成器”。

返回页首

在表中创建计算字段

在 Access 中,可以在表中创建计算字段, 而无需另外使用查询来执行计算。例如,如果您的表列出订单中的每个项目的数量、价格和税率,可以添加显示总价格的计算字段,如下所示:

[Quantity]*([UnitPrice]+([UnitPrice]*[TaxRate]))

  • 计算不能包括其他表或查询中的字段。

  • 计算结果是只读的。

若要创建计算字段,请执行下列操作:

  1. 通过在导航窗格中双击表来打开它。

  2. 水平滚动到表中最右边的一列,然后单击“单击以添加”列标题。

  3. 在出现的列表中,单击“计算字段”,然后单击结果所需的数据类型。

    Access 会显示表达式生成器。

  4. 键入此字段所需的计算,例如:

    [数量] * [单价]

    注意: 对于计算字段,表达式不要以等号 (=) 开始。

  5. 单击“确定”

    Access 会添加计算字段,然后突出显示字段标题,以便您可以键入字段名称。

  6. 为计算字段键入名称,然后按 Enter。

返回页首

向表字段或记录添加验证规则

表达式非常适用于在向数据库中输入数据时对数据进行验证,可以防止错误数据进入。在表中,有两种类型的验证规则:字段验证规则和记录验证规则,前者可防止用户在单个字段中输入错误数据,后者可防止用户创建不符合验证规则的记录。您使用这两种验证规则的表达式。

例如,假定您有一个名为“库存”的表,其中包含一个名为“存货数量”的字段,而且您希望设置一个规则来强制用户输入大于或等于零的值。换句话说,库存决不可为负数。您可以在“存货数量”字段中使用以下表达式作为字段验证规则来实现此目的:

>=0

输入验证规则

使用以下过程来输入字段验证规则或记录验证规则:

  1. 在导航窗格中,双击要更改的表。

    Access 将在数据表视图中打开该表。

  2. 对于字段验证规则,选择要更改的字段。

  3. 在功能区上,单击“字段”,在“字段验证”组中,单击“验证”,然后单击“字段验证规则”或“记录验证规则”。

    Access 会显示表达式生成器。

  4. 开始键入所需条件。例如,对于要求所有值都大于或等于零的字段验证规则,请键入以下命令:

    >=0

    注意: 不要在表达式前面加上等号 (=)。

验证规则表达式是布尔表达式,这意味着任何给定的输入值为 TrueFalse。该值的验证规则必须为 True,否则 Access 不会保存输入和显示指示错误的验证消息。在此示例中,如果您为“存货数量”字段输入小于零的值,则验证规则为 FALSE,Access 将不接受该值。如果尚未按下节所述输入验证消息,则 Access 会显示自己的消息来指示该字段的验证规则禁止您输入的值。

输入验证消息

为使您的数据库更加便于使用,可以输入自定义验证消息。它们会替代 Access 在数据与验证规则不匹配时显示的常规消息。可以使用自定义验证消息来提供有助于用户输入正确数据的特定信息,例如“‘存货数量’值不能为负数”。使用以下过程来创建验证消息:

  1. 在导航窗格中,双击要更改的表。

    Access 将在数据表视图中打开该表。

  2. 对于字段验证消息,选择向其添加了验证规则的字段。

  3. 在功能区上,单击“字段”,接着在“字段验证”组中单击“验证”,然后单击“字段验证消息”或“记录验证消息”。

  4. 在“输入验证消息”对话框中,键入您希望在数据与验证规则不匹配时显示的消息,然后单击“确定”。

返回页首

向控件添加验证规则

注意: 有效性规则不可用于 Access web 应用程序或 web 数据库中的控件。使用字段或记录有效性规则相反上, 一节中所述。

除了表字段和记录,控件也可以具有可接受表达式的“验证规则”属性。例如,假定您使用窗体输入报表的日期范围,并希望确保开始日期不早于 2010 年 1 月 1 日。您可以对在其中输入开始日期的文本框的“验证规则”和“验证文本”属性进行如下设置:

属性

设置

验证规则

>=#1/1/2010#

验证文本

不能输入早于 2010 年 1 月 1 日的日期。

如果尝试输入早于 2010 年 1 月 1 日的日期,将出现一条消息,显示“验证文本”属性中的文本。如果没有在“验证文本”属性框中输入任何文本,则 Access 会显示常规消息。单击“确定”后,Access 将返回到文本框。

提示: 为表字段设置验证规则会在整个数据库中执行该规则,而无论在哪里修改该字段。而为窗体上的控件设置验证规则只会在使用该窗体时才会执行该规则。如果希望为不同用户建立不同的验证规则,为表字段和窗体上的控件分别设置验证规则会很有用。

输入控件的验证规则

  1. 在导航窗格中,右键单击要更改的窗体或报表,然后单击快捷菜单上的“设计视图”或“布局视图”。

  2. 右键单击要更改的控件,然后单击快捷菜单上的“属性”。

    Access 将显示控件的属性表。

  3. 单击“全部”选项卡,然后单击“验证规则”属性框。

  4. 键入表达式,或单击属性框中的“生成”按钮 按钮图像 ,以使用表达式生成器创建表达式。

    注意: 不要在表达式的前面加上 = 运算符。

  5. 若要自定义在用户输入的数据与验证规则不匹配时显示的文本,请在“验证文本”属性中键入所需文本。

返回页首

为表字段设置默认值

您可以使用表达式为表中的字段指定默认值,除非提供另一个值,否则 Access 将该值用于新记录。例如,假定您希望在任何人添加新记录时自动将日期和时间插入到名为“订单日期”的字段中。为此,您可以使用下面的表达式:

Now()

为表中字段指定默认值

  1. 在导航窗格中,双击要更改的表。

    Access 将在数据表视图中打开该表。

  2. 选择要更改的字段。

  3. 在功能区上,单击“字段”,然后在“属性”组中,单击“默认值”。

    Access 会显示“表达式生成器”对话框。

  4. 在框中键入您的表达式,确保表达式以等号 (=) 开头。

注意: 如果将控件绑定到表字段,并且控件和表字段都具有默认值,则控件的默认值优先于表字段的默认值。

返回页首

为控件设置默认值

使用表达式的另一个常见位置是控件的“默认值”属性。控件的“默认值”属性的行为与表中字段的“默认值”属性的行为类似。例如,若要将当前日期用作文本框的默认值,可以使用下面的表达式:

Date()

此表达式使用 Date 函数返回当前日期,而不是时间。如果将文本框绑定到了表字段,并且该字段具有默认值,则控件的默认值优先于表字段的默认值。通常最好为表中字段设置“默认值”属性。这样,如果您使几个来自不同窗体的控件基于相同的表字段,则会对每个控件应用相同的默认值,从而帮助确保每个窗体上的数据输入一致。

输入控件的默认值

  1. 在导航窗格中,右键单击要更改的窗体或报表,然后单击快捷菜单上的“设计视图”或“布局视图”。

  2. 选择要更改的控件。

  3. 如果尚未显示属性表,请按 F4 显示该表。

  4. 单击属性表上的“全部”选项卡,然后单击“默认值”属性框。

  5. 键入表达式,或单击属性框中的“生成”按钮 按钮图像 ,以使用表达式生成器创建表达式。

返回页首

控制运行哪些宏操作

在某些情况下,您可能希望只有在特定条件为 True 时才执行宏内的一个操作或一系列操作。例如,假定您希望只有在文本框中的值等于 10 时才运行宏操作。若要设置此规则,请在宏内的“If”块中使用表达式来定义宏内的条件。

在此示例中,假定文本框名为“项目”。设置条件的表达式为 [项目]>=10

宏内的 If 块中使用的表达式。

在宏内的 If 块中输入表达式

  1. 在导航窗格中,右键单击要更改的宏,然后单击快捷菜单上的“设计视图”。

  2. 单击要修改的“If”块,或从“操作目录”窗格中添加“If”块。

  3. 单击“If”块的第一行。

  4. 在框中键入条件表达式,或单击表达式框旁边的“生成”按钮 按钮图像 ,以启动表达式生成器。

注意: 键入的表达式必须是布尔表达式,这意味着它为“True”或“False”。“If”块内的宏操作只在条件为 True 时运行。

返回页首

分组和排序报表数据

可以使用“分组、排序和汇总”窗格来为报表数据定义分组级别和排序顺序。最常见的是,按照您从列表中选择的字段进行分组或排序, 但如果您希望按照计算值进行分组或排序,则可以输入表达式。

分组是将包含重复值的列组合在一起的过程。例如,假定数据库包含不同城市办事处的销售信息,并且数据库中的一个报表名为“城市销售额”。提供该报表数据的查询按城市值对数据进行分组。这种类型的分组可以使信息更易于阅读和理解。

而排序是将查询结果中的行(记录)按顺序排列的过程。例如,您可以按其主键值(或另一个字段中的另一组值)的升序或降序对记录进行排序,也可以按一个或多个字符的指定顺序(例如字母顺序)对记录进行排序。

向报表添加分组和排序

  1. 在导航窗格中,右键单击要更改的报表,然后单击快捷菜单上的“布局视图”或“设计视图”。

  2. 在功能区上单击“设计”,然后在“分组和汇总”组中,单击“分组和排序”。

    在报表下方会显示“分组、排序和汇总”窗格。

  3. 若要向报表中添加分组级别,请单击“添加组”。

  4. 若要向报表中添加排序顺序,请单击“添加排序”。

    窗格中会显示新组级别或排序顺序,还会显示提供报表数据的字段列表。下图说明典型的新组级别(按类别分组)和排序顺序(按制造商排序),以及包含可用于分组和排序的字段列表:

    在“分组、排序和汇总”窗格中选择表达式选项。

  5. 在可用字段列表下,单击“表达式”来启动表达式生成器。

  6. 在表达式生成器的表达式框(上部的框)中输入要使用的表达式。表达式一定要以等号 (=) 运算符开头。

将表达式添加到现有组或排序中

  1. 在导航窗格中,右键单击要更改的报表,然后单击快捷菜单上的“布局视图”或“设计视图”。

  2. 单击要更改的组级别或排序顺序。

  3. 单击“分组形式”(对于分组级别)或“排序依据”(对于排序顺序)旁边的向下箭头。

    将出现包含可用字段的列表。

  4. 在包含字段的列表的底部,单击“表达式”以启动表达式生成器。

  5. 在表达式生成器的表达式框(上部的框)中键入表达式。表达式一定要以等号 (=) 运算符开头。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×