微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从其他表获取行的SUMIIF的范围错误

如何解决从其他表获取行的SUMIIF的范围错误

当前正在使用以下代码获取范围错误,我们试图做的是计算符合条件的行数:

=
SUM(
IIF(
    Fields!Defect_Category.Value = "Packaging"
    & Fields!Defect_Category.Value = "Major"
    & Fields!WorkOrderdisplayID.Value = Fields!Work_Order_Id.Value,1,0),"dsdefects"
)

Work_Order_Id是dsGeneral数据集的“键”,该数据集是我们试图实现此功能的Tablix的当前作用域/数据集。有什么办法可以解决吗?

我的理解是SUM的Scope参数指的是我们试图获取之和(在这种情况下为count)的数据集。当将“ dsdefects”指定为SUM的范围时,出现以下错误

文本框“ TextBox101”的值表达式引用该字段 “ Work_Order_Id”。报告项目表达式只能引用字段 在当前数据集范围内,或者,如果在聚合范围内,则 指定的数据集范围。字段名称中的字母必须使用 正确的情况。

但是,如果删除范围参数值,则会出现以下错误

文本框“ TextBox101”的值表达式引用该字段 “缺陷类别”。报告项目表达式只能引用字段 在当前数据集范围内,或者,如果在聚合范围内,则 指定的数据集范围。字段名称中的字母必须使用 正确的情况。

解决方法

认为,您将需要这样的东西...

=
IIF(
    Fields!Defect_Category.Value = "Packaging"
    & Fields!Defect_Category.Value = "Major",LOOKUPSET(Fields!WorkOrderDisplayID.Value,Fields!WorkOrderDisplayID.Value,"dsDefects").Length,0)

我将举一个简单的示例来计算另一个数据集中的匹配项,这可能有助于您将两者放在一起以获得解决方案。

如果我使用以下查询创建两个数据集,分别称为dsEmpdsDev

dsEmp

DECLARE @e table (empid int,empname varchar(10))
insert into @e values
    (1,'Bob'),(2,'Dave')
SELECT * FROM @e

dsDev

declare @d table(empid int,device varchar(10))
insert into @d VALUES
    (1,'Phone'),(1,'Laptop'),'Desktop'),(3,'Tablet')
SELECT * FROM @d

然后在我的报告中,添加一个绑定到dsEmp的表,其中显示了empID和empName,然后在最后一栏中使用以下表达式

=LookupSet(
        Fields!empid.Value,Fields!empid.Value,"dsDev"
        ).Length
     

我得到了最终输出

enter image description here

当lookupset返回一个集合时,该集合的长度实际上就是该集合中包含的项目数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。