2010-05-11 5 views
1

시작, 끝 (날짜) 및 길이 (숫자, 공백 일 수 있음) 테이블에 3 개의 필드가 있습니다. 더 시작, 끝 또는 길이가없는 경우스위치가 #error를 일으켰습니다. 왜 고칠 수 있습니까?

SELECT Switch((g.length<>0) And IsDate(g.end),DateAdd("m",g.length,g.start)) AS field FROM table g 

, 액세스 빈 표시
내 목표는 내가 가지고 ... 시작과 끝이 존재하지 않는 길이를 사용하여 종료 날짜를 계산하는

입니다 - 이건 괜찮아. 끝이 없지만 시작 및 길이가 정상이면 계산 된 날짜가 표시됩니다. 다시 한 번 표시됩니다. BUT 끝이 없거나 길이가 있지만 시작 부분이 있으면 #Error가 표시됩니다.

이유를 모르겠지만 해결할 수 없습니다. 끝이없는 경우

답변

0

하지만 시작하고 길이가 좋아, 계산 된 날짜가 해당 지점에 대한 특정 있습니까

주심입니까? 시작 및 길이에 대한 값을 사용하여 쿼리를 시도하지만 끝에 대한 값이없는 경우 "필드"에 대해 Null을 얻습니다. 또한

, 당신은이 조건이 참일 때 DateAdd 함수 함수를 호출하고 있습니다 :

이 사실로 해당 조건 위해서는
g.length<>0) And IsDate(g.end) 

, g.end 이미 유효한 날짜를 포함 할 것입니다 ...하지만 나는 이 아니라고 생각했다.은 이미 g.end 값을 가지고있을 때 계산을 수행하려고한다. 나는 혼란스러워.

다른 접근 방법을 시도해 보겠습니다. 이 쿼리가 원하는 것을 반환하면 좋습니다. 도움이되지 않는다면 왜 그것이 틀린 지 이해할 수있게 도와주세요.

SELECT 
    d.start, 
    d.end, 
    d.length, 
    IIf(IsDate(d.end), d.end, 
    IIf(Nz(d.length)>0, DateAdd("m", d.length, d.start), Null)) AS field 
FROM table AS d; 
+0

네, 무슨 뜻인지 알고 있습니다. IIf 솔루션은 조금 더 우아 해 보이며 완벽하게 작동합니다. 어쩌면 나는 늦은 밤을 마무리해야합니다! 감사합니다. – Chris

관련 문제