2012-12-14 24 views
0

我有一個從存儲過程加載的數據集。它有領域。數據集多次使用問題

DisplayID INT, 
Display VARCHAR(45), 
Default BIT 

我有一個稱爲DisplayFields的參數,它是一個多值參數。對於可用值,我將ValueField設置爲DisplayID,並將Label字段設置爲顯示字段。

我想默認選擇是數據集中的每個記錄,其中默認值= 1。有誰知道如何做到這一點?

EDIT 1

我有一個存儲過程。我用來填充數據集。我添加了一個基於默認字段的過濾器的第二個數據集。我不喜歡這個解決方案,因爲我相信我正在調用這個存儲過程兩次。

+0

因此,當您生成可用的參數值時,即第一次調用存儲過程時,即基於「默認」字段進行過濾。第二次調用存儲過程時到底什麼時候? –

+0

這兩個數據集都有相同的存儲過程用於填充它們。第二個有一個過濾器。存儲過程的這兩種用法在我的腦海裏都有其獨特的用處。我不知道SSRS是否足夠聰明,無法完成已經完成的數據提取。 –

回答

1

如果你總是有比你可以實現這樣的功能的至少一個默認值:

WITH TestData AS 
(
    SELECT 0 AS ID, 'always default' AS Name, 1 AS IsDefaultValue 
    UNION ALL 
    SELECT 1 AS ID, 'test1' AS Name, 0 AS IsDefaultValue 
    UNION ALL 
    SELECT 2 AS ID, 'test2' AS Name, 1 AS IsDefaultValue 
    UNION ALL 
    SELECT 3 AS ID, 'test3' AS Name, 0 AS IsDefaultValue 
    UNION ALL 
    SELECT 4 AS ID, 'test4' AS Name, 1 AS IsDefaultValue 
) 
SELECT ID, 
     Name, 
     IsDefaultValue, 
     CASE 
      WHEN IsDefaultValue = 0 
      THEN ID 
      -- return id of always default value 
      ELSE 0 
     END AS DefaultID   
FROM TestData 

然後在SSRS側您應該添加可用值作爲ID和默認爲DefaultID。 但是,我們不能在一組默認值中顯示某些未在可用值集中呈現的值(這就是爲什麼我們使用「始終默認值」)的原因,在這種情況下,默認選擇將不起作用,您應該調用SP兩次。