Ms Access 简明教程

MS Access - Built-In Functions

在本章中,我们将使用内置函数。在 Access 中,内置函数接近 100 个,不可能涵盖所有函数。在本章中,我们将涵盖基本结构、语法以及使用一些常见的函数,还有一些需要注意的事项,以便你能自己探索其他一些函数。

Functions

函数是执行任务或计算并返回结果的 VBA 过程。函数通常可以用于查询,但还有其他可以使用函数的地方。

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

  2. 当创建计算字段或在窗体或报表控件中使用函数时,你也可以在表达式中使用函数。你甚至可以在宏参数中使用函数。

  3. 函数可以非常简单,不需要调用其他信息,或者仅仅引用表或查询中的一个字段。

  4. 另一方面,函数也可能变得非常复杂,具有多个参数、字段引用,甚至嵌套在其他函数内部的其他函数。

现在让我们了解一些使用内置函数的示例。

Date & Time Functions

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

  1. Date() 函数旨在返回当前系统日期。此函数不需要任何函数参数或附加信息。你所要做的就是编写函数的名称以及那些圆括号。

  2. 有两种非常相似的内置函数 Time() 和 Now()。

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

  4. 根据你想要跟踪、存储或查询的数据,你有三个内置的易于使用的函数来帮助完成该任务。

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

add tables

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

reconnecting

现在你可以看到来自所有项目的不同任务。如果你想要查看截至今天日期的正在进行中的项目任务,那么我们必须使用 Date() 函数指定一个条件来查看在今天或之后开始的项目。

我们现在来具体说明 StartDate 下的条件。

date function

条件以一个运算符 greater than symbol 开头,其后是一个 equal to symbol 再加上一个 Date Function

当我们运行此查询时,所有任务要么出现在今天的日期,要么出现在未来日期,如以下屏幕截图所示。

today date

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

  1. 现在让我们假设此查询在拉取本周开始的日期方面需要更加灵活。

  2. 我们有几个本周开始的不同任务,但由于我们的条件,它们未显示在此当前列表中。它正在查找等于或大于今天的开始日期。

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

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

greater than date

如果我们键入减去七然后运行查询,您还将看到本周开始的任务。

started task

DateDiff() Function

DateDiff() 函数是另一个非常流行的日期/时间函数。DateDiff 函数返回一个变体(长整型),指定两个特定日期之间的时间间隔数量。换句话说,它可以计算两个日期之间的差值,而且您可以选择函数用以计算该差值的间隔。

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

datediff

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

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

add datediff

我们称之为年龄,后加一个冒号,然后编写 DateDiff 函数。

  1. DateDiff 函数的第一个函数参数是间隔,因此键入“yyyy”。

  2. 下一个函数参数是我们要计算的第一个日期,在本例中,将是 Birthday 字段。

  3. 第三个函数参数是今天的日期。

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

age of each author

Format() Function

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

Setting

Description

yyyy

Year

q

Quarter

m

Month

y

Day of year

d

Day

w

Weekday

ww

Week

h

Hour

n

Minute

s

Second

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

format function

输入 Format 函数。第一个函数参数将是一个表达式,它几乎可以是任何东西。现在,我们让 birthday 字段是第一个,接下来要做的是编写我们的格式。在这种情况下,我们需要月份、月份、天、天。用引号写上“mmdd”,然后运行你的查询。

argument expression

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

让我们在下一个字段中添加“mmm”和“mmmm”,而不是“mmdd”,如下面的屏幕截图所示。

add month

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

month name

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

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

year

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

month year

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

IIf() Function

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

  1. 第一个参数是您想要评估的任何表达式。

  2. 下一个参数代表真部分,如果第一个表达式为真,则可以是值或返回的表达式。

  3. 最后一个参数是当你的表达式为假时要返回的内容。

Example

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

immediate if

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

concat fields

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

different way

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

  1. 立即如果函数的第一个函数参数将是你的表达式。在表达式中,我们将检查中间首字母字段是否为空或为 null。

  2. 下一个参数是真部分。因此,如果中间名首字母为 null,那么我们希望显示 FirstName 和 LastName。

  3. 现在,对于我们的虚假部分——如果 MiddleInitial 不为空,那么我们希望显示 FirstName、MiddleInitial 和 LastName。

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

display result