【问题标题】:Deploying report that's populating DataSet based on a parameter passed into the ReportViewer根据传递给 ReportViewer 的参数部署填充 DataSet 的报表
【发布时间】:2012-11-19 15:06:50
【问题描述】:

我不熟悉报告服务和在 aspx (C#) 中使用报告查看器控件。我目前正在开展一个项目,我需要根据地区填充报告。我正在使用 SQL Express 2008 R2。

我在报表中创建了一个区域参数,该参数使用以下查询填充了数据集:

SELECT RegionGUID, RegionDescription
FROM   utRegion

然后,这将创建一个包含可用值的 DropDownList,然后我在我的主报表数据集中使用它来根据所选区域获取我的结果。

我遇到的问题是,我的应用程序中的用户被分配到区域,并且根据谁登录到我的应用程序,应该限制哪些区域可通过报告服务获得。我可以通过报表查看器将参数从我的应用程序传递到报表服务中的报表,但是当我尝试向我的数据集添加一个用于填充区域 DropDownList 的参数时,我在部署时收到以下错误:

报表“/报表名称”的定义无效

预览时出现以下错误:

报告参数“RegionGUID”具有取决于报告参数“RegionGUID”的 DefaultValue 或 ValidValue。前向依赖无效。

我对 region 参数的查询:

SELECT RegionGUID, RegionDescription
FROM   utRegion
WHERE  (RegionGUID = @RegionGUID)

【问题讨论】:

  • 如果您在部署时收到错误“报告无效”,则可能是另一个问题。很可能您的数据集中的字段已更改,但报表中的某些单元格或其他项目仍在引用已编辑/已删除的字段。它没有提供有关定义有什么问题的更多详细信息(也许如果您运行预览)?
  • 我已经用错误的更多细节更新了这个问题。我没有在报告正文的任何​​地方引用该参数,我只在用于填充 RegionDropDownList 和报告数据集的数据集中使用它

标签: c# asp.net reporting-services ssrs-2008


【解决方案1】:

我在以下网站上找到了我的问题的解决方案: http://www.sqlservercentral.com/Forums/Topic306513-150-1.aspx

正如 Jason Selburg 在上面的链接中所说,参数列表的顺序似乎很重要。

为了使我的应用程序正常工作,我做了以下工作:

  1. 删除了我现有的 RegionGUID 参数
  2. 添加了一个名为 UserAssignedRegion 的新参数,其可用值未指定,可见性为 hidden
  3. 重新添加了我的 RegionGUID 参数(可见性:可见)并将其设置为使用以下查询:

查询:

 SELECT RegionGUID, RegionDescription
 FROM utRegions
 WHERE RegionGUID = @UserAssignedRegion

【讨论】:

    【解决方案2】:

    您应该检查@RegionGUID 参数的属性,特别是 DefaultValue 或 ValidValue 选项卡。两者之一或两者都可能取决于在其查询中使用参数本身的数据集。 使用参数本身时,您不能查询参数的默认值或有效值。

    对可用值的典型查询是:

    SELECT DISTINCT  RegionGUID -- For value
                    ,RegionDescription -- For label
    FROM utRegion
    -- No where clause, you can't or need to use the parameter itself
    

    默认值的查询可能是相同的(可能只使用 First(...) 值)、NULL 或基于不同的数据集(not 也使用参数本身)

    【讨论】:

    • 感谢您的帮助杰罗恩
    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2013-09-12
    • 1970-01-01
    • 2017-07-27
    • 2013-05-07
    相关资源
    最近更新 更多