21

我正在构建一个报告,我想从用户那里接受两个值,将它们输入到查询中,并找到与这些条目关联的数据。

例如,如果您有一份员工列表、绩效衡量标准以及与之相关的价值观;然后用户将选择一个员工姓名/绩效衡量标准,他们将获得该员工对该衡量标准的评分信息。

我有两个参预览'以在本地运行报告我收到错误:“尚未指定运行报告所需的一个或多个参数”

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

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

4

10 回答 10

10

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

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

仅当两个参数实际上都包含一些字符时,它才会起作用,否则会引发提到的异常。

于 2013-12-03T16:35:45.477 回答
8

此错误是由于您要么

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

或者

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

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

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

于 2013-02-28T21:48:29.933 回答
7

我有类似的问题。当您将 SharedDataSource 与具有空值的参数一起使用时,就会出现问题。如果您在嵌入式数据源中使用相同的查询,则没有问题。

与嵌入数据源不同,您必须定义是否允许在共享数据源的查询中使用的参数具有空值,如此处的屏幕截图中突出显示的那样。在我的情况下,共享数据源的查询中有两个参数可以具有空值。

为 SharedDataSource 参数设置 Allow Null

因此,在将它们设置为允许 null 后,问题已解决!

于 2017-08-01T04:38:43.037 回答
6

这让我痛苦了好几个小时。事实证明,这与使用共享数据集有关。而是将数据集嵌入到您的报告中,它可以正常工作。

于 2013-05-15T09:00:07.210 回答
1

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

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

真的很简单,只要确保包括大小写在内的拼写和@的使用相同。

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

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

我将共享数据集 currentSpaceByDrive 添加到我的报告中,并为其命名。当我右键单击它时,我的报告中的数据集属性,参数是@ServerID。

@ServerID 值来自另一个数据集,称为 the_servers(用户在其中选择 serverID)

我有一个也称为@ServerID 的报告参数,它从the_servers 获取其值,并用于在currentSpaceByDrive 上提供@ServerID 参数。

@ServerID 太多了,我了解,但是如果您基于此进行自己的测试,您将完成它。见附图。

希望这有助于马塞洛

在此处输入图像描述

于 2014-03-31T16:37:30.717 回答
1

检查报表服务器中的数据集,我遇到了类似的问题,我在 Visual Studio 中编辑共享数据集,但它没有工作,经过一个小时的挫折后,我检查了报表服务器中的数据集,我发现它没有更新我所做的更改在 Visual Studio 中,我将其删除并再次从 Visual Studio 重新部署数据集。有用 。

于 2016-02-10T11:08:47.657 回答
1

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

样本

ReportParameter[] parameters = new ReportParameter[4];
parameters[0] = new ReportParameter("Name", EName);
parameters[1] = new ReportParameter("ShiftName", CurrentShift);
parameters[2] = new ReportParameter("Date", LoginDate);
if(ValidateReportData())//some condition
{
    parameters[3] = new ReportParameter("Date1", LoginDate);
}
else
{
    //parameters[3] = new ReportParameter("Date1", string.Empty);//this makes exception while calling Render function.
    parameters[3] = new ReportParameter("Date1", " ");//Solves the issue.
}
于 2019-06-26T06:03:38.387 回答
0

实际上我不得不:

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

然后对我有用。

于 2017-02-01T11:03:44.053 回答
0

我想我有同样的问题,当我选择“全选”时,我的参数主管是空白的,这会导致错误“没有为子报表指定一个或多个参数”,但是如果我选择了几个主管名称,则会出现子报表。令人困惑的是,当检查“选择”时,管理器参数值显示所有值,但它无法在我的主管参数上使用。请注意,Supervisor 参数取决于 manager 参数。

于 2019-07-31T19:37:46.740 回答
0

我为多个报表使用了共享数据集,这个问题的根本原因是没有将报表本身的输入参数映射到共享数据集的参数。

为了解决这个问题,我导航到“报表数据”面板,打开数据集(实际上链接到共享数据集),单击“参数”选项卡,然后将报表参数映射到共享数据集的参数。

于 2019-09-11T20:22:20.387 回答