共用方式為


了解報表資料集 (報表產生器 2.0)

您可以將報表資料集的資料視覺化為一組資料列和資料行。您至少必須擁有一個資料行和零或多個資料列。在設計階段,您會建立一個查詢,此查詢會指定要從資料來源擷取的資料行。您將在設計階段使用中繼資料,讓您可以將資料集欄位連結到設計介面上的資料區域和報表項目。在執行階段,報表處理器會擷取實際的資料,並將其與報表配置結合。然後報表會傳遞到用於檢視報表的報表轉譯器。

當您在設計階段,於查詢設計工具中執行資料集查詢時,您會從資料來源看到一個顯示範例資料的資料列集。當使用者在執行階段檢視報表時,資料集查詢可能會產生不同的值,因為資料來源上的資料已變更。每次處理報表時,新的資料可能就會出現。

了解報表資料集資料

報表資料集可由下列類型的資料組成:

  • 來自關聯式資料庫的結果集,這可能是從執行資料庫命令、預存程序或使用者定義函數而產生。如果透過單一查詢擷取多個結果集,則系統只會處理第一個結果集,而且會忽略其他所有結果集。例如,當您在以文字為基礎的查詢設計工具中執行下列查詢時,只有 Production.Product 的結果集會出現在結果窗格中:

    SELECT ProductID FROM Production.Product
    GO
    SELECT ContactID FROM Person.Contact
    
  • 來自多維度資料來源的扁平化資料列集,該資料來源使用 XML for Analysis (XMLA) 通訊協定。某些資料提供者會提供來自資料來源的其他資料格和維度屬性,您無法在結果集中看到這些屬性,但是可以在報表中使用。

  • 來自 XML 資料來源的扁平化結果集,這些資料來源包括 XML 元素、其屬性及其子元素。

  • 來自任何已註冊並已設定之 .NET Framework 資料提供者的結果集。

  • 來自已針對特定資料來源設計之報表模型的資料,其中包含預先定義的實體、實體關聯性以及欄位。如需詳細資訊,請參閱<為報表模型建立報表資料集 (報表產生器 2.0)>。

當報表在執行階段處理時,針對查詢傳回的實際結果集可能擁有零或多個資料列。在查詢中定義的資料行也可能從資料來源遺失。來自資料來源的 Null 值會對應到 .NET Framework 值 System.DBNull.Value。 

設定資料屬性

當您定義報表資料集時,您可以在查詢中設定資料屬性,或接受由資料提供者所設定的預設值。您可以使用下列其中一個策略來變更資料類型:

  • 重新撰寫資料集查詢,將欄位特別轉換為不同的資料類型。

  • 編輯資料集中的欄位,並提供自訂格式。

  • 根據資料集欄位建立新的自訂欄位,並提供自訂格式。

對於支援國際資料的資料來源,您可能需要針對影響排序次序、國際字元屬性,以及是否要將大小寫字元視為相同的資料集,調整屬性。這些屬性包含大小寫、假名、寬度、腔調字和定序。如需詳細資訊,請參閱《SQL Server 線上叢書》中的<資料庫和 Database Engine 應用程式的國際化考量>和<使用定序>。如需有關如何設定這些屬性的詳細資訊,請參閱<資料集屬性對話方塊、選項 (報表產生器 2.0)>。

了解資料集欄位集合中的資料類型

在資料來源上,資料會使用此資料來源所支援的資料類型來儲存。例如,SQL Server 資料庫中的資料必須是其中一個支援的 SQL Server 資料類型,例如 nvarchar 或 datetime。當您從此資料來源擷取資料時,資料會透過與資料來源類型相關聯的資料處理延伸模組或資料提供者來傳遞。根據資料處理延伸模組,資料可以從資料來源所使用的資料類型轉換成資料處理延伸模組所支援的資料類型。Reporting Services 會使用與 Business Intelligence Development Studio 一起安裝之 Common Language Runtime (CLR) 所支援的資料類型。資料提供者會將結果集中的每一個資料行從原生資料類型對應到 .NET Framework Common Language Runtime (CLR) 資料類型。

