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