我在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?
对不起,格式不好,我的英语不好,谢谢!
答案 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
数据类型Nothing
和0
是相同的。您可以对此进行测试。
将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
。