我有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
我该如何解决这个问题?
答案 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)