2011-12-05 46 views
0

是在MS Access VBA这有效:你可以在控制源中的IIF中嵌套IIF吗?

iif ([company] = "starbucks", "retail", iif ([item] <> "", "DLookup(....)", "")) 

我试图得到类似上述工作的东西。

+3

嵌套的IIfs可能是一个警告信号,有一个更简单的解决方案。 – Fionnuala

+1

@Remou:好点。 @Bruno:如果您发现自己包含多个“DLookup”,请考虑用于适度复杂场景的“Switch”函数或基于查询的方法。 – mwolfe02

回答

2

是的。

在Jet/ACE抱怨“Expression太复杂”之前,您最多可以嵌套14 IIf语句。 VBA IIf功能没有类似的限制。

由于您在窗体的控件源中使用了它,因此Access将使用其表达式服务(基本上将它视为Jet/ACE查询的一部分)对其进行评估,因此14个级别的嵌套限制将会应用。

还请注意,我提到了喷气/ ACE IIf声明和VBA IIf作为功能。虽然这些术语有时使用松散,但它们具有确切的含义。 Jet/ACE的IIf声明是真实的ternary operator。结果是它通常比具有相同名称的VBA功能更高效,并且不会受到潜在的side effects的影响。