0

私のレポートには以下のケースがあります。

売掛金:RunningValue(Fields!Receivable.Value,SUM,Nothing)

製造:code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))

Rec/Prod: 売掛金/生産。

Public Function SumLookup(ByVal items As Object()) As Decimal
    If items Is Nothing Then
        Return Nothing
    End If

    Dim suma As Decimal = New Decimal()
    Dim ct as Integer = New Integer()
    suma = 0
    ct = 0
    For Each item As Object In items
        suma += Convert.ToDecimal(item)
        ct += 1
    Next

    If (ct = 0) Then return 0 else return suma 
End Function

問題は Rec/Prod にあります。prod = 0 の場合、エラーが発生します。

私は以下の条件を入れようとしました:

IIF(code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))=0,0,RunningValue(Fields!Receivable.Value,SUM,Nothing)/(code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))))

しかし、偽の状態では、生産のために0を再取得する際に値を取得するためにcode.SumLookupを再呼び出ししているため、Rec / Prodのエラーが発生します。

時間だけ code.sumlookup を呼び出し、その値を変数に保存して、値を確認する必要があるたびに呼び出す必要がないようにするにはどうすればよいですか。

または他の解決策があればアドバイスしてください。

4

2 に答える 2

0

レポートにテキストボックスを追加して、その値を Production 式に設定してみます。テキストボックスに「Production」という名前を付けた場合、構文 ReportItems!Production.Value を使用してその値を参照できます。

于 2012-11-05T22:55:55.010 に答える
0

レポートにテキストボックスを追加して、その値をプロダクション式に設定しようとしました。テキストボックスに「Production」という名前を付け、構文 ReportItems!Production.Value を使用してその値を参照しましたが、同じエラーも発生しました。

私が見つけた解決策は以下です:

以下の関数の場合、レポート ビルダーは関数のすべての部分を評価します。これは、関数が「if prod=0」を考慮しているにもかかわらず、Rec/Prod 評価を実行し続けるため、エラーが発生することを意味します。この式を試してください。追加の 'IF' により、関数はエラーなしで評価できます。

IIF(code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))=0,0,RunningValue(Fields!Receivable.Value,SUM,Nothing)/IIF(code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))=0,1, code.SumLookup(LookupSet(Fields!Currency_Type.Value, Fields!Currency_Type1.Value,Fields!Gross_Premium_Amount.Value, "DataSet2"))))
于 2012-11-06T08:13:32.230 に答える