【发布时间】:2019-01-18 10:39:58
【问题描述】:
我的报告中目前有一列正在计算平均值:
=FORMAT(Avg(Fields!intGradeTransposeValue.Value),"#.#")
我目前正在尝试使用该计算的结果来执行 IIF 语句,但出现错误:
文本运行“Textbox20.Paragraphs[0].TextRuns[0]”的值表达式包含错误:[BC30311]“Microsoft.ReportingServices.ReportProcessing.ReportObjectModel.ReportItem”类型的值无法转换为“Double”
我的表情是:
=CDbl(IIF(ReportItems!Textbox6 <= 1.4, "A*",
IIF(ReportItems!Textbox6 <= 2.4 AND >= 1.5, "A",
IIF(ReportItems!Textbox6 <= 3.4 AND >= 2.5, "B",
IIF(ReportItems!Textbox6 <= 4.4 AND >= 3.5, "C",
IIF(ReportItems!Textbox6 <= 5.4 AND >= 4.5, "D"
IIF(ReportItems!Textbox6 <= 6.4 AND >= 5.5, "E"
IIF(ReportItems!Textbox6 <= 7.4 AND >= 6.5, "U", "Error"))))))))
如何进行我需要的计算?
附加
我在下面添加了错误出现的位置 - 这让我感到困惑,因为它似乎接受了 1.4 的第一个双精度。我正在使用下面建议的答案,但这也不起作用。
【问题讨论】:
-
我很确定您是说将 A* 或 B 等字符串值的输出转换为双精度值。这使得错误不能加倍。您可能希望将 reportItems 部分包装在 CDbl() 中,而不是像:
CDbl(ReportItems!Textbox6)强制转换该数字只是为了将其与您的静态双精度值进行比较。
标签: reporting-services double expression ssrs-2012 iif