格式化SSRS表达式中的小时/分钟

时间:2015-01-21 21:39:25

标签: datetime reporting-services ssrs-2008

我试图通过SSRS中的表达式将两个单独的日期/时间字段组合到一个文本框中。

我的表达是:

=Format(Fields!EarlyShiftStart.Value,"hh:mm tt") & "-" & Format(Fields!LateShiftEnd.Value,"hh:mm tt")

报告中看起来是正确的:

Drive_Times

但是我在预览报告时收到警告:

  

警告1 [rsRuntimeErrorInExpression]的值表达式   textrun'Textbox49.Paragraphs [0] .TextRuns [0]'包含错误:输入   字符串格式不正确

不确定为什么会出现此警告,因为它看起来是正确的。想法?

1 个答案:

答案 0 :(得分:0)

我不确定,但似乎从数据库中获取了错误的输入字符串。我最好的猜测是,你的情况有2个原因发生了这种情况    1)数据中的某些位置可能会显示null值。 如果你想避免警告,我会建议你使用表达式,

 =Format(IIF(IsNothing(Fields!EarlyShiftStart.Value),"00:00",Fields!EarlyShiftStart.Value),"hh:mm tt") & "-" & Format(IIF(IsNothing(Fields!LateShiftEnd.Value),"00:00",Fields!LateShiftEnd.Value),"hh:mm tt")

这将过滤掉传入的NULL值。

2)您正在将这两个值与-连接起来,这可能是您将值格式化为Time然后与string值连接的原因。因此,请尝试将表达式更改为

 =CStr(Format(Fields!EarlyShiftStart.Value,"hh:mm tt")) & "-" & CStr(Format(Fields!LateShiftEnd.Value,"hh:mm tt"))

这会强制将时间值转换为字符串,然后对其进行控制。

如果所有值格式正确,我还建议您查看传入值。因此,您可以相应地更改表达式。