【问题标题】:SSRS Lookupset sum problem when one or more value are nothing当一个或多个值都没有时的SSRS Lookupset求和问题
【发布时间】:2019-01-17 13:30:50
【问题描述】:

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

当 Dataset2 上缺少 Dataset1 中的 Product 时,会出现问题,总和返回 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 中缺少其中一个产品,它只会返回 0。

有没有办法管理 Lookupset 返回的 Nothing?

对于格式设置和我糟糕的英语感到抱歉,提前致谢!

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

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

    ass你的表情看起来像这样:

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

    使用 IIFISNOTHING 来检查 NULL 值并将它们设置为零:

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

    【讨论】:

      【解决方案2】:

      函数返回Decimal 数据类型。通过Decimal 数据类型Nothing0 是相同的。你可以测试一下。

      将2017年至2019年的年份放入报表中。然后将年份以数字格式放入tablix的列中,然后在详细文本框中写入以下表达式:

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

      执行报告后,您会注意到年份列中的每个值都是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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多