在我SSRS报表报表可以用2个空参数运行,或者用户可以输入开始格式YYYYMMDD AMD结束日期。IIF在SSRS报告不工作
如果报告使用空参数运行,那么我有一个文本框,应该只显示Month和Year如果数据集,如果用户放入日期参数,那么文本框应显示格式为的开始和结束日期为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)
这一点也适用于它自己(的情况下,当参数丢失或空):
=" for " & MonthName(Month(DateAdd("m",-1,Today))) & " " & Year(DateAdd("m",-1,Today))
所以我知道这两个IIF选项的逻辑和代码没有问题。
当报告与空参数也应显示for October 2014
,当它与参数(如和)运行它应该表现出from 02 October 2014 to 03 November 2014
更新运行: 我似乎记得从VB6的IIF
函数返回的评估结果前评估所有表达式。这意味着,如果Parameters!EndDate.Value
是空那么错误是由就算真一部分将用于假部分抛出...
我应该如何写IIF功能正常工作?
怎么可能用它来编写Switch
这是光荣的,但不得不将它改为'Dim now As DateTime = DateTime.Now.AddMonths(-1)'以获得前一个月的名称... 非常感谢您的帮助 - 我试过了嵌套的IIF与内部的一个返回true或false,但仍然无法让它工作,所以你的解决方案是非常有帮助的 –