SSRS基本算术失败

时间:2014-12-08 13:35:00

标签: reporting-services vbscript bids

我坐在一个有点奇怪的问题 - 我VBScript SSRS的基本算术失败了。

以下是该方案。

62 * 0.13 + 12 = 20.06

SSRS得到答案

818

我能看到的是0.13变为013,即thirteen。以下是我尝试的脚本。

请注意,First(Fields!PremiumAmount.Value, "PolicyDataset")在我当前的测试用例中解析为62。

我有以下内容:

Try 1
= First(Fields!PremiumAmount.Value, "PolicyDataset") * 0.13 + 12

Try 2
= cDec(First(Fields!PremiumAmount.Value, "PolicyDataset") *0.13 +12)

Try 3
= First(Fields!PremiumAmount.Value, "PolicyDataset") * cDec(0.13) + 12)

Try 4
= cDec(First(Fields!PremiumAmount.Value, "PolicyDataset") * cDec(0.13) + 12)

Try 5
= cDec(First(Fields!PremiumAmount.Value, "PolicyDataset") * cDec("0,13") + 12)

Try 6
= cDec(First(Fields!PremiumAmount.Value, "PolicyDataset") * (13 / 100) + 12)

Try 7
Custom Code -> 

   Public Function MultiplyThirteenPercentPlusTwelve(input as Decimal) 
      return  input * 0.13 + 12
   End Function

In Report

= Code.MultiplyThirteenPercentPlusTwelve(First(Fields!PremiumAmount.Value, "PolicyDataset"))

所有这些都解决了818.我同时感到困惑和愉快。我还有其他尝试吗?

1 个答案:

答案 0 :(得分:2)

确保Fields!PremiumAmount.Value正在评估62。  因为我已尝试使用SQL SERVER 2008 R2SSRS版本的所有方法,所以它正常运行。它给了我20.06。 确保Fields!PremiumAmount.Value是int或numeric数据类型。 如果您的Fields!PremiumAmount.Value6200,那么它也会出现同样的问题。检查您的传入数据及其转换。

附加答案(来自OP):

出于某种原因,引用的62拉为62.00,并在计算中变为6200

因此添加了以下程序。 62.00将逗号替换为逗号,转换为小数,然后进行乘法,然后进行一些基本的小数位格式化。

Format(cDec(Replace(First(Fields!PremiumAmount.Value, "PolicyDataset"), ".",",")) * 0.13D + 12.0D, "F2")