我坐在一个有点奇怪的问题 - 我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.我同时感到困惑和愉快。我还有其他尝试吗?
答案 0 :(得分:2)
确保Fields!PremiumAmount.Value
正在评估62
。
因为我已尝试使用SQL SERVER 2008 R2
和SSRS
版本的所有方法,所以它正常运行。它给了我20.06
。
确保Fields!PremiumAmount.Value
是int或numeric数据类型。
如果您的Fields!PremiumAmount.Value
为6200
,那么它也会出现同样的问题。检查您的传入数据及其转换。
附加答案(来自OP):
出于某种原因,引用的62
拉为62.00
,并在计算中变为6200
。
因此添加了以下程序。 62.00
将逗号替换为逗号,转换为小数,然后进行乘法,然后进行一些基本的小数位格式化。
Format(cDec(Replace(First(Fields!PremiumAmount.Value, "PolicyDataset"), ".",",")) * 0.13D + 12.0D, "F2")