获取“尚未指定运行报告所需的一个或多个参数”错误

时间:2013-02-28 16:07:51

标签: reporting-services sql-server-2008-r2

我正在构建一个报告,我希望接受用户的两个值,将这些值提供给查询,并查找与这些条目相关联的数据。

例如,如果您有一份员工,绩效指标和与之相关的值列表;然后,用户将选择员工姓名/绩效指标,他们将获得该员工的评分信息。

我有两个参数,每个参数都是从SQL查询中获取一个明确的员工姓名和度量列表,下面的表格只是根据~'WHERE name = @Name AND measure = @Measure'提取信息,但是当我点击“预览”在本地运行报告我收到错误:“尚未指定运行报告所需的一个或多个参数”

我知道参数工作正常,因为我可以将它们的值直接输入到文本框中,并且值正确填充。此外,如果我将查询更改为只接受一个参数(即WHERE measure = @Measure),则查询有效。

我很困惑为什么发生这个错误,因为我知道我的参数正在运行并且正确填充。

10 个答案:

答案 0 :(得分:7)

我在.NET 4.0中使用本地报告(在.rdlc文件中)遇到此行为,其中一个参数的值包含一个emtpy字符串。虽然设置参数是正确的:

  report.SetParameters(
            new List<ReportParameter> {
                new ReportParameter("Title", Messages.Title),
                new ReportParameter("SubTitle", Messages.Subtitle))
            }
            );

只要两个参数实际包含一些字符,它就起作用,否则抛出提到的异常。

答案 1 :(得分:5)

这给我带来了许多小时的痛苦。原来这与使用共享数据集有关。 将数据集嵌入到报表中,它可以正常工作。

答案 2 :(得分:3)

时会导致此错误

A )实际报告中的参数拼写错误。这意味着查询期望@Name但报告正在传递@Names(或其他一些拼写)。

B )您是否有可能尝试使用@Name参数的默认值运行报表,但存储过程需要实际值?

如果您在Visual Studio中构建报表并且@Name参数的默认值为(null),则可能会发生这种情况。

尝试删除默认值或确保@Name参数具有实际值,即使它只是''。

答案 3 :(得分:2)

我有类似的问题。将SharedDataSource与具有null值的参数一起使用时会发生问题。如果在嵌入数据源中使用相同的查询,则没有问题。

与嵌入式数据源不同,您必须定义是否允许在共享数据源查询中使用的参数具有空值,如此处的屏幕截图所示。在我的例子中,共享数据源的查询有两个参数,可以具有空值。

Set Allow Null for SharedDataSource Parameter(s)

所以在设置它们以允许null之后,问题就解决了!

答案 4 :(得分:1)

我遇到了同样的问题,它现在在sql server 2008 r2上排序。

我知道这是一个老问题, 但只是为了帮助别人:

真的很简单,只是确保包括案例的拼写是相同的并使用@。

我有一个名为currentSpaceByDrive的共享数据集,其代码如下:

SELECT 
   [DRIVE]
  ,[Volume_Size_GB]
  ,[VolumeSpaceAvailable_GB]
  ,[VolumePercentAvailable]
FROM  monitoring.dbo.currentSpaceByDrive(@ServerID)

我将共享数据集currentSpaceByDrive添加到我的报告中,并给它指定相同的名称。 当我右键单击它时,我的报告,数据集属性,参数是@ServerID。

@ServerID值来自另一个名为the_servers的数据集(用户选择服务器ID)

我有一个名为@ServerID的报表参数,它从the_servers获取其值,用于提供currentSpaceByDrive上的@ServerID参数。

@ServerID太多了,我明白了,但是如果你根据这个做自己的测试,你就会完成它。 见附图。

希望这会有所帮助 马塞洛

enter image description here

答案 5 :(得分:1)

检查DataSet在Report Server中,我有类似的问题,我在Visual Studio中编辑共享数据集,但它没有工作,经过一个小时的挫折我检查了报表服务器中的数据集,我发现它不是更新我在visual studio中所做的更改,我删除它并从visual studio重新部署Dataset。它有效。

答案 6 :(得分:0)

其实我不得不:

  • 从报告中删除SubReport对象。
  • 从工具箱中拖出新对象
  • 设置子报告名称和报告
  • 在Paramateres“添加”中,选择每个参数和相关值。

然后对我有用。

答案 7 :(得分:0)

对我来说,设置参数的值会引起问题。我不知道为什么,但是参数值不能接受string.Empty或null。所以我只是给了一个“”,因为值可以解决错误。

样本

Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources (default-resources) on project server: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources failed: Plugin org.apache.maven.plugins:maven-resources-plugin:3.1.0 or one of its dependencies could not be resolved: Could not transfer artifact org.sonatype.sisu:sisu-inject-plexus:jar:1.4.2 from/to central (https://repo.maven.apache.org/maven2): Access denied to: https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar -> [Help 1]

答案 8 :(得分:0)

我认为我也遇到同样的问题,当我选择“全选”时,参数管理器为空,这会导致错误“未为子报表指定一个或多个参数”,但是如果我选择了几个管理器名称,则子菜单报告出现。令人费解的是,当选中“全选”时,Manager参数值显示所有值,但不适用于我的Supervisor参数。请注意,Supervisor参数取决于管理员参数。

答案 9 :(得分:0)

我将共享数据集用于多个报告,而此问题的根本原因不是将输入参数从报告本身映射到共享数据集的参数。

要修复,我导航到“报告数据”面板,打开数据集(实际上是链接到共享数据集),单击“参数”选项卡,然后将报告参数映射到共享数据集的参数