有时候,我真的很讨厌M $。
我有一个SSRS报告,该数据集正在由存储过程填充。报告显示结果每页一个区(分组的行)。存储过程正在返回聚合计数。到目前为止一切顺利。
我向tablix添加了两个子报告,一个在左列,一个在右列。几乎完全一样。我单击了该单元格,单击了“插入”,然后选择了“ SUB-REPORT”。然后,我单击新的SUB-REPORT,并使用下拉列表指定要用作子报告的报告。
它们也具有由存储过程提供的数据集,该数据集可能从0返回几行。这两个子报表使用的参数完全相同,名称相同。
---------------------------------------------------
|___________________DISTRICT 12___________________|
|_____________Item 1|__75|____________Item 2 |__42|
|_____________Item 3|__15|____________Item 4 |__45|
|_____________Item 5|___5|____________Item 6 |__16|
|_____________Item 7|__65|____________Item 8 |___0|
|_____________Item 9|__12|___________Item 10 |__55|
|=================================================|
|______Sub Report 1______|______Sub Report 2______|
|_________category 1|__27|_________category A|__16|
|_________category 2|__15|_________category B|__42|
|_________category 3|___2|_________category C|__60|
|_________category 4|___6| |
|_________category 5|__16| |
---------------------------------------------------
它在Visual Studio中看起来和正常工作。每个子报表都可以正常工作,并且在主报表中也可以正常工作。但是,当我部署所有3个报表时,子报表1会显示“错误:无法显示子报表。”
子报表采用完全相同的参数。子报告获取地区ID,年份等来提取数据。
我用另一个名称重新创建了有问题的子报表,并在主报表中将其替换为相同的结果。
我已经重新创建了主报表,并为其提供了两个子报表,其结果完全相同,子报表1和子报表1b不起作用,子报表2起作用。
我使用ExamDiff(无耻的插件,出色的工具!)将子报表文件相互比较,没有发现真正的区别。
我用XML记事本(另一个有用的工具)打开了主报告文件,发现设置方式没有真正的差异。
所有报告都存储在同一目录中。
我打开了项目文件,但在那儿没有发现感兴趣的东西。
我什至按照其他建议将外部工具添加到clear local report cache中。
我很困惑。我敢肯定这已经遇到过。有指针吗?
一如既往,感谢我在堆栈溢出方面的同胞。为地球上的开发人员提供最佳建议。
答案 0 :(得分:0)
这可能是旧的FMTONLY和SSRS问题。
有关更多详细信息,请参见这些链接
http://www.sqlservercentral.com/articles/Reporting+Services+(SSRS)/119024/
No fields for dynamic SQL stored procedure in SSRS with SET FMTONLY
当结果集最初没有显示时,我在一些旧的SSRS存储过程中使用了
CREATE PROCEDURE report1 AS
BEGIN
DECLARE @FMTONLY BIT;
IF 1 = 0
BEGIN
SET @FMTONLY = 1;
SET FMTONLY OFF;
END
-- Stored proc main code here
IF @FMTONLY = 1
BEGIN
SET FMTONLY ON;
END
END -- End of stored proc / RETURN
答案 1 :(得分:0)
严重的是,有时我讨厌M $。
两个子报表的存储过程仅带回4个字段,其中一个我什至不使用(区ID)。该报告在一个表中只有三个文本框,一个只是文字。另外两个是
=Description + " (" + code + ")"
和
=DistCounts
绝对不是这些。
最后,我们采用了可行的方法,将XML复制到新的子报表中,更改了数据集,字段名称和文字,然后重新部署,它就可以了。比较一个可以正常工作的系统和不可以正常工作的系统。啊!
正如我所说,两者都使用相同的输入参数,存储过程只是在计算不同的字段。在野鹅追赶上浪费了超过一天,我们仍然不知道出了什么问题。