2012-02-20 14 views
0

私はこれを理解するのに2日間を費やしましたが、運はありません。できません( 私は条件が(IPMTが計算)真になるときに正しい値を示してどのようなIIF式を持っていますが、それだけで0ReportViewer IIF式は#errorを返します

=IIf(Fields!PaymentNumber.Value<>0, 
    IPmt(Fields!Annual_Interest_Rate.Value/1200,Fields!PaymentNumber.Value,Fields!Payment.Value,Fields!Total_Amount_Financed.Value), 
    0) 

すべてのフィールドが値を持つべきであるが、それ以外は常に、#エラーを返します。 null) これは何が原因でしょうか?

おかげ

+0

解決済み! IIF式の評価による問題。 vb.netは真と偽の場合も計算しようとします。 PaymentNumberが0の場合、IPmtは#Error(ゼロ除算)を返します。 解決策:IPmt内のPaymentNumberを0に設定すると、PaymentNumberを1(または0以外の何か)に設定します。 – Kres

+0

OHがちょうど私の回答を書き終えました。あなたがそれを理解してうれしいです。 – eric

答えて

0

誤差は、真の状態が常に評価されるためであり、お支払い番号= 0がドキュメントによれば、IIF発現の両方の条件が常に評価されたときにエラーを返します。

=IIf(Fields!PaymentNumber.Value=0, 0, 
    IPmt(Fields!Annual_Interest_Rate.Value/1200,Fields!PaymentNumber.Value,Fields!Payment.Value,Fields!Total_Amount_Financed.Value)) 

私が過去に行ったことは、「カスタムコード」で関数を作成することです。私は、IPMTを使用していないが、私は、これは動作するはずと信じて:

Function CalcIpmt(Annual_Interest_Rate As Decimal, PaymentNumber As Integer, Payment As Decimal, Total_Amount_Financed As Decimal) As Decimal) 

    If PaymentNumber = 0 Then 
     Return 0 
    Else 
     Return IPmt(Annual_Interest_Rate, PaymentNumber, Payment, Total_Amount_Financed) 
    End If 

End Function 

次に、あなたの式は次のようになります。

=Code.CalcIpmt(Fields!Annual_Interest_Rate.Value/1200, Fields!PaymentNumber.Value, Fields!Payment.Value, Fields!Total_Amount_Financed.Value) 

(注:私はこれをテストしていない、とあなたがする必要がありますデータタイプを確認してください)

関連する問題