让水晶报告公式将数字字符串转换为值,但将非数字留空/null



我有一个字符串字段,主要包含数字十进制值,但有时包含"<0.10"或"溶血"等值。

我想使用公式将这些数值字符串转换为值,将非值留空 (null)。

if isNumeric({a_omgang.omg_resultat}) then
    toNumber({a_omgang.omg_resultat})

为所有非数值返回 0,这使得计算平均值或平均值或计算值的数量变得困难。(后者当然可以通过使用带有isNumeric评估公式的运行总数来实现。

任何建议如何使公式按我想要的方式工作?

编辑:我希望值为空(null),而不仅仅是非数字的可见性。

过去,我创建了一个返回 NULL 的 SQL 表达式:

-- {@DB_NULL}
-- Oracle syntax
(
SELECT NULL FROM DUAL
)

 

-- {@DB_NULL}
-- MS SQL syntax
(
SELECT NULL
)

然后我在公式中引用此字段:

// {@FormulaField}
If IsNumberic({table.field} Then
  ToNumber({table.field})
Else
  ToNumber({@DB_NULL})

您可以通过执行以下操作来使其工作:

  1. 创建一个新公式,只需在其中输入一个数字,然后保存。Crystal 现在将此公式与数字返回值相关联。
  2. 返回公式并删除数字并重新保存。现在,您有一个返回 null 的公式,但 CR 已将其关联为数值公式,因此您现在可以在任何可以使用数值类型的任何地方使用它。
if isNumeric({a_omgang.omg_resultat}) 
  then toNumber({a_omgang.omg_resultat})
else {@NullNumeric}

请注意,您也可以将其用于任何其他数据类型(包括字符串,因为空字符串不等同于空字符串),并且对于与摘要函数一起使用非常有用,因为您只想直接忽略某些行。

不确定这是否是最好的解决方案,但这是一个解决方案。

为字段的最大值创建汇总公式。通过公式
评估
NumericText(Replace({a_omgang.omg_resultat}, ".", ","))并按公式
重置 true

这将为您提供每个条目的最大结果。(即该条目。仅计算可转换为值的条目,因此所有其他条目均为 null。将true作为重置公式可确保始终获得正在评估的条目的值。

然后,可以使用问题中的公式将此汇总的结果转换为值。

Replace()是由于区域设置造成的,根据您的系统设置,可能不需要。如果需要,还必须在值转换公式中使用它。

据我所知,你不能直接这样做。如果数值公式字段返回 null,则将其转换为 0。

说你压制不了。你能转换成一个数字然后转换回一个字符串吗?

相关内容

  • 没有找到相关文章

最新更新