在 RDLC 报告中格式化空时间
Formatting null time in RDLC report
我正在将记录集中的时间值带回到 RDLC 报告中。 (c# Visual Studio 2013)
他们的到来是作为一个可为空的时间跨度。
我显示为 HH:MM
这一切看起来都很好,直到我得到一个 null ,如果没有时间记录 null 是 returned,因为它是一个可以为 null 的时间跨度类型。发生这种情况时,我会在 RDLC 报告中收到#error。我想要发生的是显示“00:00”,或者只是空白。
我已经尝试在 RDLC 的表达式字段中添加一个 IFF,这样如果空值被 returned 我什么都不显示,或者“00:00”,但是两者 return 相同的结果,该字段中的#error。
=IIF(IsNothing(Fields!Hours.Value),nothing,Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
有什么想法吗?谢谢
解决方案更新:
感谢您的帮助:
这是我在我的案例中使用的最后一个表达式:
=IIF(Fields!Hours.Value.ToString = "00:00:00","",Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
您可能需要在容器中使用两个重叠的文本框,并根据“营业时间”字段的值设置可见性条件。
一个会显示您格式化的时间跨度:
= Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm")
具有可见性表达式(隐藏为真):
= IIF(IsNothing(Fields!Hours.Value), True, False)
如果您不需要在时间跨度为空的情况下显示某些值(如“-”),则不需要第二个文本框,但如果需要 - 第二个文本框将显示您的 "nothing" 字符串:
= "nothing string"
它的可见性表达式为:
= IIF(IsNothing(Fields!Hours.Value), False, True)
尝试用空字符串替换 nothing
值。还使用 X is nothing
而不是 ISNOTHING(x)
:
=IIF(Fields!Hours.Value is nothing,"",Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
无论您尝试什么,您都会得到 #error
的事实让我想知道表达式是否完全正确,或者您是否还有其他事情要做,比如自动格式化或类似的东西。
请尝试在前景色上使用此表达式,如果值为 null
,请将颜色设置为 Red
,如果不是,则设置为 Green
。还要检查是否选择了一些可能导致错误的显示格式。
Thorsten Dittmar 的解决方案对我有用,但我认为关键是删除 IIF 中的 TimeValue 或 DateValue 表达式。
我最初对 return 日期或时间执行相同的操作,然后使用文本框格式选项添加格式。但是,当字段值为 Null 时,TimeValue 或 DateValue returned 出错,建议 iif 语句计算两个结果而不管。
无论如何,这对我有用:
=iif(Fields!DateRequired.Value is nothing, nothing, Format(Fields!DateRequired.Value,"HH:mm"))
我正在将记录集中的时间值带回到 RDLC 报告中。 (c# Visual Studio 2013)
他们的到来是作为一个可为空的时间跨度。
我显示为 HH:MM
这一切看起来都很好,直到我得到一个 null ,如果没有时间记录 null 是 returned,因为它是一个可以为 null 的时间跨度类型。发生这种情况时,我会在 RDLC 报告中收到#error。我想要发生的是显示“00:00”,或者只是空白。
我已经尝试在 RDLC 的表达式字段中添加一个 IFF,这样如果空值被 returned 我什么都不显示,或者“00:00”,但是两者 return 相同的结果,该字段中的#error。
=IIF(IsNothing(Fields!Hours.Value),nothing,Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
有什么想法吗?谢谢
解决方案更新:
感谢您的帮助: 这是我在我的案例中使用的最后一个表达式:
=IIF(Fields!Hours.Value.ToString = "00:00:00","",Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
您可能需要在容器中使用两个重叠的文本框,并根据“营业时间”字段的值设置可见性条件。
一个会显示您格式化的时间跨度:
= Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm")
具有可见性表达式(隐藏为真):
= IIF(IsNothing(Fields!Hours.Value), True, False)
如果您不需要在时间跨度为空的情况下显示某些值(如“-”),则不需要第二个文本框,但如果需要 - 第二个文本框将显示您的 "nothing" 字符串:
= "nothing string"
它的可见性表达式为:
= IIF(IsNothing(Fields!Hours.Value), False, True)
尝试用空字符串替换 nothing
值。还使用 X is nothing
而不是 ISNOTHING(x)
:
=IIF(Fields!Hours.Value is nothing,"",Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
无论您尝试什么,您都会得到 #error
的事实让我想知道表达式是否完全正确,或者您是否还有其他事情要做,比如自动格式化或类似的东西。
请尝试在前景色上使用此表达式,如果值为 null
,请将颜色设置为 Red
,如果不是,则设置为 Green
。还要检查是否选择了一些可能导致错误的显示格式。
Thorsten Dittmar 的解决方案对我有用,但我认为关键是删除 IIF 中的 TimeValue 或 DateValue 表达式。
我最初对 return 日期或时间执行相同的操作,然后使用文本框格式选项添加格式。但是,当字段值为 Null 时,TimeValue 或 DateValue returned 出错,建议 iif 语句计算两个结果而不管。
无论如何,这对我有用:
=iif(Fields!DateRequired.Value is nothing, nothing, Format(Fields!DateRequired.Value,"HH:mm"))