我一直认为,当存储过程带回一个空的日期时间时,SSRS报告会在该单元格中显示出注意。问题是,根据我的经验,这并非总是如此。我无法弄清楚为什么。有时,报告将显示空白,有时会考虑空日期时间。这是为什么?
是否有解释其工作原理的规则或文档(有意义)?当您使用的工具不一致时,很难保持一致。我可以制作两个完全相同的报告。一个将显示mindate,一个将显示空白日期时间。我不明白。
编辑:
当他们想要一片空白时,几乎每个结果都有人在谈论思想。许多结果来自Stack Overflow,所以在你开始告诉我它永远不会发生之前,要意识到你是错的。你可能从未见过它。在我多年的饮食和数千餐中,我从来没有在食物中看到过断指。并不意味着没有发生在某人身上......
显示最小日期的示例:
在报告中,文本框的表达式为:
=Fields!SecondaryInjuryRecordDate.Value
在占位符属性窗口中将数字格式设置为Date-> 01/31/2000。 很简单,没有什么奇怪的事情发生在那里。 RIGHT?
在proc中,该列的代码是:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE l.SecondaryInjuryDXDate END AS SecondaryInjuryRecordDate
这导致在SecondaryInjuryDXDate为null时显示。我不得不改用这个:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE ISNULL(l.SecondaryInjuryDXDate, '') END AS SecondaryInjuryRecordDate
...当日期为空时获得空白。
SecondaryInjuryDXDate是DATETIME和 SecondaryInjury有点。
答案 0 :(得分:2)
在SSRS中,默认情况下,NULL DateTime值将表示为空字符串。
如果数据格式应用于该值,则将使用MIN DateTime值代替空值,例如:将DateTime转换为ShortDate,如下所述:
在占位符属性窗口中将数字格式设置为Date-> 01/31/2000。很简单,没有什么奇怪的事情发生在那里。 RIGHT?
为避免这种情况,必须将列值包装在表达式中以有条件地应用所需的格式:
=IIf(IsNothing(Fields!DateTimeField.Value), "", FormatDateTime(Fields!DateTimeField.Value, DateFormat.ShortDate))
答案 1 :(得分:1)
在文本框表达式中使用类似的内容:
=IIf(IsNothing(Fields!DateTime.Value), "", Fields!DateTime.Value)
答案 2 :(得分:1)
看起来没有关于此的文档。接下来最好的事情就是根据我们的集体经验制作这个Q& A文件。
假设问题:“在显示带有NULL值的DATETIME时,SSRS会做什么?”......
...答案是它会显示一个空字符串。没有可重现的场景,其中NULL值将显示为其他任何内容,除非您自己做了一些工作,例如:
IIF(Fields!MyDateTime.Value Is Nothing, "01-01-1900", Fields!MyDateTime.Value)
答案 3 :(得分:1)
SQL查询中返回的每个字段都会分配一个数据类型。通常,您希望将日期作为日期从SQL返回,而不是作为字符串。 (不要在SQL中将日期格式化为字符串。尽可能靠近表示层。)
所以在你的查询中不是这样的:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE l.SecondaryInjuryDXDate END AS SecondaryInjuryRecordDate
我会尝试使用:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN CAST( NULL AS DateTime ) ELSE l.SecondaryInjuryDXDate END AS SecondaryInjuryRecordDate
请参阅SQL cast datetime,了解您为何获得0投票日期的原因。
答案 4 :(得分:0)
当格式化整个列(例如FormatDateTime(field,DateFormat.ShortDate))时,我确实找到了-SSRS会将空白字段格式化为01/01/0001。仅供参考。