如何将代码值返回到变量中

时间:2012-11-05 10:54:22

标签: ssrs-2008 reporting-services reportbuilder3.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"))))

但是因为在错误的情况下我正在回忆code.SumLookup以获得重新生成0的值用于生产,并且我得到了Rec / Prod的错误。

我怎样才能按时调用code.sumlookup并将其值保存到变量中,所以每次我需要检查值时都不需要调用它。

或者如果有任何其他解决方案,请告知。

2 个答案:

答案 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"))))