【发布时间】: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())。那么……
我将 A 更改为 'MONTHLY',B 和 C 获得正确的月度数据并具有正确的默认值。
datepart("M",today())然后我改回 '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