我的报告中有以下案例:
应收款: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"))))
但是因为在错误的情况下我正在回忆code.SumLookup以获得重新生成0的值用于生产,并且我得到了Rec / Prod的错误。
我怎样才能按时调用code.sumlookup并将其值保存到变量中,所以每次我需要检查值时都不需要调用它。
或者如果有任何其他解决方案,请告知。
答案 0 :(得分:0)
我会尝试在报告中添加一个文本框,并将其值设置为您的Production表达式。如果您将文本框命名为“Production”,则可以使用语法ReportItems!Production.Value引用该值。
答案 1 :(得分:0)
我确实尝试将文本框添加到报表中,并将其值设置为您的Production表达式。我将文本框命名为“Production”,并使用语法ReportItems!Production.Value引用该值,但它也给出了相同的错误。
我找到的解决方案如下:
对于以下功能,报告构建器将评估该功能的所有部分。这意味着即使你的函数考虑到“如果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"))))