MS Access 内置函数



本章我们将学习内置函数。Access 中大约有一百个内置函数,几乎不可能涵盖每一个。本章将介绍基本结构、语法,并使用一些常用的函数以及潜在问题,以便您可以自行探索其他函数。

函数

函数是一个 VBA 过程,它执行任务或计算并返回结果。函数通常可以在查询中使用,但您也可以在其他地方使用函数。

  • 例如,您可以在表属性中使用函数,如果您想为日期/时间字段指定默认值,您可以使用 date 或 **Now** 函数从系统中调用当前日期/时间信息,并自动输入该值。

  • 您还可以在创建计算字段时在表达式中使用函数,或者在窗体或报表控件中使用函数。您甚至可以在宏参数中使用函数。

  • 函数可以很简单,不需要其他信息即可调用,或者只需引用表或查询中的一个字段。

  • 另一方面,它们也可以非常复杂,包含多个参数、字段引用,甚至在另一个函数中嵌套其他函数。

现在让我们来看一些使用内置函数的例子。

日期和时间函数

现在让我们了解日期和时间函数:

  • Date() 函数旨在返回当前系统日期。此函数不需要任何函数参数或附加信息。您只需编写函数的名称以及左括号和右括号。

  • 有两个非常相似的内置函数 Time() 和 Now()。

  • Time() 函数仅返回当前系统时间,而 Now() 函数同时返回当前系统日期和时间。

  • 根据您想要跟踪、存储或查询的数据,您可以使用三个易于使用的内置函数来完成此任务。

现在让我们打开您的数据库,使用查询设计创建一个新查询,并添加 tblProjects 和 tblTasks。

Add Tables

从 tblProjects 添加 ProjectName,从 tblTasks 添加 TaskTitle、StartDate 和 DueDate,然后运行您的查询。

Reconnecting

现在您可以看到所有项目中的所有不同任务。如果您想查看今天正在进行的项目任务,则必须使用 **Date()** 函数指定条件来查看今天或之后开始的项目。

现在让我们在 StartDate 下方指定条件。

Date Function

条件以运算符 **大于符号** 开始,后跟 **等于符号**,然后是 **Date 函数**。

当我们运行此查询时,所有任务都将发生在今天或将来,如下面的屏幕截图所示。

Today Date

这是一个关于如何在查询条件中使用 Date() 函数的示例。

  • 现在让我们假设此查询需要在它提取本周开始的日期方面更灵活。

  • 我们确实有一些本周开始的任务,由于我们的条件,这些任务没有显示在此当前列表中。它查看等于或大于今天的开始日期。

如果我们想查看本周开始、尚未完成或应在今天完成的任务,让我们返回设计视图。

在这里,我们将向这些条件添加一些其他信息。事实上,我们希望它大于或等于今天的日期减去七天。

Greater Than Date

如果我们键入减七并运行查询,您也可以看到本周开始的任务。

Started Task

DateDiff() 函数

DateDiff() 函数是另一个非常流行的日期/时间函数。DateDiff 函数返回一个 Variant (Long),指定两个指定日期之间的时间间隔数。换句话说,它计算两个日期之间的差值,您可以选择函数计算该差值的间隔。

现在让我们假设我们想要计算我们作者的年龄。为此,我们首先需要创建一个新查询并添加我们的作者表,然后添加 FirstName、LastName 和 BirthDay 字段。

Datediff

我们可以通过计算他们的出生日期或生日与今天的日期之间的差值来计算人们的年龄。

让我们尝试在新字段中使用 DateDiff 函数。

Add Datediff

让我们将其命名为 Age,后跟冒号,然后编写 DateDiff 函数。

  • DateDiff 函数的第一个函数参数是间隔,因此键入“yyyy”。
  • 下一个函数参数是我们想要根据其计算的第一个日期,在本例中为 Birthday 字段。
  • 第三个函数参数是今天的日期。

现在,运行您的查询,您将看到显示每个作者年龄的新字段。

Age of Each Author

Format() 函数

Format() 函数返回一个字符串,其中包含根据格式表达式中的说明格式化的表达式。以下是可在 Format() 函数中使用的用户定义格式列表。

设置 描述
yyyy
q 季度
m
y 一年中的第几天
d
w 星期几
ww
h 小时
n 分钟
s

现在让我们回到您的查询,并使用 Format() 函数在其中添加更多字段。

Format Function

键入 Format 函数。第一个函数参数可以几乎是任何东西。现在让我们将 birthday 字段作为第一个,接下来要编写我们的格式。在本例中,我们需要月、月、日、日。在引号中写入“mmdd”,然后运行您的查询。

Argument Expression

它现在正在从 birthday 字段获取日期,4 是月份,17 是日期。

让我们在接下来的字段中添加“mmm”和“mmmm”代替“mmdd”,如下面的屏幕截图所示。

Add Month

运行您的查询,您将看到结果,如下面的屏幕截图所示。

Month Name

在下一个字段中,它将返回该生日月份名称的前 3 个字符,在最后一个字段中,您将获得完整的月份名称。

要查看生日后的月份和年份,让我们也添加“yyyy”,如下面的屏幕截图所示。

Year

让我们再次运行您的查询。

Month Year

您现在将看到月份后跟逗号,然后是年份。

IIf() 函数

IIf() 函数是“立即 If”的缩写,此函数将表达式计算为真或假,并为每个表达式返回一个值。它最多有三个函数参数,所有参数都是必需的。

  • 第一个参数是您想要计算的任何表达式。
  • 下一个参数代表真部分,如果您的第一个表达式为真,则可以返回一个值或表达式。
  • 最后一个参数是如果您的表达式为假,您想要返回的内容。

示例

让我们来看一个简单的例子。我们将使用查询设计创建一个新查询并添加 tblAuthors 表,然后添加以下字段。

Immediate If

现在您可以看到我们有三个字段——FirstName、MiddleInitial、LastName,然后是这个连接字段,它将所有三个字段组合在一起。让我们运行您的查询以查看此查询的结果。

Concat Fields

现在,您可以看到查询的结果,但您还会注意到有些记录没有中间首字母。例如,Joyce Dyer 记录没有中间首字母,但在 FullName 字段中,您会看到实际上不需要的句点。因此,返回设计视图。在这里,我们将使用 IIf 函数以不同的方式连接名称。

Different Way

让我们在另一个字段中写入名称,并将其命名为 FullName1,然后键入 IIf 函数。

  • 立即IF函数的第一个函数参数将是您的表达式。在表达式中,我们将查看中间名字段是否为空或为Null。

  • 下一个参数是真值部分。因此,如果中间名为空,则我们希望显示FirstName和LastName。

  • 现在,对于我们的假值部分——如果MiddleInitial不为空,则我们希望显示FirstName、MiddleInitial和LastName。

现在让我们运行您的查询,您将看到如下截图所示的结果。

Display Result
广告