Report Builder 3.0前向依赖关系报告参数

时间:2015-02-04 16:58:12

标签: mysql reporting-services reportbuilder3.0 query-parameters

我有一份我正在处理的报告,它将执行以下操作:

  • 首先根据用户选择的社区返回结果。
  • 过滤以根据每个地址的平方英尺数在社区内查找相似的地址。
  • 将结束日期(数据表中的列)设置为用户定义的参数,以便在查询结尾处的WHERE中使用。

相关信息存储在以下位置:

  • 社区:ub_subdivision.descr
  • 地址:ub_serv_loc_addr.location_addr
  • SqFt:arp_ops.dbo.vw_ub_serv_loc_classifications.SqFt

我已使用3个参数设置查询:

  • @Community
  • @Months
  • @address

当用户运行报告时,应该发生以下情况(按此顺序):

  1. 社区参数应填充ub_subdivision.descr中存储的值,并允许用户从该列表中选择他们想要的社区。
  2. 地址参数应填充步骤1中所选社区内的值,并允许用户从该列表中选择所需的地址。
  3. 根据所选地址,查询应存储与此地址相关的SqFt的值,并在WHERE语句中使用该值,如下所示:WHERE (arp_ops.dbo.vw_ub_serv_loc_classifications.SqFt = @Address)
  4. months参数应允许用户输入定义他们想要的数据月数。在WHERE语句的查询中调用此参数:WHERE (ub_bill_run.def_end_dt > DATEADD(m, -@Months, GETDATE()))
  5. 如果我保存数据集并在Report Builder 3.0中创建“表格报告”,它会识别各种参数并将它们加载到Parameters文件夹和数据集参数中。

    我遇到的问题是我无法更改参数属性以显示可用值并选择“从查询中获取”。如果我走这条路,并尝试运行查询,我得到一个错误,我正在使用“前向依赖”。

    我需要@Address参数来显示地址字段作为标签,但是将sqft字段存储为值。这是我知道如何做到这一点的方式,不幸的是,它似乎不起作用。

    我很感激任何人可能有的见解。

    谢谢! 约翰

2 个答案:

答案 0 :(得分:0)

有一种解决方法可以确保订单的顺序为

  • @Community
  • @Months
  • @address

将订单更改为:

  • @Community
  • @address
  • @Months

删除现有的@month并再次手动添加并保存。

我希望它对你有用。

答案 1 :(得分:0)

您不能具有基于主数据集的参数。 导致前向依赖项错误是因为您的数据集将由参数过滤,但要依赖同一数据集来查找其值集。这是一种悖论。 使用查询定义参数值集时,请确保为每个参数创建一个新的数据集。

接下来,请确保按您希望它们运行的​​顺序列出参数。在参数的数据集中,您可以使用where子句使它们按照它们运行的​​顺序相互依赖。

在此示例中:

社区的参数数据集:

SELECT DISTINCT ub_subdivision.descr
FROM  [YOUR JOINED TABLES]

为地址设置的参数数据:

SELECT DISTINCT ub_serv_loc_addr.location_addr
FROM  [YOUR JOINED TABLES]
WHERE ub_subdivision.descr IN (@Community)

为SqFt设置的参数数据:

SELECT DISTINCT SqFt
FROM  [YOUR JOINED TABLES]
WHERE ub_subdivision.descr IN (@Community)
AND ub_serv_loc_addr.location_addr IN (@Address)

您还应该为@month参数设置一个月数据集,但是它不依赖于其他参数,因此我将其留给您。

希望这会有所帮助!