2013年7月9日 星期二

[SQL Server 2008R2][SSRS] 參數使用

SQL Server Reporting Service 中參數使用,可以讓分析者自行輸入欲查詢的條件,動態產生對應的報表,就可以成功做到報表減量的需求。
SSRS中使用兩種不同類型的參數 : 「查詢參數」、「報表參數」。



「查詢參數」 : 是定義在資料集層級的變數  (影響查詢),用來影響 SSRS 內的資料集,因此查詢參數的寫法會隨著使用的資料提供者而有所不同,以 SQL Server 為例,資料庫查詢參數的寫法為「@參數名稱」,至於 Oracle 則會是「:參數名稱」。

「報表參數」 : 是定義在報表層級的變數 (影響報表使用者介面),用以顯示在前端介面供使用者設定挑選,通常報表參數會自動對應至查詢參數,但是報表參數值的格式都是固定利用「Parameters!參數名稱.Value」來作代表。

在資料集的 SQL 語法中,Where條件式中加入了查詢參數的篩選條件,資料來源為 SQL Server 時,在此輸入查詢參數的前面要加上@符號,才可以被辨識為查詢參數,不然會發生錯誤。儲存此查詢語法時,系統會自動產生一個同名的報表參數。



在報表資料視窗的「參數」按右鍵,選取「參數屬性」,如下圖
參數屬性對話方塊的「一般」頁籤設定內容如下:

  1. 名稱 : 該參數名稱,且必須在報表中是唯一的
  2. 提示 : 讓使用者可以明白該參數內容的說明
  3. 資料類型 : 該參數的資料型別,確定報表參數資料型別與查詢參數資料類型相符,SSRS不會自動偵測參數資料類型是否一致,因此必須自行調整資料類型,否則在產生報表時可能會發生錯誤。
  4. 允許空白值 : 是否允許使用者讓參數保持空白
  5. 允許 Null 值 : 是否允許使用者輸入參數空值
  6. 允許多個值 : 可定義複選參數,同時報表參數會以下拉式選單方式讓使用者利用核取方塊選取。若未選取此核取方塊,參數將會是單選。(有注意事項,請看下一篇)
  7. 選取參數可見性 : 用來設定參數的可見性


  • 可見 : 表示允許使用者看到參數以及設定參數
  • 隱藏 : 大多是運用在需要傳遞參數,但是卻不希望讓使用者看到或是變更參數內容時,例如權限控管時,可以將使用者身分當作參數的方式傳遞,此時可以隱藏報表之參數輸入區域上的參數,但是可以在報表 URL 或訂閱定義中設定參數的值
  • 內部 : 效果同上,不同的是無法在報表 URL 或訂閱定義中設定參數的值


下拉式參數選單
利用下拉式參數選單的形式,從資料庫中篩選全部可能的選項供使用者挑選,即可完全避免使用者輸入錯誤的情形發生。很多時候參數本身傳遞的是「代碼」,而不是一般人所熟知的「名稱」,這都會造成輸入的困難,所以下拉選單是方便的使用方式。
參數屬性對話方塊的「可用的值」頁籤設定,第一種是「指定值」,將所有可能的值一一輸入。

較好的方式是「從查詢取得值」功能,建立一個下拉選單要用的資料集。選取「參數屬性」後切換至「可用的值」頁籤,點選「從查詢取得值」,指定「值欄位」及「標籤欄位」。

參數屬性對話方塊中,將參數的資料型別設為「日期 / 時間」,切換至預覽報表時,可以用日曆元件選取適當的日期。不過目前 SSRS 的日曆元件並不會反映「可用的值」以及「複選」的功能。

沒有留言: