1

我在 SQL Server 2008 (SP3) 的 VS2008 中创建了一份报告。在某些情况下,该报告由嵌套 3 或 4 层的多个子报告组成。文档地图被广泛使用,以便可以进一步生成 Word 目录。

现在问题来了。

如果我在开发环境中渲染到屏幕或从 Reporting Services 服务器渲染部署的报表,那么一切正常。如果我以任何格式(使用 Word、PDF 和 Excel 测试)导出报告,则输出符合预期。

但是,如果我创建一个包含所有参数的 URL,例如

http://MYSERVERNAME/ReportServer/Pages/ReportViewer.aspx?%2fMYPATH%2fMYREPORTNAME&PARAM1=999&PARAM2=999&PARAM3=999&rs:Command=Render&rs:Format=HTML4.0

然后将其粘贴到 IE 窗口中,输出不正确。好吧,让我澄清一下。

如果我使用 HTML4.0 呈现扩展插件按上述方式呈现,那么报表会按预期呈现在屏幕上,所有内容都会显示出来。如果我通过将 rs:Format 参数更改为 Word 来呈现到 Word,则报表会呈现但第一页丢失(请参阅下面有关此内容的注释)如果我呈现为 PDF,则报表的同一部分丢失。如果我渲染到 Excel,则在第一个工作簿工作表上生成的文档映射会显示报告缺失部分的条目,但单击单击会出现“无效引用”错误,并且确实报告的该部分再次未渲染。

请注意,缺少更好术语的“主”报告由 3 个子报告组成,每个子报告都包含其他子报告。

它是第一个子报告的内容,这也仅发生在第一页上的每个节目中(因为它的长度不到一页)。在 Word 中呈现了一些东西,但它看起来像一个空表,宽度是页面的整个宽度,但高度只有几毫米。

我真的不知道为什么该部分在渲染到屏幕然后导出时完美运行时无法渲染。我曾假设他们会使用相同的渲染过程,但我不确定。

我会继续实验,可能在问题部分之前添加一些空白内容或其他内容,然后看看我得到了什么,但我对为什么会发生这种情况感到困惑,其他报告没有遇到问题(但是我只测试了 3 或 4或我写的数百个)。过去我没有过多地使用 URL 方法,但是当我编写 ac# 应用程序以运行具有不同参数的相同报告以生成超过 1200 个单词的文档时,我到了这一点,每个文档大约需要 2 分钟才能运行。那里的输出不正确,所以我重新创建了手动 URL,但问题仍然很明显,剩下的就是历史了!

4

1 回答 1

1

我终于找到了答案。

导致问题的子报表采用随后传递给其他子子报表的参数。当我测试这些时,我有提供参数可用值的数据集(例如国家列表及其相关 ID)。

我的正常工作方法是删除所有仅用于填充所有子报表中的参数的数据集,因为这可以提高性能(例如,报表不必查询数据库来获取国家/地区列表)。

但是,在这种情况下,我删除了所有数据集(这本身很好),但我将数据源留在了原处(在报表数据窗格中可见)。

一旦我删除了这个多余的条目,报告就会按预期呈现。

现在我仍然不确定为什么它可以渲染为 HTML4.0,但看起来当渲染为其他格式时,可能会出现一些查看数据源的过程,因为没有数据(因为没有数据集)然后不会呈现报告。这有点猜测,但这是目前对我来说唯一有意义的事情。

于 2012-10-26T12:49:33.843 回答