格式化RDLC报告中的空时间

问题描述 投票:3回答:3

我将记录集中的时间值带回RDLC报告中。 (c#Visual Studio 2013) 他们即将到来是一个可空的Timespan。 我显示为HH:MM

这一切看起来都很好,直到我得到一个null,如果没有时间记录返回null,因为它是一个可以为空的时间跨度类型。当发生这种情况时,我在RDLC报告中得到#error。我想要发生的是要么显示“00:00”,要么只是空白。

我已经尝试在RDLC中的表达式字段中添加一个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"))
c# rdlc timespan
3个回答
2
投票

尝试用空字符串替换nothing值。也使用X is nothing而不是ISNOTHING(x)

=IIF(Fields!Hours.Value is nothing,"",Format(TimeValue(Fields!Hours.Value.ToString),"hh:mm"))

无论你尝试什么,你得到#error的事实让我想知道表达式是否正确或者你是否还有其他事情,比如自动格式化或类似的东西。

请尝试在前景色上使用此表达式,并将颜色设置为Red,以防值为nullGreen(如果不是)。还要检查是否选择了一些可能导致错误的显示格式。


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)

0
投票

Thorsten Dittmar的解决方案对我有用,但我认为关键是要删除IIF中的TimeValue或DateValue表达式。

我最初做的是返回日期或时间,然后使用文本框格式选项添加格式。但是,当字段值为Null时,TimeValue或DateValue返回错误,表明iif语句无论如何都会评估两个结果。

无论如何,这适用于(对我来说):

=iif(Fields!DateRequired.Value is nothing, nothing, Format(Fields!DateRequired.Value,"HH:mm"))
© www.soinside.com 2019 - 2024. All rights reserved.