SSRS 报告中的格式化参数

Formatting Parameters in SSRS Report

我有一个 SSRS 报告,其中包含 2 个可选的文本参数,如下所示:

我正在尝试格式化一个 header 文本框,它将显示以下内容:

如果参数为 Null,那么我将默认获取月份名称和年份(因为报告将默认获取前一个月的数据)

如果设置了参数,那么我想将它们格式化为 dd MMMM YYYY(因此 20141103 将被格式化为 03 November 2014

这是我尝试在文本字段中用于表达式的代码:

= IIF(IsNothing(Parameters!StartDate.Value), 
    " for " & MonthName(Month(DateAdd("m",-1,Today))) & " " & Year(DateAdd("m",-1,Today)), 
    "From " & 
    RIGHT(Parameters!StartDate.Value,2) + " " + 
    MonthName(Month(
            LEFT(Parameters!EndDate.Value,4) + "-" +
            MID(Parameters!EndDate.Value,5,2) + "-" +
            RIGHT(Parameters!EndDate.Value,2)
        )) + " " 
    + LEFT(Parameters!StartDate.Value,4) + 
    " to " + 
    RIGHT(Parameters!EndDate.Value,2) + " " 
    + MonthName(Month(
            LEFT(Parameters!EndDate.Value,4) + "-" +
            MID(Parameters!EndDate.Value,5,2) + "-" +
            RIGHT(Parameters!EndDate.Value,2)
        )) + " " + 
    LEFT(Parameters!EndDate.Value,4))

如您所见,如果参数为 Null(允许报告在计划时默认为 运行 最后一个月的数据),那么该函数应该只显示类似 December 2014 的内容,但是如果它们输入为 YYYMMDD,那么我需要格式化它们。

我收到以下错误(在 Visual Studio 2013 的 SSRS 中):

[rsRuntimeErrorInExpression] The Value expression 
for the textrun ‘Textbox15.Paragraphs[0].TextRuns[0]’ 
contains an error: Conversion from string "--" to type 'Date' is not valid. 

我也尝试过在

左右使用 CDate
LEFT(Parameters!EndDate.Value,4) + "-" +
MID(Parameters!EndDate.Value,5,2) + "-" +
RIGHT(Parameters!EndDate.Value,2)

(例如,这些结果应该是 2014-11-01),但又一次,运气不佳

那么我哪里出错了,如果输入了这些日期,我该如何设置格式?

我会使用这样的表达方式:

=Format(CDate(Left(20150131, 4) + "-" + Mid(20150131, 5, 2) + "-" + Right(20150131, 2)), "dd MMMM yyyy")

我认为使用整数或日期参数比使用文本参数更好。因此,您可以通过执行以下操作将日期文本参数转换为日期,然后再出现在报告中:

  select cast('20150131' as date)