كيفية التحقق من القيم الخالية قبل القيام بـ .AddDays() في SSRS؟
-
02-07-2019 - |
سؤال
لدي ما يلي كقيمة لمربع النص الخاص بي في تقرير SSRS:
=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))
إنه يعطيني "#Error" في كل مرة يكون فيها MyDate فارغًا.
كيف يمكنني التغلب على هذا؟
تحديث:
لقد كتبت هذه الوظيفة المخصصة، وتخلصت من الخطأ، ولكنها ترجع 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)
المحلول
المشكلة، بالطبع، هي أن عبارة IIF الخاصة بـ VB تقوم بتقييم كلا الجانبين بغض النظر عن النتيجة.لذا، حتى لو كان الحقل الخاص بك خاليًا، فإنه لا يزال يقوم بتقييم استدعاء "Value.DateAdd".
إذا كنت أتذكر بشكل صحيح، فإن SSRS لديه وظيفة "DateAdd" الخاصة به والتي يمكنك استخدامها بدلاً من ذلك.لذا يمكنك القيام بشيء كهذا (راجع الوثائق لأن هذا من الذاكرة):
=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
لا تنتمي إلى StackOverflow