我将记录集中的时间值带回RDLC报告中。 (c#Visual Studio 2013)
他们即将到来是一个可以为空的Timespan
我显示为HH:MM
这一切看起来都很好,直到我得到一个null,如果没有时间记录返回null,因为它是一个可以为零的时间跨度类型。当发生这种情况时,我在RDLC报告中得到#error。我想要发生的是显示“00:00”,或者只是空白。
我已经尝试在RDLC中的Expression字段中添加IFF,这样如果返回null,则不显示任何内容,或“00:00”,但两者都返回相同的结果,字段中的#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"))
答案 0 :(得分:2)
尝试用空字符串替换nothing
值。也可以使用X is nothing
代替ISNOTHING(x)
:
=IIF(Fields!Hours.Value is nothing,"",Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))
无论你尝试什么,你得到#error
的事实让我想知道表达式是否正确,或者你是否还有其他事情,比如自动格式化或类似的东西。
请尝试在前景色上使用此表达式,并在值为Red
时将颜色设置为null
,如果值不是,则设置为Green
。还要检查是否选择了一些可能导致错误的显示格式。
答案 1 :(得分:1)
您可能需要在容器中使用两个重叠的文本框,其中的可见性条件基于“小时”字段的值。
可以显示格式化的Timespan:
= Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm")
使用可见性表达式(隐藏为True):
= IIF(IsNothing(Fields!Hours.Value), True, False)
如果在Timespan为null时不需要显示某些值(如“ - ”),则不需要第二个文本框,但如果这样做 - 第二个文本框将显示“无”字符串:
= "nothing string"
它的可见性表达式为:
= IIF(IsNothing(Fields!Hours.Value), False, True)
答案 2 :(得分:0)
Thorsten Dittmar的解决方案对我有用,但我认为关键是要删除IIF中的TimeValue或DateValue表达式。
我本来是要返回日期或时间,然后使用“文本框格式”选项添加格式的。但是,当字段值为Null时,TimeValue或DateValue返回错误,则建议iif语句对两个结果均进行评估。
无论如何,这对我来说有效:
=iif(Fields!DateRequired.Value is nothing, nothing, Format(Fields!DateRequired.Value,"HH:mm"))