كيفية التحقق من القيم الخالية قبل القيام بـ .AddDays() في SSRS؟

StackOverflow https://stackoverflow.com/questions/136770

سؤال

لدي ما يلي كقيمة لمربع النص الخاص بي في تقرير 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"))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top