2016-04-26 112 views
0

我需要创建一个基于两个数据集,即数据集1和数据集2的增量报告。 如果DataSet1中的任何字段值有任何更改,我需要将DataSet2作为参考。我需要更改文本框的颜色。 任何人都可以帮我在这里我写了一些代码,但它抛出错误。ssrs嵌套IIF来比较两个数据集

=IIF(Fields!CIF.value, "DataSet1" = Fields!CIF.value, "DataSet2" AND Fields!Account_ID.value,"DataSet1" = Fields!Account_ID.value,"DataSet2", 
         IIF(Fields!Account_balance.value, "DataSet1" <> Fields!Account_balance.value, "DataSet2","Yellow","Transparent"),"Transparent","Transparent") 

回答

0

您不能混合数据集。

这只有在您的数据集每个只有一行数据时才有效。否则,你需要弄清楚如何隔离你需要的值。

=IIF(MAX(Fields!CIF.value, "DataSet1") = MAX(Fields!CIF.value, "DataSet2") AND MAX(Fields!Account_ID.value, "DataSet1") = MAX(Fields!Account_ID.value, "DataSet2"), 
    IIF(MAX(Fields!Account_balance.value, "DataSet1") <> MAX(Fields!Account_balance.value, "DataSet2"), "Yellow", "Transparent"), "Transparent") 

通常情况下,您需要在表中有一个数据集,然后在另一个数据集中查找相应的值。

如果您CIF账号是我们共同的标识符和要compate每个帐户余额,我将立足于数据集1表,然后在值带来的dataset2比较。将CIF和帐户ID组合成单个文本字符串进行比较。然后

你的色彩表现会是这样的:

=Lookup(Fields!CIF.value & "|" & Fields!Account_ID.value, Fields!CIF.value & "|" & Fields!Account_ID.value, Account_balance.value, "DataSet2") 

SSRS:

使用查询检索从指定的数据集中值的 名称 - 值对,其中有一对一的关系。例如,对于 表中的ID字段,可以使用Lookup从未绑定到数据 区域的数据集中检索对应的名称字段 。

0

另一种方法是在存储过程中执行此操作,并将结果作为一个数据集返回。例如,假设我在表中有10个字段。我可以创建每条记录的数据散列:

select 
    CASE WHEN chkHash2 = chkHash1 THEN 0 ELSE 1 END as 'ChgFlag' 
    ,a.* 
FROM 
(
    select 
     HASHBYTES('md5', t2.Field1 + t2.Field2 + ... + t2.Field10) as 'chkHash2' 
     ,HASHBYTES('md5', t1.Field1 + t1.Field2 + ... + t1.Field10) as 'chkHash1' 
     ,t1.Field1, t1.Field2, ... t1.Field10 
    From Table2 t2 
    LEFT JOIN Table1 t1 on t1.ID = t2.ID 
) a 

大假设......两个表都有一个唯一且相关的ID。 这将给你一个Table1(dataset1)字段的结果集和一个标志,它会告诉你何时有任何字段从Table2(dataset2)更改过。

根据您的应用程序,这可能更容易,更快。我总是尝试在SQL中执行WORK而不是SSRS。