Crystal Report公式中的计算错误

时间:2012-12-06 15:43:11

标签: crystal-reports formula

我有2个十进制字段:GrossSalary和Deductions。在报告中,我创建了一个名为NetSalary的公式字段,它是:

If Not IsNull({SalaryDetails.GrossAmount}) Then
 {SalaryDetails.GrossAmount} - {SalaryDetails.Deduction}

当数据可用时,报告会正确运行,但如果没有,我会收到以下错误

A number, currency amount,date,time, or date-time is required here.
Details:errorKind
Error in File tempxxxxxxxxx.rpt:
Error in formula NetAmount:
'If Not IsNull({SalaryDetails.GrossAmount}) Then
'
A number,currency amount,date,time, or date-time is required here.
Details:errorKind

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果Crystal Reports认为它使用的值不是数字,则会抛出此错误。 Crystal有许多转换函数,如(CDBL,CSTR等),还有可以使用的数据检查函数(IsNull,IsNumeric等)。

在您的特定情况下,将值转换为DBL(CDBL({field})可在Crystal检查空值或空白后解决您的问题。

答案 1 :(得分:0)

CDBL或IsNumeric函数很好用,例如:

{@Total} / 100 * CDBL({tblinvdetail.disc})。在此公式中,disc是tblinvdetail表的折扣列。我们假设disc列也接受空值。为避免此错误,CDBL或IsNumeric函数将null转换为0值。您应该预先在Crystal Report的任何公式中应用cdbl或IsNumeric函数以避免此类错误。如果输出值没有其他明智的CDBL函数,则使用IsNumeric函数。您还可以使用IsNull函数来确定空值,例如:

如果是IsNull({tblinvdetail.disc})那么   “0” 其他   {@Total} / 100 * {tblinvdetail.disc}

=============================================== ====================== Munawar Shah AFridi (MCSD.net)