2008-09-25 27 views
5

Tôi đã sau làm giá trị cho textbox của tôi trong SSRS báo cáo:Cách kiểm tra giá trị null trước khi thực hiện .AddDays() trong SSRS?

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

Nó mang lại cho tôi một "#Error" mỗi khi MyDate là null.

Làm cách nào để giải quyết vấn đề này?

UPDATE:

tôi đã viết chức năng tùy chỉnh này, nó đã thoát khỏi những sai sót, nhưng trả về ngày 31 tháng 1, 0001 khi ngày null được thông qua.

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 

@ Matt Hamilton: DateAdd (! "D", 30 tuổi, Fields MyDate.Value)

+0

Tại sao nó phải được nội tuyến? –

+0

Cuz cho đến 10 phút trước, tôi không biết về "Mã tùy chỉnh" trong SSRS :) –

Trả lời

6

Vấn đề, tất nhiên, đó là tuyên bố IIF VB của đánh giá cả hai bên bất kể kết quả. Vì vậy, ngay cả khi trường của bạn là null, nó vẫn đang đánh giá cuộc gọi "Value.DateAdd".

Nếu tôi nhớ chính xác, SSRS có chức năng "DateAdd" của riêng bạn mà bạn có thể sử dụng thay thế. Vì vậy, bạn có thể làm một cái gì đó như thế này (kiểm tra các tài liệu 'coz này là từ bộ nhớ):

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

chuyển đổi các tham số trong hàm, 30 phải là # 2 thanx –

+0

Xong! Cảm ơn Roman. –

Các vấn đề liên quan