【问题标题】:SSRS report parameter : parameter's value change upon other parameter's value selected eventSSRS 报告参数:参数值在其他参数值选择事件时发生变化
【发布时间】:2016-02-20 03:12:51
【问题描述】:

这是我的场景,

  • 我有一个报告,其中包含两个子报告。
  • 每个子报表的可见性取决于一个参数 (A) 值。
  • 从所有可用值中选择参数 (A) 值的每个事件都会使用相同的数据集刷新其他两个参数的 (B,C) 可用值列表,但与刷新事件之前不同。
  • B 和 C 将使用列表中的一个值作为其默认值。
  • 默认值由 B,C 的默认属性中的表达式控制
  • 再次更改 A 时,循环重复。

A、B、C用于指定查询的日期范围。

A 是从两个选项(“每周”、“每月”)中选择的选项。默认值为“每周”。

  • 'WEEKLY' 将本年度的工作周列表返回给 B 和 C. subreport1 显示。 subreport2 隐藏。
  • 'MONTHLY' 会将当年的月份列表返回给 B 和 C。subreport1 隐藏。显示子报表 2。

B和C的默认值表达式为=IIF(Parameters!A.Value = "WEEKLY",datepart("WW",today()),IIF(Parameters!A.Value = "MONTHLY",datepart("M",today()),0))

现在加载时,A 是“每周”,B 和 C 具有正确的默认值 datepart("WW",today())。那么……

  1. 我将 A 更改为 'MONTHLY',B 和 C 获得正确的月度数据并具有正确的默认值。datepart("M",today())

  2. 然后我改回 'WEEKLY' B 和 C 得到正确的每周数据但仍然保留第一个开关的默认值(这是 datepart("M",today()) 而不是假定值 @987654325 @)

如何让 B 和 C 获得从 A 中选择的每个类别的正确默认值?

编辑

  • 所有子报表都具有与主报表相同的参数集。
  • 我正在使用查询来获取 B 和 C 的列表。
  • 到目前为止,查询在生成列表时工作正常。
  • 查询是一个过程,它接受参数A,然后返回当前年份是工作周还是月的记录集。
  • 每个子报表的参数定义都与主报表中的相同。

我其实不太了解如何使用子报表。在这里尝试并出错。 因此,当 ssrs 提示我未为某些子报表定义某些参数定义时,我将子报表中的参数与主中的参数匹配,在子报表属性的参数选项卡上。这是我在构建此报表时遇到的唯一错误。

【问题讨论】:

  • B和C的默认值,当A是'MONTHLY'时,是否也是'WEEKLY'列表中的可能值?不要使用表达式来更改默认值,而是尝试通过表达式在 B 和 C 中设置实际选择的值。请记住,这意味着如果 B 和 C 值发生变化,您将无法刷新整个报告,否则您每次都会重置该值。
  • 的值不同,'WEEKLY' 会为 B 和 C 提供最新的工作周值,同样的 'MONTHLY'。我尝试使用日期列表中的 max() 值设置默认值。 .我收到此错误Fields cannot be used in report parameter expression。我从查询中获取列表。

标签: reporting-services ssrs-2008


【解决方案1】:

因此,经过一番折腾后,我设法从我们的参数中重现了您需要的行为。抱歉,如果这超出了您已经完成的工作,或者无法正常工作,但它的行为符合我的配置 (SSRS 2008 R2) 的预期。

  • 参数 A 设置为标签和值的可用值“WEEKLY””MONTHLY”,默认值“WEEKLY”

  • 然后将参数 B 设置为标签的可用值、值和默认值的值都设置为您的表达式

    =IIF(Parameters!A.Value =         
        "WEEKLY",datepart("WW",today()),IIF(Parameters!A.Value = 
        "MONTHLY",datepart("M",today()),0))
    

    可用值

    默认值

  • 这对参数C都是重复的

现在,当我第一次运行报告时,我面临以下问题

当我选择每月时,我得到

然后当我再次选择每周时,我得到

只有当我选择每月并选择“查看报告”时,报告的可见性才会改变

我不确定您在提出问题时是否填写了所有这些步骤 - 您可能已经完成了 - 但值得一试上述内容,看看行为是否符合您的要求

有任何问题,请告诉我,我会尽力提供帮助

【讨论】:

  • 我在上面的帖子中添加了更多步骤。希望这会有所帮助。
  • 不,现在更加混乱了。我认为问题在于生成值,而不是与子报告生成有关?
  • 因为之前认为它可能与为什么参数 stale 没有刷新到新值有关。但看起来它没有。更像是持久缓存之类的其他东西。然后我找到了这个博客,但我并没有真正理解这里写的解决方案。希望有人能澄清一下:[链接文本](msbitips.wordpress.com/2015/01/28/…)
  • 所以您是说传递给子报表的值不正确?这是因为当你改变 A 时它们没有改变?
  • 为了使这一点更清楚,所以我将报告剥离为没有子报告的简单报告。它与子报表无关,只关心参数默认值。所以现在一份没有子报告的报告。我再次通过更改 A 产生问题,第一次更改为 B 和 C 提供正确的默认值。将 A 更改回初始值,B 和 C 不会刷新为正确的值。问题是取决于 A 的参数 B、C 的默认值不会刷新为新值。很抱歉造成混乱。
猜你喜欢
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
相关资源
最近更新 更多