【问题标题】:Default Values for Parameter not Working in SSRS 2008 R2参数的默认值在 SSRS 2008 R2 中不起作用
【发布时间】:2013-09-30 20:12:25
【问题描述】:

我有一个报告 (BIDS SSRS 2008 R2),它有一个参数,允许用户从列表中选择多个值(比如说销售区域)。

不过,我想要,因为列表很长(大约 15 个可能的值),默认情况下选择了最常用的 2 个值。

我在 Parameter Properties >> Default Value 对话框中配置它,当我在预览模式下运行报告时它可以工作,这意味着检查默认值。

但是,当我部署它并使用 IE9(或 Chrome)运行它时,它不起作用。

有什么想法吗?

【问题讨论】:

    标签: reporting-services bids


    【解决方案1】:

    我猜你的构建很糟糕,你正在部署并且没有从你所做的更改中得到更新,或者它没有覆盖一个值。您可以做一些事情来确保存在默认参数值。

    1. 转到服务器上发布的报告并单击右侧的下拉箭头并选择“管理”。现在选择左侧窗格中的“参数”。在“有默认值”列(2008R2 及更高版本的左起第 3 个)下,应选中它。然后在“默认值”下,它要么是特定的显式输入,要么会说“基于查询”,这意味着它从数据集或类似方式中获取其值。如果这与您期望的值不同并且很明确,您可以在此处进行更改。

    2. 1234563找到您报告的 DATA 文件并将其删除。请注意,这不是报告本身,而是类似于“report.rdl.data”的文件。这不是最有可能影响构建的步骤,而只是预览,但是我们希望在重建后看到预览的样子。转到您的报告项目并选择“清理”,然后选择“重建”,以确保除了您明确删除的文件之外,您还删除了 bin 中的所有数据文件。 Rebuild 现在将根据说明构建所有文件。现在单击报告上的预览,验证它是否与默认值一致。再次发布并观察。
    3. 如果这仍然没有更改报告,我猜想更新不会进行。我会将服务器上的报告重命名为“report_old”并尝试再次发布。

    4. 如果还是不行,我会检查我们想要的发布位置是否有效并且我们正在正确部署,并且任何参数都没有从未设置为“不覆盖”的共享数据集中获取数据,或者由于配置设置而导致发布停止的奇怪边缘情况。

    SSRS 过去对我有过奇怪的问题,即我的文件受源代码控制,然后系统不想自己更新参数。通常,这可以通过重建来解决,但有时确实需要发布新的二进制文件。

    【讨论】:

    • 您的第一个选项解决了这个问题。谢谢!
    • 绝对的救星。这仍然令人不安,因为我在 rdl 文件(即 XML)中对此进行了编程。
    【解决方案2】:

    这周我看到了同样的事情,结果证明是因为我的多值参数的“默认列表”中有一些值有时不在数据选择中——在我的例子中,默认列表的值是对于我可能选择的某些日期无效。

    这让我很着迷:SSRS 在开发预览期间允许在默认列表中使用无效值,但不允许在生产环境中使用它们。

    在我的示例中,报表是在报表生成器中开发的。当我在报表生成器中对报表进行“运行”(预览)时,按照设计,默认列表值的列表参数复选框被选中。但是当我保存报表并以用户的方式运行它时——从 Reporting Services 浏览器页面运行报表——然后没有选择任何值——没有默认值。

    然后,为了解决这个问题,我采用了所有选择标准,并将它们应用于默认列表——确保“默认值”仅包含“可用值”中的值——然后是默认值在 Report Builder 开发和 SSRS 生产中都被选中。

    示例:假设我对“可用值”的选择查询是:

    SELECT Type
    FROM MyTable
    WHERE Date <= @BEG_DATE
      AND Date >= @END_DATE
    

    并假设,使用 2013 年 1 月 1 日和 2013 年 12 月 31 日作为日期,以上返回 'A','B','C','X','Y','Z' 为值列表,供用户选择(显示为复选框)。

    现在,假设我对“默认值”的选择查询是:

    SELECT Type
    FROM MyTable
    WHERE Type IN ('A','B','G','H') 
    

    此示例中的问题是,对于日期 2013 年 1 月 1 日和 2013 年 12 月 31 日,默认值“G”和“H”不是有效值。

    此示例中的修复方法是在“默认值”查询中添加到“WHERE”子句。它变成:

    SELECT Type
    FROM MyTable
    WHERE Type IN ('A','B','G','H') 
      AND Date <= @BEG_DATE
      AND Date >= @END_DATE
    

    现在,当针对日期 1/1/2013 和 12/31/2013 运行此默认值查询时,“G”和“H”会退出默认值,只留下“A”和“B” " 作为默认值。 “A”和“B”都可以选择,因为它们也都在参数的可用值中。因此,默认多值参数现在可以工作,无论是在开发中,还是在保存报告后(部署后、发布后)并从浏览器运行它。

    【讨论】:

    • 这个解决方案对我有用!谢谢!!
    【解决方案3】:

    我今天也遇到了同样的问题。我有两个关于 SSRS 2008 R2(sharepoint 集成)的报告,当我将一个参数设置为具有默认值时,无论我尝试什么,都不会进行更改。它在 BIDS (VS 2012) 中运行良好。我什至更新了一个标签以验证我的更改是否已上传到服务器。我最终不得不从服务器中删除报告并重新上传它们,然后默认值才能起作用。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,只是在预览模式下甚至没有填充默认值。

      问题是 一个 从我的 Default Values 查询加载的代码在 Available Values 查询中不存在

      例如,代码 2000 在 Default Values 查询中,但不在 Available Values 查询中

      结果:没有选择默认值

      一旦我修复了人口查询,我的所有默认值都会被选中。

      去看看。

      【讨论】:

        【解决方案5】:

        我今天也遇到了同样的问题。 (23rd June 2016)

        原因:一旦我们在报表服务器上上传/部署相同的报表,那么参数默认值和默认的一些属性在报表服务器级别控制。

        解决方案:如果您使用任何实用程序(如 reportsync)重新部署相同的报告,您必须确保首先删除所有这些报告/单个报告的默认值生效,然后进行同步操作。

        注意: 在您执行此操作之前,请使用您使用的同一实用程序备份所有 SSRS 报告。因为有时您的操作可能会由于超时错误或某些服务器问题而失败。

        替代解决方案:如果您的报告很少并且不想删除这些报告,请转到“参数”选项卡并勾选Has Default。就是这样。

        希望这对所有 SSRS 开发人员有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-28
          • 2010-10-09
          • 1970-01-01
          相关资源
          最近更新 更多