【发布时间】:2013-08-19 14:33:15
【问题描述】:
我一直认为,当存储过程带回一个空日期时间时,SSRS 报告会在该单元格中显示 Mindate。问题是,根据我的经验,这并不总是正确的。我不知道为什么。有时报告会显示空白,有时会提示空日期时间。这是为什么?
是否有解释其工作原理的规则或文档(有意义)?当您使用的工具不一致时,很难保持一致。我可以制作两个设置完全相同的报告。一个将显示 mindate,一个将显示空日期时间为空白。没看懂。
编辑:
首先,是的,很多人都发生过头脑风暴的事情。 https://www.google.com/search?num=50&q=ssrs+null+date+show+blank&oq=ssrs+null+date+show+blank&gs_l=serp.3...8759.9774.0.9941.10.10.0.0.0.0.152.888.8j2.10.0....0...1c.1.25.serp..8.2.166.kl2WBVx4Ijw
几乎每个结果都有人在他们想要空白时谈论思维导图。许多结果来自 Stack Overflow,所以在你开始告诉我它永远不会发生之前,请意识到你完全错了。你可能从未见过它。在我多年的饮食和数千顿饭中,我从未在食物中看到过断指。并不意味着它没有发生在某人身上......
显示最小日期的示例:
在报告中,文本框的表达式为:
=Fields!SecondaryInjuryRecordDate.Value
在占位符属性窗口中,数字格式设置为 Date->01/31/2000。 很简单,没有什么奇怪的事情发生。对吗?
在 proc 中,该列的代码是:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE l.SecondaryInjuryDXDate END AS SecondaryInjuryRecordDate
这导致只要 SecondaryInjuryDXDate 为空,就会显示 Mindate。我不得不切换到这个:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE ISNULL(l.SecondaryInjuryDXDate, '') END AS SecondaryInjuryRecordDate
...当日期为空时得到空白。
SecondaryInjuryDXDate 是一个 DATETIME 并且 二次伤害有点。
【问题讨论】:
-
根据我的经验,数据集中的 NULL 值将总是显示为空字符串,如果只是简单地放入文本框中。不过,找不到任何可以预测这种行为的官方消息来源。您是否有任何示例/复制品可以通过思维导图显示?我从未见过(当然,除非 数据集查询 会提供一个思维导图而不是一个 NULL 值)。
-
我不知道如何在这里提供报告、存储过程、函数、数据库等的工作示例。
-
这只是一个显示思维导图的示例情况。请参阅here for help on creating a minimal example 的某些东西(它针对代码,但也适用于报告之类的东西)。无论如何,如果无法重现您遇到的情况,我们很难对这个问题发表任何看法,我们只是猜测。
-
+1 @Jeroen。在数百份报告中,我从未在多个版本的 SSRS 中看到
null值显示为最小日期。我强烈怀疑您的代码,无论是在查询中还是在报告中都是这样做的。 -
你们可以继续投反对票,这不会让它不再发生。