Crystal reports 使用Crystal Reports公式将数字字符串转换为值,但将非数字保留为空/null
我有一个字符串字段,主要包含数字十进制值,但有时包含“之类的值,不确定这是否是最佳解决方案,但它是一个解决方案 为字段的最大值创建一个运行总计公式。按公式计算Crystal reports 使用Crystal Reports公式将数字字符串转换为值,但将非数字保留为空/null,crystal-reports,null,formula,Crystal Reports,Null,Formula,我有一个字符串字段,主要包含数字十进制值,但有时包含“之类的值,不确定这是否是最佳解决方案,但它是一个解决方案 为字段的最大值创建一个运行总计公式。按公式计算 NumericText(替换({a_omgang.omg_resultat},“.”,“,”) 并通过公式重置 true 这将为您提供每个条目(即该条目)的最大结果。只有可以转换为值的条目才会被计算,因此所有其他条目都将为空。将true作为重置公式可确保您始终获得被计算条目的值 然后,可以使用问题中的公式将该运行总计的结果转换为一个值 R
NumericText(替换({a_omgang.omg_resultat},“.”,“,”)
并通过公式重置
true
这将为您提供每个条目(即该条目)的最大结果。只有可以转换为值的条目才会被计算,因此所有其他条目都将为空。将true
作为重置公式可确保您始终获得被计算条目的值
然后,可以使用问题中的公式将该运行总计的结果转换为一个值
Replace()
由区域设置决定,可能不需要,具体取决于您的系统设置。如果需要,还必须在值转换公式中使用它。据我所知,您不能直接执行此操作。如果数值公式字段返回空值,它将转换为0
你说你不能抑制。你能转换成一个数字,然后再转换成一个字符串吗?你可以通过执行以下操作来实现这一点:
请注意,您也可以将其用于任何其他数据类型(包括字符串,因为空字符串并不等同于空字符串),它非常适用于只想直接忽略某些行的摘要函数。在过去,我创建了一个返回空值的SQL表达式:
-- {@DB_NULL}
-- Oracle syntax
(
SELECT NULL FROM DUAL
)
然后我在公式中引用此字段:
// {@FormulaField}
If IsNumberic({table.field} Then
ToNumber({table.field})
Else
ToNumber({@DB_NULL})
对于这个特定的报告,它将足以抑制,但我对一个通用的解决方案感兴趣。更新问题。有趣的概念,但我得到“无效的对象名'DUAL'“当我运行MS SQL server时。已尝试将其更改为实际表名,但仍会出现错误。请仅尝试
选择NULL
。我没有访问SQL Server的权限,因此无法对此进行测试。
-- {@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})