Lektion 1: Definieren einer Datasetabfrage für einen Matrixbericht

  • In dieser Lektion fügen Sie dem im Lernprogramm Erstellen eines einfachen Tabellenberichts erstellten Berichtsserverprojekt einen neuen Bericht hinzu und definieren eine Datenquelle sowie eine Datasetabfrage. Sie verwenden die Beispieldatenbank AdventureWorks2008 als Datenquelle. In diesem Lernprogramm wird davon ausgegangen, dass diese Datenbank in der Standardinstanz von SQL Server auf Ihrem lokalen Computer installiert ist.

So öffnen Sie ein vorhandenes Reporting Services-Projekt

  1. Klicken Sie auf Start, zeigen Sie auf Alle Programme, zeigen Sie auf Microsoft SQL Server 2008, und klicken Sie dann auf Business Intelligence Development Studio.

  2. Zeigen Sie im Menü Datei auf Öffnen, und klicken Sie dann auf Projekt/Projektmappe.

  3. Navigieren Sie zum Berichtsserverprojekt mit dem Namen Lernprogramm.

  4. Klicken Sie im Ordner Tutorial auf Tutorial.sln.

  5. Klicken Sie auf Öffnen, um das Projekt zu öffnen.

    Das Tutorial-Projekt wird im Projektmappen-Explorer angezeigt.

So erstellen Sie einen neuen Bericht

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Berichte, zeigen Sie auf Hinzufügen, und klicken Sie auf Neues Element.

    HinweisHinweis

    Wenn der Projektmappen-Explorer nicht angezeigt wird, klicken Sie im Menü Ansicht auf Projektmappen-Explorer.

  2. Wählen Sie im Dialogfeld Neues Element hinzufügen im Bereich Vorlagen die Option Bericht aus.

  3. Geben Sie unter Name den Namen Sales by Area and Year.rdl ein, und klicken Sie dann auf Hinzufügen.

    Der Berichts-Designer wird im Entwurfsmodus mit einer leeren Berichtsdefinition geöffnet.

So definieren Sie eine Transact-SQL-Abfrage für Berichtsdaten

  1. Klicken Sie im Bereich Berichtsdaten auf Neu und dann auf Datenquelle.

  2. Geben Sie im Feld Name den Namen AdventureWorksMatrixData ein.

  3. Klicken Sie unter Datenquelle auf Neu. Das Dialogfeld Datenquelleneigenschaften wird angezeigt.

  4. Geben Sie im Feld Name den Namen AdventureWorks2008 ein.

    Stellen Sie sicher, dass Eingebettete Verbindung ausgewählt und Microsoft SQL Server als Typ festgelegt ist.

  5. Geben Sie für Verbindungszeichenfolge Folgendes ein:

    Data source=localhost; initial catalog=AdventureWorks2008
    
  6. Klicken Sie auf OK.

    Die Datenquelle wird im Bereich Berichtsdaten angezeigt.

  7. Klicken Sie im Bereich Berichtsdaten mit der rechten Maustaste auf AdventureWorks2008, und klicken Sie dann auf DataSet hinzufügen.

  8. Geben Sie im Feld Name den Namen Sales ein:

  9. Überprüfen Sie unter Abfragetyp, ob Text ausgewählt ist.

  10. Klicken Sie unterhalb von Abfrage auf Abfrage-Designer, um den textbasierte Abfrage-Designer zu öffnen.

  11. Fügen Sie im Abfragebereich die folgende Transact-SQL-Abfrage ein:

    SELECT 
       SOH.SalesPersonID AS ID, P.FirstName, P.LastName,
       SOH.SalesOrderNumber AS [Order], 
       SOH.OrderDate AS [Date], 
       DATEPART(yy, SOH.OrderDate) AS [Year], 
       DATEPART(mm, SOH.OrderDate) AS [Month],
       ST.[Group] AS [Geography],  
       ST.CountryRegionCode AS CountryRegion, 
       ST.Name AS Territory, 
       PPC.Name AS Category, PPS.Name AS Subcat, PP.Name AS Product,
       PP.Color, PP.Size, 
       CASE
          WHEN PP.Size = 'S' THEN 1
          WHEN PP.Size = 'M' THEN 2
          WHEN PP.Size = 'L' THEN 3
          WHEN PP.Size = 'XL' THEN 4
          ELSE PP.Size
       END AS SizeSortOrder,  
       SUM(SD.OrderQty) AS Qty,
       SUM(SD.LineTotal) AS LineTotal
    FROM Sales.SalesPerson AS SP 
       INNER JOIN Sales.SalesOrderHeader AS SOH
          ON SP.BusinessEntityID = SOH.SalesPersonID
       INNER JOIN Person.Person AS P 
          ON P.BusinessEntityID = SP.BusinessEntityID
       INNER JOIN Sales.SalesOrderDetail AS SD 
          ON SD.SalesOrderID = SOH.SalesOrderID
       INNER JOIN Production.Product AS PP 
          ON SD.ProductID = PP.ProductID
       INNER JOIN Sales.SalesTerritory AS ST 
          ON ST.TerritoryID = SP.TerritoryID
       INNER JOIN Production.ProductSubcategory AS PPS 
          ON PP.ProductSubcategoryID = PPS.ProductSubcategoryID
       INNER JOIN Production.ProductCategory AS PPC
          ON PPC.ProductCategoryID = PPS.ProductCategoryID
    GROUP BY PPC.Name, SOH.OrderDate, SOH.SalesOrderNumber, 
       PPS.Name, PP.Name, 
       SOH.SalesPersonID, P.LastName, P.FirstName,
       ST.[Group], ST.CountryRegionCode, ST.Name,
       PP.Color, PP.Size
    HAVING (DATEPART(yy,SOH.OrderDate) IN ('2003','2004') 
       AND ST.[Group] = 'North America' 
       AND LEFT(PPS.Name,1) IN ('C','T')
       AND LEFT(PPC.Name,1) = 'C')
    
  12. Zum Anzeigen der Ergebnisse der Abfrage klicken Sie auf der Symbolleiste des Abfrage-Designers auf Ausführen (die Schaltfläche mit dem Ausrufezeichen).

    Im Resultset werden die Daten aus 18 Feldern sieben verschiedener Tabellen in der Datenbank AdventureWorks2008 angezeigt. Diese Abfrage enthält eine Vielzahl von Feldern, die zum Gruppieren von Daten im Bericht verwendet werden können, u. a. Jahr und Monat ab Bestelldatum, geographische Lage der Vertriebsregion (für countryregion und territory), sowie Produktkategorie und -unterkategorie. Außerdem wurden die Vertriebsdaten gefiltert, um nur Bestellungen der Jahre 2003 und 2004, für Verkäufe in Nordamerika und für die Kategorien Clothing und Components sowie für Unterkategorien, die mit dem Buchstaben "C" beginnen, abzurufen. In diesem Lernprogramm wird die Filterung verwendet, um kompakte Beispiele zu erstellen, die auf einer einzelnen Seite angezeigt werden können.

  13. Klicken Sie auf OK. Klicken Sie erneut auf OK.

    Die Felder in der Datasetabfrage werden im Bereich Berichtsdaten angezeigt.

Nächster Task

Damit haben Sie erfolgreich eine Abfrage angegeben, die Daten für Ihren Bericht abruft. Anschließend fügen Sie einen Matrixdatenbereich der Entwurfsoberfläche hinzu und ordnen die Daten in der Matrix, indem Sie Gruppen hinzufügen. Siehe Lektion 2: Hinzufügen eines Matrixdatenbereichs mit Zeilen- und Spaltengruppen.