SSRS - 通过Querystring启用可用值选项传递多值参数

时间:2015-03-11 18:16:51

标签: asp.net sql-server sql-server-2008 reporting-services ssrs-2008-r2

我的报告中有一个参数,它有多个值。

Parameter With Multi Value Enabled

它的价值来自数据集。

Available Values came from a DataSet

在我的应用程序中,当我请求报告时,此参数将作为Querystring值。但是当我使用多值选项时,参数不再是单个值,而是一个"数组"具有多个值(Of Couse)。

REPORT?codArea=&codDiretoria=17&ultimaAlteracao=on&formato=PDF&codListaPrioridade=8&codListaPrioridade=13

重要部分:

(codListaPrioridade=8&codListaPrioridade = 13)

问题在于"可用值"选项。具有数组作为值的参数,不具有任何"可用值"和SSRS抛出错误。

SSRS Error

重要部分:

System.ServiceModel.FaultException: This report requires a default or user-defined value for the report parameter 'codListaPrioridade'. To run or subscribe to this report, you must provide a parameter value.

如果我禁用"可用值"选项,我可以发送这个"数组"没有任何问题:

codArea=&codDiretoria=17&ultimaAlteracao=on&codListaPrioridade=9&codListaPrioridade=13&formato=PDF

重要部分:

(codListaPrioridade=9&codListaPrioridade=13)

Report Working with Array Trougth Querystring ="----> "& Join(Parameters!codListaPrioridade.Value, ",")

诀窍是我需要在此报告中创建,此参数带有"可用值"已启用,但此参数需要接受"任何" values(因为查询字符串上的数组)。

"可用值"必须用于显示哪些值仅可用(在我的应用程序内)。

在SSRS内部,参数运行正常,只有在我的应用程序中使用此报告时才会出现此问题,并在查询字符串中发送参数值。

1 个答案:

答案 0 :(得分:1)

错误的关键部分是"此报告需要报告参数的默认值或用户定义的值。"

您不需要默认参数。听起来我的应用程序正在将无效的参数值传递给报表。禁用可用值时它起作用的原因是因为它将接受 ANY 值。

运行填充可用值的查询并将其保持打开状态。

在ASP.NET代码将值传递给报表服务器之前设置断点。检查这些值是什么,并确保它没有尝试在运行查询的可用值列表中传递任何 ISN' T

如果有不同之处,那么这就是导致错误的原因。如果套管很重要,我不记得我的头顶,所以你也要检查一下。如果你检查它们,一切都很好......再次检查它们。我不知道有多少次我认为没有任何数据不合适,只是为了以后突然看到它。


另一种理论是,您只是没有正确地将多值参数传递给报表服务器。我之前从未尝试过直接在网址中进行此操作,但是在其他示例中的MSDN页面Pass a Report Parameter Within a URL上#34;它显示传递多值参数的部分。在他们的示例中,他们似乎在每个值的参数名称的末尾附加一个数字。但是,我不确定这是否正确。

https://myserver/Reportserver?/SQL+Server+User+Education+Team/_ContentTeams/folder123/team+project+report&teamgrouping2=xgroup&teamgrouping1=ygroup&OrderID=747&OrderID=787&OrderID=12

但是既然你已经在编写.NET代码了,那就让我提一个建议吧。将Web服务用作Web服务。它使这样的事情变得如此简单。您只需将Web服务添加为项目的引用,然后基本上将其称为任何其他.NET类。该引用读取WSDL文件,并显示所有可用的API调用及其参数以及您将获得的内容。这真的是一个很好的功能。查看关于" How to: Add a Reference to a Web Service"的这篇MSDN文章。然后是这个TechNet开发指南:https://technet.microsoft.com/en-us/library/bb522713.aspx