2016-04-26 69 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。