共用方式為


使用參數來控制報表資料

新增: 2006 年 7 月 17 日

在處理報表時,您可以使用參數來控制要從資料來源中擷取的資料,也可以在擷取資料之後使用參數來進行篩選。建議您將資料來源中擷取而來的資料限制為報表所特別需要的資料,這樣會是一個好的作法。但是,當您使用預存程序來擷取資料時,將無法控制要從查詢中擷取的資料為何,因此,您需要在擷取報表資料之後進行篩選。

篩選資料來源的資料

使用查詢參數可協助您指定要從資料來源中擷取的精確資料;查詢參數可讓您先在伺服器上篩選資料,然後再將資料傳送至報表。

當您定義的資料集具有包含變數的查詢時,Reporting Services 的查詢設計師元件會針對每一個變數建立查詢參數。此外,會針對每一個查詢參數建立對應的報表參數,好讓使用者或報表作者可以選取報表參數的值,並在查詢中將這些值傳遞給資料來源。

查詢參數

查詢參數定義為資料集之查詢定義的一部分;由於每一個報表資料集都會定義單一查詢,所以查詢參數定義為資料集的屬性。

當您定義資料集時,您會指定特定的資料來源類型,例如 Microsoft SQL Server。「報表設計師」會開啟設計來與該資料來源類型一起工作的查詢設計師,或是可以與任何資料來源類型一起工作的一般查詢設計師。當您為此資料來源定義查詢時,查詢設計師會識別查詢命令文字內的變數,並針對每一個建立查詢參數。如需有關資料來源所預期之查詢語法的詳細資訊,請參閱<搭配特定資料來源使用查詢參數>。

如果是 SQL Server 資料來源,查詢通常會在 Transact-SQL 陳述式的 WHERE 子句中包含變數,以限制在執行查詢時所傳回的資料範圍。同樣地,Analysis Services 資料來源查詢通常會包含用於 FILTER 子句中的 MDX 變數。查詢也可以包含以輸入形式傳遞給預存程序或使用者自訂函數的變數。

每當您修改資料集的查詢時,就會重新處理該查詢。如果您移除或重新命名變數來變更查詢,查詢參數將會反映這些變更。只有存在於查詢命令文字中的那些變數才會是資料集查詢定義中的查詢參數。

每一個查詢參數的預設值都會設定為一個運算式,此運算式會評估為對應的報表參數。這個參數繫結是定義在資料集屬性的 [參數] 索引標籤上。例如,如果是 SQL Server 資料來源,且查詢參數為 @MyParameter,則報表參數會是 MyParameter,且 @MyParameter 的值會設定為運算式 =Parameters!MyParameter.Value。如需詳細資訊,請參閱<資料集 (參數索引標籤,報表設計師)>。您可以手動編輯查詢參數及設定查詢參數的預設值。如需詳細資訊,請參閱<如何:將查詢參數與報表參數相關聯 (報表設計師)>。

Aa337287.note(zh-tw,SQL.90).gif附註:
當您移除或變更查詢參數的名稱時,並不會自動移除或變更對應的報表參數。

報表參數

在「報表設計師」中,當您定義包含變數的資料集查詢時,會自動建立報表參數。在「報表產生器」中,當您設定篩選子句的提示時,會自動建立報表參數。您也可以在 [報表參數] 對話方塊中手動建立未繫結至查詢參數的報表參數。

  • 報表參數資料類型及其他報表參數屬性會影響該參數呈現在報表工具列上的方式。您可以根據參數的資料類型,使用選項按鈕、文字方塊、下拉式清單、日曆控制項或多個核取方塊來設定報表參數屬性。
  • 報表參數可以是單一值,也可以是多重值。多重值參數可讓使用者為該參數選取一個以上的值。
  • 某個報表參數可以與另一個報表參數相依,報表參數的順序很重要。參數清單中順序在後面的參數可以與清單中順序在前面的參數相依,如此可讓您定義一組參數 (稱為串聯參數),也就是某一個參數的值清單會視另一個參數所選擇的值而定。
  • 報表參數可用於運算式。凡是可以使用運算式的地方,就能使用包含參數的運算式。當執行報表時,每一個參數中的值都會以運算式替代。如此一來,使用者選取的參數可以有條件地控制報表外觀和內容的許多層面,包括隱藏資料列和資料行、排序及篩選資料,以及處理 Null 資料。

當您撰寫報表時,報表參數是報表定義的一部分,但是當報表發行之後,便可以獨立管理報表參數。在「報表設計師」的 [資料] 或 [配置] 檢視中,可以編輯針對報表所定義的參數。如需詳細資訊,請參閱<如何:加入、編輯或刪除報表參數 (報表設計師)>。在發行報表定義之後,您可以使用「報表管理員」修改參數屬性。如需詳細資訊,請參閱<設定已發行報表的參數屬性>。

快速變更參數的有效值

您指定的可用值具有快速變更的特性時,這些值可能會在執行報表前就變成過時。這可能造成使用者所選取的清單值,在提交值和執行報表時,就不再是有效的值。若要避免此狀況的發生,請撰寫查詢來傳回有效值清單的資料集,此資料集在一般使用者選取值及執行報表所需的時間內將不會變更。

另外,請避免快速變更非查詢的值。例如,您若是提供目前日期作為可用的值,請撰寫使用 DateTime.Today 屬性而非使用 DateTime.Now 屬性的運算式。這會排除時間值快速變更的特性。

篩選報表資料

從資料來源中擷取資料之後,可加以篩選,其方式是在資料集上定義包含參數參考的篩選運算式。如此一來,如果報表讀者在處理報表時,選取參數的值,只有通過篩選的資料才會顯示在報表中。

請參閱

工作

如何:將查詢參數與報表參數相關聯 (報表設計師)

概念

定義報表資料集

其他資源

教學課程:在基本表格式報表中加入參數
教學課程:使用參數的進階功能
定義報表資料來源
資料檢視 (報表設計師)

說明及資訊

取得 SQL Server 2005 協助