使用 SQL Server Reporting Services,如果数据库中的值为零,则以下格式表达式将其转换为 --- 正确到小数点后 2 位:
,0.00;(#,0.00);'---'
但是,如果值为 0.001,并且报告需要显示为 2 位小数(即应显示 0.00),则结果格式 --- 仍会显示在报告中。
有没有办法避免 SSRS 中的这些舍入问题,如果是这样,新的格式/功能/等会是什么?对于 0.001,结果应该是 0.00。
使用 SQL Server Reporting Services,如果数据库中的值为零,则以下格式表达式将其转换为 --- 正确到小数点后 2 位:
但是,如果值为 0.001,并且报告需要显示为 2 位小数(即应显示 0.00),则结果格式 --- 仍会显示在报告中。
有没有办法避免 SSRS 中的这些舍入问题,如果是这样,新的格式/功能/等会是什么?对于 0.001,结果应该是 0.00。
这是一个有趣的。我复制了你的结果:
对于最后一列,我在 TextBox 中使用了以下表达式:
=Switch(Fields!val.Value = 0.0, "---"
, Fields!val.Value > 0.0, Format(Fields!val.Value, "#,0.00")
, Fields!val.Value < 0.0, Format(Fields!val.Value, "(#,0.00);(#,0.00)"))
这给出了您需要的结果。
看起来不错,对吧?也许......对于在网页上显示或导出为 PDF 我认为这很好,如果烦人,但对于导出到 Excel,因为您使用Format
的是,在报告中显式返回一个字符串,因此将是一个字符串Excel 导出,而不是像在前三列中那样导出为数字。
只有您可以说这是否会成为您的环境中的问题。
我认为没有办法绕过 SSRS 将小数字视为零,因此在文本框本身中处理它可能是您唯一的选择。