Access - 内置函数

  • 简述

    在本章中,我们将使用内置函数。在 Access 中,有近百个内置函数,几乎不可能涵盖每一个。在本章中,我们将介绍基本结构、语法和使用一些比较流行的函数,以及其中的陷阱,以便您可以自行探索其他一些函数。
  • 功能

    函数是执行任务或计算并返回结果的 VBA 过程。函数通常可以在查询中使用,但还有其他地方可以使用函数。
    • 您可以在表格属性中使用函数,例如,如果您想为日期/时间字段指定默认值,您可以使用日期或Now函数从您的系统中调用当前日期/时间信息,并自动输入该值。
    • 您还可以在创建计算字段时在表达式中使用函数,或者在表单或报表控件中使用函数。您甚至可以在宏参数中使用函数。
    • 函数可以非常简单,不需要调用其他信息,或者只需从表或查询中引用一个字段。
    • 另一方面,它们也可能变得相当复杂,有多个参数、字段引用,甚至其他函数嵌套在另一个函数中。
    现在让我们看一些使用内置函数的例子。
  • 日期和时间函数

    现在让我们了解日期和时间函数 -
    • Date() 函数旨在返回当前系统日期。此函数不需要任何函数参数或其他信息。您所要做的就是写下函数的名称以及那些打开和关闭的括号。
    • 有两个非常相似的内置函数 Time() 和 Now()。
    • Time() 函数仅返回当前系统时间,Now() 函数返回当前系统日期和时间。
    • 根据您要跟踪、存储或查询的数据,您可以使用三个易于使用的内置函数来帮助完成该任务。
    现在让我们打开您的数据库并使用查询设计创建一个新查询并添加 tblProjects 和 tblTask​​s。
    添加表格
    添加来自 tblProjects 的 ProjectName 和来自 tblTask​​s 的 TaskTitle、StartDate 和 DueDate 并运行您的查询。
    重新连接
    您现在可以查看所有项目的所有不同任务。如果您想查看当天正在进行的项目任务,那么我们必须使用Date()查看今天或之后开始的项目的功能。
    现在让我们在 StartDate 下指定标准。
    日期功能
    条件以运算符开头greater than symbol,后跟一个equal to symbol接着Date Function.
    当我们运行此查询时,所有任务都将在今天或将来发生,如下面的屏幕截图所示。
    今天日期
    这是一个如何使用 Date() 函数作为查询条件的示例。
    • 现在让我们说这个查询需要在本周开始的日期方面更加灵活。
    • 我们确实有几个从本周开始的不同任务,由于我们的标准,这些任务没有出现在当前的列表中。它正在查看等于今天或以上的开始日期。
    如果我们想查看本周开始的、尚未完成或今天应该完成的任务,让我们回到设计视图。
    在这里,我们将为这些标准添加一些附加信息。事实上,我们希望它大于或等于今天的日期减去 7 天。
    大于日期
    如果我们键入负七并运行查询,您也可以看到本周开始的任务。
    开始的任务
  • DateDiff() 函数

    DateDiff() 函数是另一个非常流行的日期/时间函数。DateDiff 函数返回一个 Variant (long),指定两个指定日期之间的时间间隔数。换句话说,它计算两个日期之间的差异,您可以选择函数计算该差异的时间间隔。
    现在让我们说我们要计算作者的年龄。为此,我们首先需要创建一个新查询并添加我们的作者表,然后添加 FirstName、LastName 和 BirthDay 字段。
    日期差异
    我们可以通过计算人们的出生日期或生日与今天的日期之间的差异来计算人们的年龄。
    让我们尝试在新字段中使用 DateDiff 函数。
    添加日期差异
    让我们称它为 Age 后跟一个冒号,然后编写 DateDiff 函数。
    • DateDiff 函数的第一个函数参数是间隔,因此输入“yyyy”。
    • 下一个函数参数是我们要计算的第一个日期,在这种情况下,它将是生日字段。
    • 第三个函数参数是今天的日期。
    现在,运行您的查询,您将看到显示每位作者年龄的新字段。
    每位作者的年龄
  • Format() 函数

    Format() 函数返回一个字符串,其中包含根据格式表达式中包含的指令格式化的表达式。这是可以在 Format() function.ss 中使用的用户定义格式的列表
    Setting Description
    yyyy
    q
    m
    y 年中的一天
    d
    w 周天
    ww
    h 小时
    n 分钟
    s
    现在让我们回到您的查询并使用 Format() 函数在同一查询中添加更多字段。
    格式化函数
    键入格式函数。第一个函数参数将是一个表达式,它几乎可以是任何东西。现在让我们将生日字段作为第一件事,接下来是编写我们的格式。在这种情况下,我们需要月、月、日、日。在引号中写下“mmdd”,然后运行您的查询。
    参数表达式
    它现在从生日字段中获取日期,4 是月份,17 是日期。
    让我们在下一个字段中添加“mmm”和“mmmm”而不是“mmdd”,如下面的屏幕截图所示。
    添加月份
    运行您的查询,您将看到如下屏幕截图所示的结果。
    月份名称
    在下一个字段中,它将返回该生日月份名称的前 3 个字符,在最后一个字段中,您将获得完整的月份名称。
    要查看生日后的月份和年份,让我们添加“yyyy”,如下图所示。
    年
    让我们再次运行您的查询。
    月 年
    您现在将看到月份,后面是逗号,然后是年份。
  • IIf() 函数

    IIf() 函数是“立即如果”的缩写,该函数将表达式计算为真或假,并为每个表达式返回一个值。它最多有三个函数参数,所有这些都是必需的。
    • 第一个参数是您要评估的任何表达式。
    • 下一个参数代表真部分,如果您的第一个表达式为真,它可以是一个值或返回的表达式。
    • 如果您的表达式为假,最后一个参数是您想要返回的参数。

    例子

    让我们举一个简单的例子。我们将使用查询设计创建一个新查询并添加 tblAuthors 表,然后添加以下字段。
    立即如果
    您现在可以看到我们有三个字段 - FirstName、MiddleInitial、LastName,然后是这个串联的字段,它将所有三个字段组合在一起。让我们运行您的查询以查看此查询的结果。
    连接字段
    现在,您可以看到查询的结果,但您也会注意到有些记录没有中间名首字母。例如,Joyce Dyer 记录没有中间名首字母,但在 FullName 字段中,您会看到确实不需要存在的句点。所以,回到设计视图。在这里,我们将使用 IIf 函数以不同的方式连接名称。
    不同的方法
    让我们在另一个字段中写入名称并将其命名为 FullName1,然后键入 IIf 函数。
    • Immediate If 函数的第一个函数参数将是您的表达式。在表达式中,我们将查看中间的初始字段是空白还是 null。
    • 下一个论点是真实的部分。因此,如果中间名首字母为空,那么我们将希望显示 FirstName 和 LastName。
    • 现在,对于我们的错误部分——如果 MiddleInitial 不为 null,那么我们希望显示 FirstName、MiddleInitial 和 LastName。
    现在让我们运行您的查询,您将看到如下屏幕截图所示的结果。
    显示结果