子报表无法显示。子报表单独工作 - 与主报表不兼容。

10

我有一个主报告和5个子报告。

子报告包含超过10个参数。(其中10个是多值参数-因此我使用Join方法将值从主报告传递到子报告)

我也单独测试了子报告,一切正常,显示数据等。

我尝试创建另一个主报告,并尝试将该子报告放在这个新创建的主报告中,但仍然没有成功。

我还检查了每个参数值和数据类型,根据我的存储过程,所有内容都是正确的。

我尝试通过从子报告属性中逐个删除多值参数来检查问题是否由此多值参数引起的!

当我们使用子报告属性从主报告向子报告提供值时-在这里,当我点击多值参数时,它会出现

= Parameters! ParameterName.Value(0) - (0)

那么这样做可以吗?因为我正在使用它作为多选值。

我陷入了这个问题,我收到以下错误:

错误:无法显示子报表。

请帮忙,提前致谢。

请注意:

我已经检查了这个,但没有成功

我还检查了这个,但没有成功

在主报告页面上出现以下错误,

enter image description here

我也尝试将所有报告上传到SSRS-2012,但没有成功。


1
我注意到您针对同一问题提出了类似的问题......您对您正在制作的东西非常神秘,这使得为您提供所需的帮助变得不可能。如我之前告诉您的,您需要提供更多的信息。也许从解释为什么使用这么多参数开始会有帮助。您用它们做什么?它们仅用于在报表上显示还是用于过滤数据?您是否将所有这些参数用于5个不同的子报表,还是将它们分散在5个子报表中? - Oceans
可能是子报告出错:无法显示报告的重复问题。 - Liam
9个回答

4

我相信你已经找到了问题的原因。

我也检查过this,但没有成功

你所参考的帖子由lethaljd提供了以下被接受的答案:

这是SSRS 2008中已知的缺陷。我不确定它是否已经修补,但在SSRS 2012中已经被修复。

正如你发现的那样,解决方法是使用单独的数据集。

https://connect.microsoft.com/SQLServer/feedback/details/648560/subreport-with-shared-dataset-throws-error

如果你检查lethaljd提供的源代码,就会发现这个问题也没有得到修复,可能永远不会得到修复,因为在更新的版本中已经不存在这个问题。

这意味着您应该使用更新版本的SSRS或考虑解决方法。我想帮助您思考不同的方法,但正如我在原始评论中所述,您需要提供更多信息。
就目前的问题而言,我没有足够的细节来给出任何基础良好的建议,除了使用不同的版本。

话虽如此,我并不希望这个答案显得不建设性或负面。我只是想帮助您走上正确的道路。


我已经尝试了所有的方法,甚至上传到SSRS 2012的报告 - 问题仍然存在。另一件事是,我正在将所有的水晶报告转换为SSRS报告 - 我必须通过查询字符串传递所有参数的值。感谢您的帮助。 - Pedram
几天前,您曾经评论说您会编辑您的问题并添加更多细节。我看到您已经删除了那个评论,但是您仍然没有添加必要的信息让我进一步帮助您。 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须在问题本身中包括所需的行为、具体问题或错误以及重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小、完整和可验证的示例。 - Oceans
我正在做我在问题中写的任何事情,我无法提供更多细节,如果您无法提供帮助,那没关系。非常感谢您的帮助和时间,我真的很感激。我也承认之前曾评论过要提供更多细节,但由于无法提供整个设计、报告数据和代码,所以很抱歉。 :( - Pedram
真的非常感谢。今天我解决了同一个问题,只需更改报表服务器即可修复。之前我尝试过更改报表服务器,但是不知何故没有专注于一个重要的事情,那就是“我必须隐藏所有报表中的参数”主报表子报表都需要隐藏。之前我没有检查这些内容,而是通过打开SSRS 2012的编辑报表生成器进行了所有更改。这只适用于SSRS-2012 - 2008存在一些问题。非常感谢。我今天非常开心...我也接受了你的答案。;-) 顺便说一下,对于“我到底在做什么保密”,抱歉哈哈。谢谢 - Pedram
在对SSRS-2012进行更改后,我已将相同的报告上传到SSRS-2008中,现在它也可以与SSRS-2008良好运行 :) - Pedram

2
除了检查上述明显的步骤之外(一些人可能也认为这很明显),我还必须确保子报表中参数的数据类型与它们在主报表中匹配的列相匹配。当您完成这个步骤后,如果仍然出现错误... 我假设您像我一样使用VStudio。以下是我清除VStudio缓存的方法... 卸载报表,关闭VStudio,在WinExplorer中转到报表文件夹。备份解决方案文件夹,现在进入解决方案文件夹下的项目文件夹。请注意,有三种类型的文件:- .rdl <-- 这包含报告定义... 不要触摸这个... - .rdl.data <-- 包含报告执行的缓存数据 - .rds <-- 这是您的数据源定义... 无需触摸它 - .rptproj <-- 这包含您的项目定义... 不要触摸它 - .rptproj.user <-- 不要触摸它... 它包含数据源的凭据。然后您会看到一个bin文件夹,其中包含3个子文件夹... Debug、Release和Debuglocal。下面是您需要做的事情:删除所有.rdl.data文件,删除bin/Debug/*下的所有文件,并重复执行DebugLocal和Release。这将清理VStudio环境。现在打开解决方案...重新加载VStudio中的解决方案,然后再试一次。这解决了许多这些讨厌的数据缓存问题。

1

请注意以下事项:

  • 主报表和子报表上的多个参数必须定义为多值 (将其定义在子报表上以允许多个值)
  • 当您传递多个参数到子报表时,应该像[@param]这样传递它,而不是像=Parameters!ParamName.Value(0)

博客 中解释了如何向子报表发送多个值。


我已经检查了你的第一点,关于第二点——当你设置参数值时,在用户界面上它会显示为[@param],但在表达式内部,它将是=Parameters!ParameterName.Value(0) - Pedram
尝试这样做:编辑表达式并确保末尾没有(0)。=Parameters!ParamName.Value是正确的,而不是=Parameters!ParamName.Value(0)。 - Gane

1
在我的情况下,问题并不是从主报告传递任何参数到子报告。一旦我添加了参数,问题就得到了解决。

1

我刚刚遇到了同样的错误,(尽管我没有使用多个参数),我在子报表中添加了2个新参数,并在主报表中设置了参数值。

结果证明是子报表中的参数造成的问题! 我的两个新参数是日期时间类型,但当这些参数由向导创建时,它们被设置为文本类型,一旦更改为日期/时间类型,一切正常运转。


0

右键单击数据集,然后单击数据集属性。 转到选项卡参数。 删除格式不正确的参数(即没有@的参数)。


0

我的问题是由于本地用户具有管理员权限,可以查看所有报表,而部署时使用的SSRS帐户仅具有查看父报表的权限,并且没有查看子报表的权限。

解决方案是通过SSRS Web Portal Url授予SSRS帐户查看子报表的权限。

可以在报告服务器配置管理器中找到SSRS Web Portal URL。


0
如果您正在运行一个带有日期参数的程序,并且该日期被设置为未来日期,那么报告将因相同的错误而失败,因此有时仅检查参数就足够了。

0
子报表对象路径数据可能已损坏(我遇到过这种情况)。解决方法是将子报表对象复制到主报表中。然后在主报表中,重新分配路径到子报表的位置。

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