SSRS 2008 R2中参数的默认值不起作用

20

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

然而,由于列表很长(大约15个可能的值),我希望默认选中最常用的两个值。

我在"参数属性"->>"默认值"对话框中进行了配置,在预览模式下运行报告时它可以正常工作,也就是说默认值被选中了。

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

有任何想法吗?

7个回答

30

我猜测你的构建过程有问题,你上传的文件没有得到更新,可能是因为你做出了更改或者某个值没有被覆盖。为了确保参数默认值正确,可以采取以下措施:

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

  2. 如果它是基于查询的,并且您观察到无法在此更改数据,那么我会前往BIDS,打开解决方案下的SSRS项目,然后选择“在Windows资源管理器中打开文件夹”。查找报告的数据文件并将其删除。请注意,这不是报告本身,而是类似于“report.rdl.data”的文件。这通常不会影响构建过程,只是预览,但我们希望在重建后完全按照预览来进行。转到报告项目,选择“清理”,然后选择“重新构建”,以确保您除了显式删除的一个文件之外,还删除了bin中的所有数据文件。现在点击报告预览,验证它是否符合默认值的预期。再次发布并观察。

  3. 如果这仍然没有改变报告,请将报告重命名为“report_old”并尝试重新发布。

  4. 如果这仍然没有生效,我会检查我们想要发布的位置是否有效,我们是否正确地进行了部署,以及任何参数是否从未设置为“不要覆盖”或因配置设置导致发布被停止而产生的奇怪情况所获取的共享数据集中获取数据。

在过去的使用中,SSRS对我来说存在一些奇怪的问题,这些问题与我的文件处于源代码控制下以及系统不想要更新参数有关。通常情况下,这可以通过重新构建来解决,但有时确实需要发布新的二进制文件。


5
你的第一个选项解决了问题。谢谢! - Amarundo
绝对的救星。但仍然令人不安,因为我在rdl文件中(这是XML)进行了编程。 - JosephDoggie

7
我这周也遇到了同样的问题,原因是我的多值参数的“默认列表”中有一些值有时在数据选择中不存在——在我的情况下,有些日期我选择的默认列表值是无效的。
以下是让我困惑的地方:SSRS允许在开发预览期间使用默认列表中的无效值,但在生产环境中不允许。
在我的例子中,报告是在Report Builder中开发的。当我在Report Builder中运行(预览)报告时,列表参数的复选框被选中了默认列表中的值,如设计所示。但当我保存报告并像用户一样运行报告——从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') 

在这个例子中的问题在于,对于日期1/1/2013和12/31/2013,缺省值"G"和"H"是无效的值。
解决这个问题的方法是,在“默认值”查询的'WHERE'从句中添加条件。它变成了:
SELECT Type
FROM MyTable
WHERE Type IN ('A','B','G','H') 
  AND Date <= @BEG_DATE
  AND Date >= @END_DATE

现在,当针对2013年1月1日和2013年12月31日运行默认值查询时,"G"和"H"将从默认值中删除,只剩下"A"和"B"作为默认值。因为"A"和"B"也都在参数的可用值中,所以这两个值都可以被选择。因此,现在多值参数的默认设置在开发过程中以及在保存报表之后(部署、发布)并在浏览器中运行时均有效。

1
这个解决方案对我有用!谢谢!! - Rhubenni Telesco

3

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

问题在于我的默认值查询中加载的一个代码不存在于可用值查询中。

例如,代码2000在默认值查询中,但不在可用值查询中。

结果:没有任何默认值被选中

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

去想吧。


3

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


2

今天我也遇到了同样的问题。(2016年6月23日)

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

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

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

替代解决方案:如果您只有很少的报表,并且不想删除这些报表,则可以通过转到“参数”选项卡并勾选Has Default来手动更改默认值。就是这样。

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


0

我之前也遇到过这个问题。 删除报告,然后通过更改名称重新上传,对我有用。


0

请确保如果您有一个默认值,在报告参数属性表单下的值是您想要的实际值。有时候意外地复制默认值并将其粘贴到值框中可能会添加前导空格或尾随空格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接