IIf 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

返回两部分之一,具体取决于表达式的计算结果。

可以在任何可以使用表达式的地方使用 IIf 。 用于 IIf 确定另一个表达式为 true 还是 false。 如果该表达式为 true, IIf 则返回一个值。 如果为 false, IIf 则返回另一个值。 指定返回的值 IIf 。

查看一些示例

语法

IIf(expr, truepart, falsepart)

IIf该函数语法具有下列参数:

参数 说明
expr 必需。 要计算其值的表达式。
truepart 必需。 如果为 True,则expr返回的值或表达式。
falsepart 必需。 如果为 False,则expr返回的值或表达式。

备注

IIf 始终同时 truepart 计算 和 falsepart,即使只返回其中一个。 由于此行为,请注意不需要的副作用。 例如,如果评估 falsepart 结果为除以零的错误,则即使 expr 为 True也会出现错误。

示例

在窗体或报表上使用IIf

假设表包含 Customers 名为 CountryRegion的字段。 在表单中,你想要显示意大利语是否是联系人的第一语言。 可以添加控件并在 IIf 其 Control Source 属性中使用:

=IIf([CountryRegion]="Italy", "Italian", "Some other language")

在“窗体视图”中打开窗体时,只要出现 的CountryRegionItaly值,就会显示Italian该控件。 只要有任何其他值,它就会CountryRegion显示Some other language。

IIf在复杂表达式中使用

可以在语句的任何 IIf 部分使用任何表达式。 还可以嵌套 IIf 表达式,以便计算一系列依赖表达式。 若要继续前面的示例,您可能希望测试几个不同的 CountryRegion 值,然后根据该值显示相应的语言:

=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))

text Some other language 是最 falsepart 内部 IIf 函数的参数。 由于每个嵌IIf套函数都是falsepart包含它的函数的IIf参数,因此仅当expr函数的所有IIf参数计算结果False为 时才返回文本Some other language。

再举一个例子,假设你在图书馆工作。 图书馆数据库有一个名为的 Check Outs 表,其中包含名为 Due Date的字段,其中包含特定书籍的到期日期。 您可以使用控件属性中的Control Source函数创建一个IIf窗体来显示控件中已签出项目的状态:

=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))

在“窗体视图”中打开窗体时,该控件将显示 的Due Date值是否小于当前日期,Due today如果等于当前日期,Not Yet Due否则也会显示OVERDUE该控件。

注意

若要在函数的IIf参数中使用expr逻辑运算符(如 And OROr),必须将逻辑表达式包含在 Eval 函数中。 请参阅下面的示例表。

IIf在查询中使用

该 IIf 函数通常用于在查询中创建计算字段。 语法相同,只是在查询中必须在表达式前面加上字段别名和冒号 (:) 而不是等号 (=) 。 若要使用上述示例,请在查询设计网格的 “字段 ”行中键入以下内容:

Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")

在本例中, Language: 是字段别名。

有关创建查询和计算字段的详细信息,请参阅 创建简单的选择查询。

IIf在 VBA 代码中使用

注意

以下示例演示如何在Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个术语。

此示例使用该 IIf 函数计算 TestMe 过程的 CheckIt 参数,如果数量大于 1000,则返回该单词 Large 。 否则,它将返回单词 Small。

Function CheckIt(TestMe As Integer)
    CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

更多示例

  1. 表达式:

    =IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))
    

    结果:如果为 "ORD",则[AirportCode]返回 "Chicago"。 否则,如果为 "ATL",则[AirportCode]返回"Atlanta"。 否则,如果为 "SEA",则[AirportCode]返回"Seattle"。 否则,返回 "Other"。

  2. 表达式:

    =IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))
    

    结果:如果早于今天的日期,则 [ShipDate] 返回 "Shipped"。 否则,如果等于今天的日期,则 [ShipDate] 返回 "Shipping today"。 否则,返回 "Unshipped"。

  3. 表达式:

    =IIf([PurchaseDate]<#1/1/2008#,"Old","New")
    

    结果:如果早于 1/1/2008,则[PurchaseDate]返回"Old"。 否则,返回 "New"。

  4. 表达式:

    =IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")
    

    结果:如果介于 12 和 15 之间且[Amps]介于 0.25 和 0.3 之间,则[Volts]返回 "OK"。 否则,返回 "Out of calibration"。

  5. 表达式:

    =IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")
    

    结果:如果为 "Canada"、 或 "Mexico""USA",则[CountryRegion]返回"North America"。 否则,返回 "Other"。

  6. 表达式:

    =IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))
    

    结果:如果为 90 或更大,则 [Average] 返回 "A"。 否则,如果为 80 或更高,则 [Average] 返回 "B"。 否则,如果为 70 或更高,则 [Average] 返回 "C"。 否则,如果为 60 或更大,则 [Average] 返回 "D"。 否则,返回 "F"。

注意

如果使用该 IIf 函数在查询中创建计算字段,请将等号 (=) 替换为字段别名和冒号 (:) 。 例如,Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))。