2011-12-05 7 views
0

는 MS 액세스 VBA에서이 유효합니다 나는 위의 작업과 비슷한 무언가를 얻으려고컨트롤 소스에서 IIF 내에 IIF를 중첩시킬 수 있습니까?

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

.

+3

중첩 된 IIFS는보다 쉬운 해결책이라는 경고 신호 일 수 있습니다. – Fionnuala

+1

@Remou : 좋은 지적입니다. @ 브루노 (Bruuno) : 좀 더 복잡한 시나리오 나 여러 개의'DLookup '을 포함한 쿼리 기반 접근법을위한'Switch' 함수를 생각해보십시오. – mwolfe02

답변

2

예.

Jet/ACE가 "표현식이 너무 복잡합니다"라고 불평하기 전에 최대 12 개의 문을 중첩 할 수 있습니다. VBA IIf 기능에는 비슷한 제한이 없습니다.

양식의 컨트롤 원본에서이 값을 사용하고 있기 때문에 Access에서는이 값을 Jet/ACE 쿼리의 일부인 것으로 간주하는 식 서비스를 사용하여이를 평가하므로 14 개의 중첩 제한 수준이 대다.

참고도 나는 기능으로 VBA IIf로 제트/ACE IIf 언급있다. 이러한 용어는 때로는 느슨하게 사용되지만 정확한 의미를 지닙니다. Jet/ACE에 대한 IIf 문은 true ternary operator입니다. 결론은 일반적으로 동일한 이름의 VBA 함수보다 더 효율적이며 잠재적 인 피해가 없다는 것입니다. side effects.