1

GrossSalary と Deductions の 2 つの 10 進数フィールドがあります。レポートでは、次のような 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

どうすればこれを修正できますか?

4

2 に答える 2

1

Crystal Reports は、数値ではない値を操作していると判断した場合、このエラーをスローします。Crystal には、(CDBL、CSTR など) のような多くの変換関数と、使用できるデータ チェック関数 (IsNull、IsNumeric など) があります。

特定のケースでは、Crystal が null 値または空白をチェックした後、値を DBL (CDBL({field})) に変換すると問題が解決します。

于 2012-12-07T15:15:03.430 に答える
0

CDBL または IsNumeric 関数は正常に機能しています。

{@Total} / 100 * CDBL({tblinvdetail.disc})。この式では、disc は tblinvdetail テーブルの割引列です。ディスク列も null 値を受け入れると仮定します。このエラーを回避するには、CDBL または IsNumeric 関数で null を 0 値に変換します。この種のエラーを回避するには、Crystal Report の任意の式に常に cdbl または IsNumeric 関数を適用する必要があります。出力の値に浮動小数点がない場合は、IsNumeric 関数を使用します。それ以外の場合は、CDBL 関数を使用します。IsNull 関数を使用して null 値を決定することもできます。

if IsNull({tblinvdetail.disc}) then "0" else {@Total} / 100 * {tblinvdetail.disc}

================================================== =================== ムナワール・シャー・アフリディ (MCSD.net)

于 2016-05-24T13:56:55.553 に答える