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

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

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

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

有什么想法吗?

【问题讨论】:

  • 您是否为@StartDate@EndDate 参数设置了默认值?
  • @alejandrozuleta 是的。 @StartDate 默认为当月的第一天,@EndDate 默认为当月的最后一天。

标签: sql-server reporting-services ssrs-2008 reporting ssrs-2008-r2


【解决方案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”参数中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2018-06-12
        • 1970-01-01
        相关资源
        最近更新 更多