В моем отчете SSRS отчет может работать с 2 параметрами Null или пользователи могут вводить даты начала и окончания даты в формате YYYYMMDD.IIF в SSRS Отчет не работает
Если отчет работает с параметрами Null, у меня есть текстовое поле, которое должно показывать только месяц и год, если набор данных, если пользователи ввели параметры даты, тогда текстовое поле должно отображать начальную и конечную даты, отформатированные как DD MMMM YYYY, как показано ниже
From 02 October 2014 to 03 November 2014
Но несмотря на попытки в течение нескольких часов, я не имею никакого успеха, получая функцию IIF
в выражении для текстового поля для работы.
Вот основной код:
= IIF(IsNothing(Parameters!StartDate.Value),
" for " & MonthName(Month(DateAdd("m",-1,Today))) & " " & Year(DateAdd("m",-1,Today)),
"From " &
RIGHT(Parameters!StartDate.Value,2) + " " +
MonthName(CInt(Mid(Parameters!StartDate.Value,5,2))) & " " &
LEFT(Parameters!StartDate.Value,4) &
" to " &
Right(Parameters!EndDate.Value, 2) + " " &
MonthName(CInt(Mid(Parameters!EndDate.Value,5,2))) & " " &
Left(Parameters!EndDate.Value, 4)
)
вещь ниже работает на своем собственном:
"From " & Right(Parameters!StartDate.Value, 2) + "-" +
MonthName(CInt(Mid(Parameters!StartDate.Value,5,2))) & "-" &
Left(Parameters!StartDate.Value, 4)
&
" to " &
Right(Parameters!EndDate.Value, 2) + "-" &
MonthName(CInt(Mid(Parameters!EndDate.Value,5,2))) & "-" &
Left(Parameters!EndDate.Value, 4)
и это работает на своем собственном (для случая, когда параметры отсутствуют или Null):
=" for " & MonthName(Month(DateAdd("m",-1,Today))) & " " & Year(DateAdd("m",-1,Today))
Так что я знаю, что нет никаких проблем с логикой и кода для двух вариантов IIF.
При выполнении отчета с нулевыми параметрами он должен показать for October 2014
и когда он запускается с параметрами (например, как и) он должен показать from 02 October 2014 to 03 November 2014
Update: Кажется, я помню из VB6, что функция IIF
оценивает все выражения перед возвратом оцененного результата. Что это означает, что если Parameters!EndDate.Value
является Null, то выдается ошибка ложной части, даже если Истинная часть будет использоваться ...
Как я должен написать, что функция IIF работать правильно?
Как это может быть написано с использованием Switch
Это великолепно, но пришлось изменить его на 'Dim now As DateTime = DateTime.Now.AddMonths (-1)', чтобы получить имя предыдущего месяца ... Большое спасибо за вашу помощь - я попробовал вложенное IIF с внутренним, возвращающее true или false, но все равно не может заставить его работать, поэтому ваше решение очень полезно –