s-s-rS:从“计数”计算字段中计算百分比
Posted
技术标签:
【中文标题】s-s-rS:从“计数”计算字段中计算百分比【英文标题】:s-s-rS: Calculate % from 'counted' calculated fields 【发布时间】:2017-05-17 12:37:03 【问题描述】:对 s-s-rS 非常陌生,因此不熟悉语法 - 使用 Report Builder 2.0。
我在报表生成器中构建了一个非常简单的表格,用于显示可供患者使用的预约空档总数,以及已预订的这些空档总数。
我想添加一个额外的列来显示预订插槽的百分比(即可用插槽/已预订插槽 *100%):
| Total Slots | Booked Slots | % Booked |
+-------------+--------------+----------+
| 2000 | 1250 | 62.5% |
+-------------+--------------+----------+
'Total Slots' 和 'Booked Slots' 值均基于数据集中的相同字段 ('Booked_Flag')。该字段带有一个“Y/N”值。
“总时隙”列具有基本表达式:=Count(Fields!Booked_Flag.Value)
“预定时段”列具有基本表达式:=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0))
请任何人描述计算“预订百分比”数字的最合适方法吗?
我试过这个:=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0)) / SUM(Fields!Booked_Flag.Value)
,但它会引发以下错误 - 我假设这意味着我无法在另一个计算之上执行计算:
The expression used for the calculated field '=SUM(IIF(Fields!Booked_Flag.Value="Y",1,0)) / SUM(Fields!Booked_Flag.Value)' includes an aggregate function. Aggregate functions cannot be used in calculated field expressions.
非常感谢任何指导。
【问题讨论】:
不使用字段,而是使用实际的文本框值。 ReportItems!Textbox1.value 能否修改数据以返回 0 或 1 值而不是 'Y'/'N'?这样你就可以简单地求和。 谢谢@Snowlockk - 我已经尝试过了,但它在报告中给我一个#Error
- 有什么建议吗?
感谢@RossBush - 我想我可以尝试在 StoredProcedure 中转换值,但我很想看看是否可以处理报表层中的所有计算。
可能是除以零错误。使用以下代码 Public Shared Function SafeDivision(numerator as Decimal, denominator as Decimal) as Decimal If denominator = 0.0 Return 0.0 End If Return numerator / denominator End Function
【参考方案1】:
您可以直接访问报告单元格的内容并使用它们进行计算。你的情况很简单。 让我们假设在报告设计中,包含“2000”的单元格称为 TextBox1(检查属性以获取名称),包含“1250”的单元格称为 TextBox2,那么您的 % 列表达式将类似于
=ReportItems!TextBox2.Value / ReportItems!TextBox1.Value
只需将计算列的格式设置为p1
(带1位小数的百分比)即可。
【讨论】:
@Alan_Schofield - 非常感谢,不过,当我运行报告时,表格单元格中会显示#Error
您确定文本框名称正确吗?我刚刚对此进行了测试,以防我做了一些愚蠢的事情,但它工作正常。如果您仍有问题,请发布报告设计的图片和您使用的确切表达方式。
@Alan_Schofield 破解了它,谢谢。我错误地在表达式中使用了列标题单元格的名称,而不是包含实际值的单元格的名称 - 将它们更改为宾果游戏。非常感谢您的帮助。以上是关于s-s-rS:从“计数”计算字段中计算百分比的主要内容,如果未能解决你的问题,请参考以下文章