2012-12-12 107 views
0

考慮:SSRS - 動態字段

  • SQL Server 2008 R2的
  • SSRS 2008
  • 謙卑程序員

考慮兩個表:

CREATE TABLE PERSON 
(
    PersonID INT, 
    Name VARCHAR(100) 
) 

CREATE TABLE PERSON_EXTENDED 
(
    PersonExtendedID INT, 
    PersonID INT, 
    DOB DATETIME, 
    FavoriteColor VARCHAR(100) 
) 

進一步考慮以下查詢加入建議thei的表關係。

SELECT 
    * 
FROM 
    PERSON AS P 
    JOIN PERSON_EXTENDED AS PE ON (P.PersonID = PE.PersonID) 

爲了讓你的整體概念,我想創建一個存儲過程,將填充一個SSRS報告的字段選擇參數。然後使用選定的參數將其作爲參數傳遞給另一個存儲過程,該存儲過程使用所選字段創建報告。

我的想法最初是這樣的,但是這樣會產生2個問題。首先是兩個表格中1和2的重複順序。其次是重複的列名稱「PersonID」。

SELECT 
    C.COLUMN_NAME, 
    C.ORDINAL_POSITION 
FROM 
    INFORMATION_SCHEMA.columns AS C 
WHERE 
    C.TABLE_NAME = 'PERSON' 
    OR C.TABLE_NAME = 'PERSON_EXTENDED' 

有什麼想法?額外的功勞就是以可擴展的方式做到這一點,幷包含某種「顯示名稱」字段,因此最終用戶不必處理PersonID,但可以處理「個人身份識別」。

+0

我探討了添加一個主鍵消除了常見問題的表。該表還將具有表名,列名和顯示名稱,以消除其他問題。雖然這是一個非常簡單的解決方案,但如果字段名稱發生更改或字段被添加/刪除,這可以幫助您進行手動更新。 –

回答

0

Great Article!

這篇文章是在正確的方向邁出了一大步,反而可能是完整的解決方案。對於處於類似情況的任何其他人來說,這肯定是足夠的。

其中一個評論是特別吸引人的:

您好哈日,我用處理的多值參數的隱藏列表達式時 的另一種形式。

= IIF(濾波器(參數!MultiOption.Value, 「6」,真正的)。長度> 0,假,真)

這意味着,如果它在參數 列表選中後,顯示此列。在這個例子中,6是標籤的ID。

我有這樣一個小數據集,所以去定製 查詢的麻煩並不重要。

我擔心這將是巨大的資源密集型,但。