在每一個階段,資料都是由資料類型來表示,如以下清單所述:

  • 資料來源:您所連接之資料來源類型版本所支援的資料類型。

    例如,適用於 SQL Server 資料來源的一般資料類型包括 int、datetime 和 varchar。SQL Server 2008 所導入的資料類型已經加入 date、time、datetimetz 和 datetime2 的支援。如需詳細資訊,請參閱<資料類型 (Transact-SQL)>。

  • 資料提供者或資料處理延伸模組:當您連接到資料來源時,您所選取之資料處理延伸模組的資料提供者版本所支援的資料類型。以 .NET Framework 為基礎的資料提供者會使用 CLR 所支援的資料類型。如需有關 .NET Framework 資料提供者資料類型的詳細資訊,請參閱 MSDN上的<資料型別對應 (ADO.NET)>和<使用基底型別>。

    例如,.NET Framework 所支援的一般資料類型包括 Int32 和 String。DateTime 結構支援日曆上的日期和時間。.NET Framework 2.0 Service Pack 1 針對具有時區時差的日期導入了 DateTimeOffset 結構的支援。

    [!附註]

    報表伺服器會使用報表伺服器上所安裝及設定的資料提供者。[預覽] 模式下的報表撰寫用戶端會使用用戶端電腦上所安裝及設定的資料處理延伸模組。您必須同時在報表用戶端和報表伺服器環境下測試您的報表。

  • 報表處理器:資料類型是以您安裝 Reporting Services 時所安裝的 CLR 版本為基礎。SQL Server 2008Reporting Services 會安裝以 .NET Framework 3.5 為基礎的 CLR。

    例如,SQL Server 2008 已導入報表處理器用於新日期和時間類型的日期類型,如下表所示:

    SQL 資料類型

    CLR 資料類型

    說明

    Date

    DateTime

    僅限日期

    Time

    TimeSpan

    僅限時間

    DateTimeTZ

    DateTimeOffset

    包含時區時差的日期和時間

    DateTime2

    DateTime

    包含毫秒的日期和時間

如需有關 SQL Server 資料庫類型的詳細資訊,請參閱<資料類型 (Database Engine)>和<日期和時間資料類型與函數 (Transact-SQL)>。

如需有關從運算式加入資料集欄位之參考的詳細資訊,請參閱<在運算式中使用資料類型 (報表產生器 2.0)>。

使用多個資料集

報表通常有一個以上的資料集。下列清單描述您如何在報表中使用資料集:

匯入資料集的現有查詢

建立資料集時,您可以建立新的查詢,也可以從檔案或其他報表匯入現有的查詢。系統只支援 .sql 和 .rdl 檔案類型。多維度運算式 (MDX) 查詢或資料採礦預測 (DMX) 查詢僅能由 Reporting Services 查詢設計工具產生,因為結果集必須當做扁平化資料列集擷取。

從其他報表匯入查詢時,您可以選擇要從報表中資料集之清單匯入的查詢。

在執行階段沒有擷取資料的資料列時顯示訊息

在報表處理期間,當資料集的查詢執行時,結果集可能不包含任何資料列。在轉譯的報表中,連結到空資料集的資料區域會顯示為空資料區域。您可以指定要在轉譯之報表中顯示的文字來取代空資料區域。當所有資料集的查詢在執行階段沒有產生任何資料時,您也可以指定子報表的訊息。如需詳細資訊,請參閱<如何:在資料區域中設定沒有資料的訊息 (報表產生器 2.0)>。

偵測遺漏的欄位

當報表處理時,資料集的結果集可能不包含指定之所有資料行的值,因為資料行不再存在於資料來源中。您可以使用欄位屬性 IsMissing 來偵測是否在執行階段傳回欄位的值。如需詳細資訊,請參閱<在運算式中使用資料集欄位集合參考 (報表產生器 2.0)>。

顯示隱藏的資料集

當您針對某些多維度資料來源建立參數化的查詢時,Reporting Services 就會自動建立資料集來提供參數的有效值。根據預設,這些資料集不會出現在 [報表資料] 窗格內。如需詳細資訊,請參閱<如何:顯示隱藏的資料集 (報表產生器 2.0)>。