SSRS 报告中的格式化参数
Formatting Parameters in SSRS Report
我有一个 SSRS 报告,其中包含 2 个可选的文本参数,如下所示:
- 开始日期,文本,允许为空,格式 YYYYMMDD
- 结束日期,文本,允许为空。格式 YYYYMMDD
我正在尝试格式化一个 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)
我有一个 SSRS 报告,其中包含 2 个可选的文本参数,如下所示:
- 开始日期,文本,允许为空,格式 YYYYMMDD
- 结束日期,文本,允许为空。格式 YYYYMMDD
我正在尝试格式化一个 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.
我也尝试过在
左右使用 CDateLEFT(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)