SSRS - 为什么PDF查看结果正确但浏览器结果不正确?

时间:2014-01-06 15:58:31

标签: reporting-services sql-server-2012

我正在使用Report Builder 3.0开发一个计算百分比的简单SSRS报告。

我有3列,其中2列不可见,每列都包含在列组中,1列为以百分比显示的数据的可视化表示。 2列按相同的SQL列值分组,但具有不同的过滤器以分隔数据。我需要一个百分比的A列与我的第三列中显示的A +列B的总和相比,所以我使用的是表达式:

=FormatPercent(ReportItems!columnA.Value/(ReportItems!columnA.value + ReportItems!columnB.value),1) & " whatever additional text"

ColumnA                    ColumnB                    ColumnC
Group on IsWeb             Group on IsWeb             A/(A+B)
Filter IsWeb = 1           Filter IsWeb = 0
SUM(value)                 SUM(value)

除非列A实际上不包含任何值,否则此工作正常。换句话说,A列的列组上的过滤器会过滤掉任何潜在的数据。发生这种情况时,ReportItems!columnA.value甚至不存在,因此我无法在第三列中使用IIF(IsNothing())语句将其替换为0.

奇怪的是,当报表通过Web界面,RB界面运行或以HTML格式的电子邮件发送时,当columnA.value不存在时,百分比将返回50.0%。但是,如果将其另存为PDF,则显示0.0%,这是所需的。

是否有办法“修复”浏览器和电子邮件查看报告时出现50.0%的问题,或者在ReportItems!columnA.value不存在时正确设置最终计算以插入0来代替计算?

我试过了:

IIF(IsNothing(ReportItems!columnA.value), 0.0, FormatPercent(ReportItems!columnA.Value/(ReportItems!columnA.value + ReportItems!columnB.value),1))

但这也没有按预期工作。

要测试数据显示的“0除以数字”问题,如果我将第3列的表达式更改为:

=FormatPercent(0/(ReportItems!columnA.value + ReportItems!columnB.value),1) & " whatever additional text"

它按预期运行,在浏览器和PDF中返回0.0%的结果。

编辑:当ReportItems!columnA.value不存在时,值ReportItems!columnB.value似乎被替换为值{{1}}。 B列总是有一个值,所以当我们得到A /(A + B)的最终方程时,当A不存在时,方程变为B /(B + B),因此得到50.0%的结果。但是,当我将结果导出为PDF时,A只是0而B是正确的数量,从而导致正确显示数据。

为什么HTML查看返回的结果与导出为PDF时的结果不同?

0 个答案:

没有答案