s-s-rS - 如果参数留空,默认显示所有值

Posted

技术标签:

【中文标题】s-s-rS - 如果参数留空,默认显示所有值【英文标题】:s-s-rS - Default to show ALL values if parameter is left blank 【发布时间】:2016-01-27 21:28:12 【问题描述】:

我的 s-s-rS 报告显示一个日期范围(2 个参数)和一个名为“MeterNumber”的字段的多选值参数。

我想要的是多选参数的默认值显示所有值,直到用户指定列表中的值之一。

我尝试通过将参数属性中的常规选项卡设置为“允许多个值”,并将可用值和默认值设置为来自同一数据集的相同值字段,但不行。

有什么想法吗?

【问题讨论】:

您是否为@StartDate@EndDate 参数设置了默认值? @alejandrozuleta 是的。 @StartDate 默认为当月的第一天,@EndDate 默认为当月的最后一天。 【参考方案1】:

您可以使用填充参数可用值的相同数据集来填充参数的默认值。

那么默认情况下,当用户第一次打开报表时,所有值都会被选中。

【讨论】:

这就是我拥有当前参数的方式。如果这有帮助,这是我的数据集查询。有问题的参数是 MeterNumber:SELECT AC.MeterNumber, AC.AccountName, AMR.MeterRead, AMR.ReadDate, AMR.CorrectedMMBTU, AMR.AccountID FROM tblAccountMeterRead AMR JOIN tblAccount AC ON AC.AccountID = AMR.AccountID WHERE AMR.ReadDate在@StartDate 和@EndDate 和 AMR.MeterRead '0' 之间 查询无关紧要,如果您使用相同的数据集作为可用值的默认值,则默认情况下应检查所有值。您的问题中没有提到您做错的其他事情。你能添加一些参数属性页面的截图吗?【参考方案2】:

如果您的日期开始日期和结束日期为空或为空,您可以在后端指定最小日期和最大日期(请记住 sql 中的最小日期为 1/1/1753 12:00:00 AM,最大日期为 12/31/9999 11:59:59 PM,因此您的日期格式应该是这样的)。因此,当它传递您的参数时,它将获取该最小开始日期和最大结束日期内的所有数据。

这就是你将如何在 c# 中分配最小日期时间

DateTime dateStart = SqlDateTime.MinValue.Value;

和最大日期

DateTime dateEnd = SqlDateTime.MaxValue.Value;

【讨论】:

【参考方案3】:

数据集中的 MeterNumber 是否有任何空白和/或 null 值?这可能会导致参数值出现问题。因为在你的情况下你需要多个值,所以你不能有空值。只需确保选择了允许空白值 ("") 和允许多个值。然后,确保 MeterNumber 列中没有 NULL 值。如果这样做,则转换为空字符串,即ISNULL(AC.MeterNumber, '') as MeterNumber

【讨论】:

【参考方案4】:

@Byronyk 遇到了完全相同的问题,但刚刚意识到问题出在哪里(也知道这篇文章很老了,这更适合那些偶然发现的人!)

我发现的问题是可用值中的值比默认值中的值多一个,因此它丢弃了默认选择。

一旦我意识到并添加了它,就会再次选择默认值。

我怀疑这是问题所在,因为日期正常,问题出在“MeterNumber”参数中

【讨论】:

以上是关于s-s-rS - 如果参数留空,默认显示所有值的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 多值参数

设置默认 s-s-rS 参数

如何在 s-s-rS 报告中显示提供的搜索参数?

s-s-rS 动态 - 如果父参数被隐藏,则父参数不会传递给子参数

更改前面的参数时未刷新 s-s-rS 参数值(全选)

s-s-rS - 多值参数表达式