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