在Crystal Reports公式字段中使用ToText格式化字段

时间:2020-03-06 15:01:59  来源:igfitidea点击:

我正在尝试创建一个Crystal Reports公式字段(以计算价格的百分比变化),如果特定的报告字段为null,则将返回" N / A",但使用会计格式(负数)将数字返回两位小数如果不是,请用括号括起来的数字)。

我能够管理的最接近的是:

If IsNull({ValuationReport.YestPrice}) Then
    'N/A'
Else
    ToText({@Price}/{ValuationReport.YestPrice}*100-100, '###.00', 2)

但是,这是使用负号而不是括号来表示负数。

我尝试使用格式字符串,例如'###。00;(###。00)'和'(###。00)',但这些字符串被视为无效。我如何实现我的目标?

解决方案

我认为我们正在寻找ToText(CCur(@Price} / {ValuationReport.YestPrice} * 100-100))

我们可以使用" CCur"将数字或者字符串转换为"货币"格式。 CCur(number)或者CCur(string)

我想这可能是我们要寻找的

Replace(ToText(CCur({field}))," $",""),将给出负数的括号

这有点hacky,但是我不确定CR在格式化方面是否很好

if(isnull({uspRptMonthlyGasRevenueByGas;1.YearTotal})) = true then
   "nd"
else
    totext({uspRptMonthlyGasRevenueByGas;1.YearTotal},'###.00')

上面的逻辑应该是我们要寻找的。