MS Access – 内置函数
MS Access – 内置函数
在本章中,我们将使用内置函数。在 Access 中,有近百个内置函数,几乎不可能涵盖其中的每一个。在本章中,我们将介绍一些比较流行的函数的基本结构、语法和使用,以及陷阱,以便您可以自行探索其他一些函数。
职能
函数是执行任务或计算并返回结果的 VBA 过程。函数一般可以用在查询中,但还有其他地方可以使用函数。
-
您可以在表属性中使用函数,例如,如果您想为日期/时间字段指定默认值,您可以使用日期或现在函数从您的系统中调用当前日期/时间信息,并输入该值自动。
-
您还可以在创建计算字段时在表达式中使用函数,或者在窗体或报表控件中使用函数。您甚至可以在宏参数中使用函数。
-
函数可以非常简单,不需要调用其他信息,或者只需引用表或查询中的一个字段。
-
另一方面,它们也可能变得非常复杂,具有多个参数、字段引用,甚至其他函数嵌套在另一个函数中。
现在让我们看一些使用内置函数的例子。
日期和时间函数
现在让我们了解日期和时间函数 –
-
Date() 函数旨在返回当前系统日期。此函数不需要任何函数参数或附加信息。您所要做的就是写下函数的名称以及那些左括号和右括号。
-
有两个非常相似的内置函数 Time() 和 Now()。
-
Time() 函数仅返回当前系统时间,Now() 函数返回当前系统日期和时间。
-
根据您要跟踪、存储或查询的数据,您可以使用三个易于使用的内置函数来帮助完成该任务。
现在让我们打开您的数据库并使用查询设计创建一个新查询并添加 tblProjects 和 tblTasks。
添加来自 tblProjects 的 ProjectName 和来自 tblTasks 的 TaskTitle、StartDate 和 DueDate 并运行您的查询。
您现在可以查看所有项目的所有不同任务。如果您想查看在今天日期正在进行的项目任务,那么我们必须使用Date()函数指定一个标准来查看在今天日期或之后开始的项目。
现在让我们指定 StartDate 下的条件。
条件以大于号的运算符开头,后跟等于符号,然后是日期函数。
当我们运行此查询时,所有任务都将在今天或将来发生,如下面的屏幕截图所示。
这是一个如何使用 Date() 函数作为查询条件的示例。
-
现在让我们说这个查询需要在本周开始提取的日期方面更加灵活。
-
由于我们的标准,我们确实有几个不同的任务从本周开始,但没有出现在当前列表中。它查看等于今天或以上的开始日期。
如果我们想查看本周开始、尚未完成或今天应该完成的任务,让我们回到设计视图。
在这里,我们将为这些标准添加一些附加信息。事实上,我们希望它大于或等于今天的日期减去 7 天。
如果我们输入减七并运行查询,您也可以看到本周开始的任务。
DateDiff() 函数
DateDiff() 函数是另一个非常流行的日期/时间函数。DateDiff 函数返回一个 Variant (long),指定两个指定日期之间的时间间隔数。换句话说,它计算两个日期之间的差异,您可以选择函数计算该差异的时间间隔。
现在假设我们要计算作者的年龄。为此,我们首先需要创建一个新查询并添加我们的作者表,然后添加 FirstName、LastName 和 BirthDay 字段。
我们可以通过计算人们的出生日期或生日与今天的任何日期之间的差异来计算人们的年龄。
让我们尝试在新字段中使用 DateDiff 函数。
让我们称其为 Age 后跟一个冒号,然后编写 DateDiff 函数。
- DateDiff 函数的第一个函数参数是间隔,因此键入“yyyy”。
- 下一个函数参数是我们想要计算的第一个日期,在这种情况下,将是生日字段。
- 第三个函数参数是今天的日期。
现在,运行您的查询,您将看到显示每位作者年龄的新字段。
Format() 函数
Format() 函数返回一个字符串,其中包含根据格式表达式中包含的指令格式化的表达式。这是可以在 Format() function.ss 中使用的用户定义格式列表
Setting | 描述 |
---|---|
yyyy | 年 |
q | 25美分硬币 |
m | 月 |
y | 一年中的一天 |
d | 日 |
w | 工作日 |
ww | 星期 |
h | 小时 |
n | 分钟 |
s | 第二 |
现在让我们回到您的查询并使用 Format() 函数添加更多字段。
键入格式函数。第一个函数参数将是一个表达式,它几乎可以是任何东西。现在让我们将生日字段作为第一件事,接下来是编写我们的格式。在这种情况下,我们需要月、月、日、日。在引号中写入“mmdd”,然后运行您的查询。
它现在从生日字段中获取日期,4 是月份,17 是日期。
让我们在接下来的字段中添加“mmm”和“mmmm”而不是“mmdd”,如下面的屏幕截图所示。
运行您的查询,您将看到如下屏幕截图所示的结果。
在下一个字段中,它将返回该生日月份名称的前 3 个字符,在最后一个字段中,您将获得完整的月份名称。
要查看从生日开始的月份和年份,让我们添加“yyyy”,如下面的屏幕截图所示。
让我们再次运行您的查询。
您现在将看到月份后跟一个逗号,然后是年份。
IIf() 函数
IIf() 函数是“Immediate If”的缩写,该函数将表达式计算为真或假,并为每个表达式返回一个值。它最多有三个函数参数,所有这些都是必需的。
- 第一个参数是您要计算的任何表达式。
- 下一个参数代表 true 部分,如果您的第一个表达式为 true,它可以是一个值或返回的表达式。
- 如果您的表达式为假,最后一个参数是您想要返回的内容。
例子
让我们举一个简单的例子。我们将使用查询设计创建一个新查询并添加 tblAuthors 表,然后添加以下字段。
您现在可以看到我们有三个字段 — FirstName、MiddleInitial、LastName,然后是这个串联的字段,它将所有三个字段连接在一起。让我们运行您的查询以查看此查询的结果。
现在,您可以看到查询的结果,但您还会注意到有些记录没有中间名首字母。例如,Joyce Dyer 记录没有中间名首字母,但在 FullName 字段中,您将看到实际上不需要出现的句点。所以,回到设计视图。在这里,我们将使用 IIf 函数以不同的方式连接名称。
让我们在另一个字段中写入名称并将其命名为 FullName1,然后键入 IIf 函数。
-
Immediate If 函数的第一个函数参数将是您的表达式。在表达式中,我们将查看中间的初始字段是空白还是为空。
-
下一个论点是真实的部分。因此,如果中间名首字母为空,那么我们将要显示 FirstName 和 LastName。
-
现在,对于我们的错误部分——如果 MiddleInitial 不为空,那么我们将要显示 FirstName、MiddleInitial 和 LastName。
现在让我们运行您的查询,您将看到如下屏幕截图所示的结果。