一个或多个值都不是时的SSRS Lookupset和问题

时间:2019-01-16 09:33:29

标签: reporting-services

我在SSRS报告中对Lookupset遇到了一些问题。 该报告在组部分中具有父子结构,数据集来自不同的表格。

当Dataset2上缺少Dataset1的乘积之一时,总和返回0,就会出现问题。 我尝试使用此VB代码来求出Lookupset能够返回的所有值。

    Function SumLookup(ByVal items As Object()) As Decimal
    If items Is Nothing Then
    Return Nothing
    End If
    Dim suma As Decimal = New Decimal()
    suma = 0
    For Each item As Object In items
    suma += Convert.ToDecimal(item)
    Next
    Return suma
    End Function

我希望每个Product Lookupset的总和都可以让我拒绝,但是如果Dataset2中缺少其中一个Products,它只会返回0。

是否有办法管理Lookupset返回的Nothing?

对不起,格式不好,我的英语不好,谢谢!

2 个答案:

答案 0 :(得分:0)

我将通过检查SumLookup正在求和的 LOOKUPSET 表达式中的值来处理此问题。

ass u ,我的表情看起来像这样:

=CODE.SumLookup(LookupSet(Fields!ProductID.Value, 
    Fields!ProductID.Value, 
    Fields!Price.value, 
    "Dataset2") )

使用 IIF ISNOTHING 来检查NULL值并将其设置为零:

=CODE.SumLookup(LookupSet(Fields!ProductID.Value, 
    Fields!ProductID.Value, 
    IIF(ISNOTHING(Fields!Price.value), 0.00, Fields!Price.value), 
    "Dataset2") )

答案 1 :(得分:0)

该函数返回Decimal数据类型。通过Decimal数据类型Nothing0是相同的。您可以对此进行测试。

将Tablix的年份从2017年到2019年放入报表中。然后将年份以数字格式放在tablix的列中,然后在详细信息文本框中输入以下表达式:

=CDec(IIF(CDec(Fields!Year.Value) = 2017, 0, Nothing))

执行报告后,您会注意到Year列中的每个值都是0

检查也一样。这两个表达式将始终返回Yes。我基本上检查0,第二个检查Nothing

=IIF(CDec(IIF(CDec(Fields!Jahr.Value) = 2017, 0, Nothing)) = 0, "Yes", "No")
=IIF(CDec(IIF(CDec(Fields!Jahr.Value) = 2017, 0, Nothing)) = Nothing, "Yes", "No")

但是请记住,您的文本框/列必须是数字格式。

因此,如果您要返回Nothing并以数字格式显示它,它将显示0