從 SQL Server 關聯式資料庫建立報表資料集 (報表產生器 2.0)

報表產生器 2.0 提供一個資料處理延伸模組,這個模組支援從 MicrosoftSQL Server 關聯式資料庫擷取報表資料。 您可以從資料庫資料表、檢視、預存程序和資料表值函數,擷取報表資料集的報表資料。

在建立報表資料集之前,必須建立具有資料來源類型 MicrosoftSQL Server 的資料來源。 在您建立 MicrosoftSQL Server 資料來源之後,可以用下列方式建立資料集:

  • 使用新增資料表或矩陣精靈或新增圖表精靈。 您可以在報表中選取現有的資料集,或者可以使用精靈來協助建立不同的資料集和查詢。

  • 從 [報表資料] 窗格建立資料集和資料集查詢。

指定報表資料集查詢

查詢會指定要針對報表資料集從 MicrosoftSQL Server 資料庫擷取什麼資料。 查詢結果集中的資料行會擴展資料集的欄位集合。 報表只會處理由任何查詢所擷取的第一個結果集。

您可以從下列選項選擇,以指定所要的資料:

  • 以互動方式建立查詢。 使用關聯式查詢設計工具,顯示資料表、檢視、預存程序和其他資料庫項目的階層式檢視 (依資料庫結構描述所組織)。 從資料表或檢視選取資料行,或者指定預存程序或資料表值函數。 藉由指定篩選準則,限制要擷取的資料列數目。 藉由設定參數選項,在報表執行時自訂篩選器。

  • 輸入或貼上查詢。 使用以文字為基礎的查詢設計工具可直接輸入 Transact-SQL 文字、從另一個來源貼上查詢文字、輸入不能利用關聯式查詢設計工具建立的複雜查詢,或是輸入以查詢為基礎的運算式。

  • 匯入檔案或報表中的現有查詢。 使用查詢設計工具的 [匯入查詢] 按鈕來瀏覽到 .sql 檔案或 .rdl 檔案,然後匯入查詢。

如需詳細資訊,請參閱<關聯式查詢設計工具使用者介面 (報表產生器 2.0)>、<以文字為基礎的查詢設計工具使用者介面 (報表產生器 2.0)>和<如何:從 SQL Server 資料來源擷取資料 (報表產生器 2.0)>。

使用 Text 查詢類型

在以文字為基礎的查詢設計工具中,您可以輸入 Transact-SQL 命令來定義資料集內的資料。 例如,下列 Transact-SQL 查詢會選取所有行銷助理員工的名字。

SELECT
  HumanResources.Employee.BusinessEntityID
  ,HumanResources.Employee.JobTitle
  ,Person.Person.FirstName
  ,Person.Person.LastName
FROM
  Person.Person
  INNER JOIN HumanResources.Employee
    ON Person.Person.BusinessEntityID = HumanResources.Employee.BusinessEntityID
WHERE HumanResources.Employee.JobTitle = 'Marketing Assistant' 

按一下工具列上的 [執行] 按鈕 (!) 來執行查詢並顯示結果集。

若要將這個查詢參數化,請加入查詢參數。 例如,將 WHERE 子句變更為下列:

WHERE HumanResources.Employee.JobTitle = (@JobTitle)

當您執行查詢時,會自動建立與查詢參數對應的報表參數。 如需詳細資訊,請參閱本主題稍後的「查詢參數」。

使用 StoredProcedure 查詢類型

您可以用下列其中一種方式指定資料集查詢的預存程序:

  • [資料集屬性] 對話方塊中,設定 [預存程序] 選項。 從預存程序和資料表值函數的下拉式清單選擇。

  • 在關聯式查詢設計工具的 [資料庫檢視] 窗格中,選取預存程序或資料表值函數。

  • 在以文字為基礎的查詢設計工具中,從工具列選取 [StoredProcedure]

在選取預存程序或資料表值函數後,就可以執行查詢。 系統會提示您輸入參數值。 當您執行查詢時,會自動建立與輸入參數對應的報表參數。 如需詳細資訊,請參閱本主題稍後的「查詢參數」。

只支援預存程序所擷取的第一個結果集。 如果預存程序傳回多個結果集,只會使用第一個結果集。

如果預存程序的參數有預設值,可以使用 DEFAULT 關鍵字做為參數的值來存取該值。 如果查詢參數連結到報表參數,使用者可以在報表參數的輸入方塊中輸入或選取 DEFAULT 一字。

如需有關預存程序的詳細資訊,請參閱《SQL Server 線上叢書》中的<預存程序 (Database Engine)>。

使用查詢參數

對於包含參數的查詢文字或是具有輸入參數的預存程序,會自動建立對應的報表參數。 報表執行時,報表參數的值會傳遞給查詢參數。 例如,下列 SQL 查詢會建立名為 EmpID 的報表參數:

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID 
WHERE EmployeeID = @EmpID

您可以管理報表參數與查詢參數之間的關聯性,其方式是使用<資料集屬性對話方塊、參數 (報表產生器 2.0)>。 具有參數的查詢若是連結到報表參數,則不需要 DECLARE 陳述式。

雖然報表參數是從查詢參數自動建立,但是您會在 [報表資料] 窗格中個別管理報表參數。

[!附註]

如果變更查詢參數的名稱,或刪除查詢參數,與查詢參數對應的報表參數並不會自動變更或刪除。 您可以使用 [報表資料] 窗格工具列中的按鈕,以移除或變更報表參數的順序。 如需詳細資訊,請參閱<將參數加入至您的報表 (報表產生器 2.0)>。

修改資料集

在建立資料集之後,可以在 [報表資料] 窗格中檢視此資料集和它的欄位集合。 您也可以使用 [資料集屬性] 對話方塊來執行下列某些工作:

  • 加入導出欄位來編輯欄位集合。 導出欄位會擁有在此查詢執行後所評估的以運算式為基礎的值; 欄位的資料類型會從 .NET Framework 對應到 Common Language Runtime (CLR) 資料類型的子集。

  • 指定 Timeout、CaseSensitivity 和 Collation 等資料集屬性。

  • 修改查詢來加入參數,以讓使用者或報表作者在執行階段自訂報表的資料。

此外,若要變更資料在資料集中的排序或篩選方式,請參閱下列主題: