【问题标题】:SSRS rounds to whole numbers, but includes 2 decimal placesSSRS 四舍五入为整数,但包含 2 位小数
【发布时间】:2013-08-28 19:25:09
【问题描述】:

我有一些 SQL,其中有问题的部分是:

sum(Minutes)/60.0 Hrs

在 SQL Server Management Studio 中,我的数据库返回:

14.500000

在 SSRS 中,我的报告显示:

14.00

显示此值的我的 RDL 单元格具有以下定义:

=Fields!Hrs.Value

单元格的文本框属性已定义为数字,未选中复选框,2 个小数点。

所以,问题是,为什么我的报告只输出 14.00 而不是 14.50,我该如何解决?

编辑:可能值得一提的是,单元格数据奇怪地左对齐,尽管没有告诉它对齐。

【问题讨论】:

  • 该特定字段的 RDL 文件中的数据集定义是什么样的?我将快速测试与您的查询(即avg(field)/60.0,基于int 类型字段)一起进行了快速测试,并且舍入很好-在RDL中,数据集中的相关元素是<rd:TypeName>System.Decimal</rd:TypeName>,这就是您会期待的。
  • 我在 .rdl 中看到的唯一“rd”是 。该字段的数据集定义为“ActualHrstrue
  • 测试 1 仔细检查数据库链接以验证 SSMS 和您的报告是否指向同一个数据库。 测试 2 检查报告数据集中的数据(不是 SSMS 中的数据)并检查它是否显示 14 或 14.5。
  • 可能是远射,但您的数据集字段Hrs 指向数据库字段ActualHrs,而不是Hrs,因为问题的其余部分表明...这是正确的字段吗?
  • Anup-> 我将我的数据集复制到另一个数据集中,并将相关列的值输出到报告中的新表中。它正确显示 14.5。

标签: sql sql-server reporting-services rdl


【解决方案1】:

尝试将其定义更改为:

=Format(CDbl(Fields!myFields.Value),"00.00")

【讨论】:

  • 试试这个,选择您的文本框,在属性中选择格式并输入 N2,同时删除您对此文本框的任何早期格式
  • 遗憾的是,没有,没有变化。 N2 仍显示 14.00 而不是 14.50。为了确保我做的事情是正确的,我还尝试了 N3,它给了我 14.000。
【解决方案2】:

我认为您使用的是CInt 而不是CDbl,它总是会尝试返回一个整数。因此,表达式末尾的 .00 。试试:

=Format(CDbl(Fields!myFields.Value),"F2")

【讨论】:

    【解决方案3】:

    如果您编辑单元格的文本框属性,并在选择类型编号后,将小数点更改为两个零,则无论单元格的内容如何,​​它都应该可以工作。 像这样:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多