返回两部分之一,具体取决于表达式的计算结果。
可以在任何可以使用表达式的地方使用 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
更多示例
表达式:
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))结果:如果为
"ORD",则[AirportCode]返回"Chicago"。 否则,如果为"ATL",则[AirportCode]返回"Atlanta"。 否则,如果为"SEA",则[AirportCode]返回"Seattle"。 否则,返回"Other"。表达式:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))结果:如果早于今天的日期,则
[ShipDate]返回"Shipped"。 否则,如果等于今天的日期,则[ShipDate]返回"Shipping today"。 否则,返回"Unshipped"。表达式:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")结果:如果早于
1/1/2008,则[PurchaseDate]返回"Old"。 否则,返回"New"。表达式:
=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"。表达式:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")结果:如果为
"Canada"、 或"Mexico""USA",则[CountryRegion]返回"North America"。 否则,返回"Other"。表达式:
=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"))。