【问题标题】:Calculation Error in Crystal Report Fomula水晶报表公式中的计算错误
【发布时间】:2012-12-06 15:43:11
【问题描述】:

我有 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

我该如何解决这个问题?

【问题讨论】:

  • 这些值是 NULL 还是空字符串? If Not IsNull({SalaryDetails.GrossAmount}) AND {SalaryDetails.GrossAmount} "" Then ...我还会检查您的数据库以确保没有任何字母字符,因为这也会导致该消息。跨度>
  • 我还包括空支票。但是如果我直接使用我会出错。所以我使用了 If Not IsNull({SalaryDetails.GrossAmount}) AND CSTR({SalaryDetails.GrossAmount}) "" Then.. 但同样的问题
  • 您可以尝试在十进制字段周围使用 CDBL() 吗?你确定数据库中没有字母字符吗?
  • @Andrew 是正确的,Crystal 认为 {SalaryDetails.GrossAmount} 或 {SalaryDetails.Deduction} 都不是数字。如果该字段是某种类型的字符串字段(如 VARCHAR),即使它只包含数字,也会发生这种情况。对一个字段尝试 CDBL() 技巧并检查错误,然后尝试另一个。 (如果您仍然收到错误,请尝试这两个字段。)
  • 谢谢朋友。我在这两个领域都添加了 CDBL,现在已经成功了。请告诉我这个字母字符是什么。实际上报告来源是LINQ查询,当输入参数没有数据时出现问题

标签: crystal-reports formula


【解决方案1】:

如果Crystal Reports 认为它​​正在使用一个不是数字的值,它将抛出此错误。 Crystal 有许多转换功能,如(CDBL、CSTR 等)以及您可以使用的数据检查功能(IsNull、IsNumeric 等)。

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

【讨论】:

    【解决方案2】:

    CDBL 或 IsNumeric 函数可以正常工作,例如:

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

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

    ================================================ ======================= 穆纳瓦尔沙阿弗里迪 (MCSD.net)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多