2008-09-25 3 views
5

나는 SSRS 내 텍스트 상자의 값으로 다음 한 신고 :SSRS에서 .AddDays()를하기 전에 null 값을 확인하는 방법?

=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy")) 

그것은 나에게 "# 오류"를 때마다 MyDate가가 null 제공합니다.

어떻게 해결할 수 있습니까?

UPDATE : 널 (null) 날짜가 전달 될 때

내가이 사용자 정의 함수를 작성

이,이 1 월 31 일 0001 오류를 제거하지만, 반환되었다.

Public Shared Function NewDate(myDate as DateTime, days as integer) AS string 
IF ISNOTHING(myDate) OR ISDBNULL(myDate) Then 
    NewDate = "  " 
ELSE 
    NewDate = Format(myDate.AddDays(days), "MMMM dd, yyyy") 
END IF 
End Function 

는 @ 매트 해밀턴 : DateAdd 함수 (! "D", 30, 필드 MyDate.Value)

+0

인라인해야하는 이유는 무엇입니까? –

+0

사촌 최대 10 분 전 SSRS에서 "사용자 정의 코드"에 대해 몰랐어요 :) –

답변

6

문제는 물론, VB의 IIF 문은 결과에 상관없이 양쪽을 평가하는 것입니다. 따라서 필드가 null 인 경우에도 여전히 "Value.DateAdd"호출을 평가 중입니다.

올바르게 기억한다면 SSRS에는 대신 사용할 수있는 자체 "DateAdd"기능이 있습니다. 그래서 다음과 같이 할 수 있습니다. (메모리에서 가져온 문서를 확인하십시오.)

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy")) 
+0

함수의 매개 변수를 전환하면 30은 # 2이어야합니다. thanx –

+0

완료했습니다! 로마 고마워. –

관련 문제