Lektion 2: Definieren eines Berichtsdatasets für ein ADO.NET-DataSet aus einem Webdienst

Neu: 17. Juli 2006

In dieser Lektion erstellen Sie eine Datenquellenverbindung mit einem Webdienst, von dem ein System.Data.DataSet-XML-Objekt zurückgegeben wird. Sie können einen Webdienst erstellen und bereitstellen, von dem ein System.Data.DataSet-XML-Objekt zurückgegeben wird, oder Sie können einen vorhandenen und für Sie verfügbaren Webdienst verwenden. Sie definieren eine Abfragezeichenfolge, mit der die Daten angegeben werden, die Sie für ein Berichtsdataset aus dem XML-System.Data.DataSet abrufen möchten, das vom Webdienst zurückgegeben wird.

Für dieses Lernprogramm werden Informationen zu Mitarbeitern und Managern mithilfe eines Webdienstes abgerufen, indem die gespeicherte Prozedur uspGetEmployeeManagers in der AdventureWorks-Beispieldatenbank aufgerufen wird. Diese gespeicherte Prozedur übernimmt einen EmployeeID-Wert und erstellt ein Resultset, in dem die Mitarbeiter-Manager-Beziehung umgekehrt bis zum Mitarbeiter auf oberster Ebene angezeigt wird.

Prozeduren

So erstellen Sie einen Webdienst, von dem ein ADO.NET-DataSet zurückgegeben wird (optional)

  1. Klicken Sie in Microsoft Visual Studio im Menü Datei auf Neu, und klicken Sie anschließend auf Website.

    Das Dialogfeld Neue Website wird geöffnet.

    Aa337489.note(de-de,SQL.90).gifHinweis:
    Wenn die Option Website nicht angezeigt wird, sollten Sie den Abschnitt mit den Anforderungen unter Lernprogramm: Verwenden von XML-Daten in einem Bericht lesen.
  2. Wählen Sie im Bereich Vorlagen die Vorlage ASP.NET-Webdienst aus.

  3. Wählen Sie in der Dropdownliste Speicherort die Option HTTP aus.

  4. Wählen Sie in der Dropdownliste Sprache entweder Visual Basic oder C# aus.

  5. Klicken Sie auf die Schaltfläche Durchsuchen.

    Das Dialogfeld Speicherort auswählen wird geöffnet.

  6. Vergewissern Sie sich, dass im Bereich für Website öffnen die Schltfläche Lokale IIS ausgewählt ist.

  7. Navigieren Sie in der Websitestrukturansicht zum übergeordneten Ordner für diese neue Website.

  8. Klicken Sie auf die Schaltfläche Neue Webanwendung erstellen.

  9. Geben Sie einen Namen für die Website ein.

  10. Klicken Sie auf Öffnen.

  11. Klicken Sie auf OK.

    Die App_Code/Service-Codepage für die Programmiersprache, die Sie in Schritt 4 ausgewählt haben, wird in Visual Studio geöffnet, und es wird die Beispiel-WebMethod HelloWorld angezeigt.

    Aa337489.note(de-de,SQL.90).gifHinweis:
    Der Standardnamespace lautet http://tempuri.org/. Dieser Namespace wird in der Abfrage verwendet, wenn Sie nachfolgend ein Berichtsdataset definieren. Bei einer Änderung dieser Standardeinstellung muss auch die Abfrage entsprechend geändert werden.
  12. Fügen Sie am Anfang der Quelldatei für Visual Basic oder C# die beiden folgenden Namespaceverweise hinzu.

    using System.Data;
    using System.Data.SqlClient;
    
    Imports System.Data
    Imports System.Data.SqlClient
    
  13. Ersetzen Sie HelloWorld-WebMethod durch folgenden Visual Basic- oder C#-Code.

    [WebMethod]
    public DataSet  GetEmployeeManagers(String EmployeeID)
    {
      Int32 val = Int32.Parse(EmployeeID);
      DataSet ds = new DataSet("Results");
      try
      {
        if (val < 1)
        val = 1;
        else if (val > 290) val = 290;
        SqlDataAdapter da = new 
    SqlDataAdapter(@"uspGetEmployeeManagers " + val.ToString(),
      @"Data Source=localhost; Initial Catalog=AdventureWorks; " +
      @"Integrated Security=true");
      da.Fill(ds);
      }
      catch (Exception e)
      {
        throw;
      }
      return ds;
     }
    
    <WebMethod()> _
    Public Function GetEmployeeManagers(ByVal EmployeeID As String) As DataSet
      Dim ds As DataSet = New DataSet("Results")
      Try
        Dim val As Integer = Integer.Parse(EmployeeID)
        If (val < 1) Then
           val = 1
        ElseIf (val > 290) Then
           val = 290
        End If
        Dim da As SqlDataAdapter = _
            New SqlDataAdapter("uspGetEmployeeManagers " + _
             val.ToString(), _
           "Data Source=localhost; Initial Catalog=AdventureWorks; " + _
                "Integrated Security=true")
            da.Fill(ds)
        Catch e As Exception
        Throw
      End Try
      Return ds
    End Function
    
  14. Klicken Sie im Menü Erstellen auf Website erstellen.

  15. Klicken Sie im Menü Erstellen auf Website veröffentlichen.

So testen Sie Ihren veröffentlichten Webdienst (Optional)

  1. Öffnen Sie Internet Explorer.

  2. Geben Sie in der Leiste Adresse den Webdienst-URL ein.

    Beispiel: https://localhost/XMLTutorial/Service.asmx.

    Die Webdienst-Standardseite wird angezeigt.

  3. Klicken Sie auf GetEmployeeManagersFromAdventureWorks.

  4. Geben Sie einen EmployeeID-Wert zwischen 1 und 290 ein.

  5. Klicken Sie auf Aufrufen.

    Für den Webdienst wird mithilfe der gespeicherten Prozedur uspGetEmployeeManagers ein Dataset mit den Managern der Mitarbeiter aus der AdventureWorks-Datenbank abgerufen.

Aa337489.note(de-de,SQL.90).gifHinweis:
Wenn die Meldung "Die Ausführen-Berechtigung wurde für das uspGetEmployeeManagers-Objekt, ... verweigert" angezeigt wird, müssen Sie ASPNETUser die Berechtigung zum Ausführen der gespeicherten AdventureWorks-Prozedur gewähren, wie im nachfolgenden Arbeitsschritt beschrieben.

So gewähren Sie Ausführungsberechtigungen für die gespeicherte Prozedur (Optional)

  1. Öffnen Sie Microsoft SQL Server Management Studio.

  2. Stellen Sie eine Verbindung mit dem Datenbankmodul her, auf dem die AdventureWorks-Beispieldatenbank installiert ist.

  3. Erweitern Sie im Objekt-Explorer die Knoten in der folgenden Reihenfolge: Datenbanken, AdventureWorks, Programmierbarkeit und Gespeicherte Prozeduren.

  4. Klicken Sie mit der rechten Maustaste auf dbo.uspGetEmployeeManagers, und wählen Sie Eigenschaften aus.

  5. Klicken Sie im Bereich Seite auswählen auf Berechtigungen.

  6. Klicken Sie im Bereich Benutzer oder Rollen auf die Schaltfläche Hinzufügen.

  7. Klicken Sie auf die Schaltfläche Durchsuchen. Wählen Sie [ASPNETUser] aus.

  8. Klicken Sie auf OK.

    Sie haben für jeden Benutzer, der ASP.NET ausführen, die Berechtigung zum Ausführen der gespeicherten Prozedur uspGetEmployeeManagers hinzugefügt.

So definieren Sie ein Berichtsdataset für den Webdienst

  1. Starten Sie den Berichts-Designer, und öffnen Sie das für dieses Lernprogramm erstellte Berichtsserverprojekt.

  2. Wählen Sie in der Datenansicht die Option Neues Dataset aus. Geben Sie einen Namen für das Dataset ein (z. B. XMLWebDataSet).

  3. Wählen Sie im Dialogfeld Dataset unter Datenquelle die Option Neue Datenquelle aus. Das Dialogfeld Datenquelle wird angezeigt.

  4. Geben Sie einen Namen für die Datenquelle ein (z. B. XMLWebDataSource).

  5. Wählen Sie unter Typ die Option XML aus.

  6. Geben Sie unter Verbindungszeichenfolge den folgenden URL zum Berichtsserver-Webdienst ein:

    https://localhost/XMLTutorial/Service.asmx

  7. Wählen Sie auf der Registerkarte Anmeldeinformationen die Option Windows-Authentifizierung verwenden (integrierte Sicherheit) aus.

  8. Klicken Sie auf OK, um die Änderungen zu speichern, und schließen Sie das Dialogfeld Datenquelle.

  9. Klicken Sie im Menü Bericht auf Berichtsparameter. Das Dialogfeld Berichtsparameter wird geöffnet.

  10. Klicken Sie auf Hinzufügen.

  11. Geben Sie im Abschnitt Eigenschaften im Textfeld Name den Wert EmployeeID ein.

  12. Geben Sie im Textfeld Eingabeaufforderung den Wert Employee ID ein.

  13. Klicken Sie auf OK.

  14. Klicken Sie auf der Registerkarte Daten auf der Symbolleiste auf die Schaltfläche Ausgewähltes Dataset bearbeiten (…). Das Dialogfeld Dataset wird geöffnet.

  15. Klicken Sie auf die Registerkarte Parameter.

  16. Geben Sie in der Spalte Name Folgendes ein: EmployeeID.

  17. Klicken Sie auf das Textfeld Wert, um die Dropdownliste zu aktivieren, und wählen Sie =Parameters!EmployeeID.Value aus. Damit wird der Datasetparameter dem Berichtsparameter zugeordnet.

  18. Klicken Sie auf OK.

  19. Geben Sie im Dialogfeld Dataset die folgende Abfrage ein. Verwenden Sie dabei die Versionsinformationen für den Namespace, die Sie in Schritt 1 überprüft haben:

    <Query>
        <SoapAction>
            http://tempuri.org/GetEmployeeManagers
        </SoapAction>
        <Method Namespace="http://tempuri.org/" 
            Name="GetEmployeeManagers">
        </Method>
    </Query>
    
  20. Klicken Sie auf der Symbolleiste auf die Schaltfläche Ausführen (!). Das Dialogfeld Abfrageparameter definieren wird geöffnet.

  21. Geben Sie in der Spalte Parameterwert eine Zahl zwischen 1 und 290 für EmployeeID ein.

  22. Klicken Sie auf OK. Das Dataset wird dem Fenster Datasets hinzugefügt.

  23. Überprüfen Sie das Resultset. Standardmäßig werden mit einer Abfrage Daten aus allen XML-Elementen und -Attributen extrahiert, bis hin zum Endknoten im ersten XML-Pfad, der im Dataset gefunden wird.

  24. Fügen Sie im Abfragebereich hinter dem <Query>-Tag folgenden ElementPath-Wert ein.

    <ElementPath IgnoreNamespaces="True">
        GetEmployeeManagersResponse {}/
        GetEmployeeManagersResult/diffgram{}/
        Results {}/Table 
    </ElementPath>
    

    Dadurch wird die Abfrage mit einem Elementpfad versehen, in dem angegeben wird, welche Elemente zum Abrufen von Daten im Resultset verwendet werden. In diesem Beispiel wird mit den leeren Klammern ({}) nach den Knoten GetEmployeeManagersResponse, GetEmployeeManagersResult, diffgram und Results angegeben, dass bei der Abfrage Daten aus diesen Knoten übersprungen werden. Mit dem Table-Knoten ohne Klammern wird angegeben, dass bei der Abfrage alle Knoten und Attribute für diesen Knoten abgerufen werden sollen.

    Aa337489.note(de-de,SQL.90).gifHinweis:
    Wenn Sie angeben möchten, welche Tabellenelemente für die Datasetfeldauflistung abgerufen werden sollen, listen Sie diese hinter dem Tabellenelement in geschweiften Klammern auf, wie im folgenden Beispiel veranschaulicht: Table {FirstName, LastName, EmployeeID, ManagerID, RecursionLevel}.
  25. Klicken Sie auf Ausführen (!), um das Resultset anzuzeigen. Mit den im ElementPath-Element vorgenommenen Änderungen wird auch das von der Abfrage zurückgegebene Resultset geändert.

  26. Wenn Sie mit dem Resultset zufrieden sind, klicken Sie auf der Symbolleiste auf die Schaltfläche Felder aktualisieren (Aktualisieren der Datasetfelder). Hierdurch wird die Berichtsdefinition gespeichert und die Ansicht der Felder im Fenster Berichtsdatasets aktualisiert, sodass nun alle Felder angezeigt werden, die Sie verwenden können.

Nächste Schritte

Sie haben erfolgreich ein Berichtsdataset aus einem XML-System.Data.DataSet object definiert, das von einem Webdienst zurückgegeben wurde. Bei der Verarbeitung des Berichts werden die Daten der einzelnen XML-Tabellenelemente und ihrer zugehörigen Attribute vom Webdienst abgerufen. Anschließend erstellen Sie ein Berichtsdataset aus XML-Code, der im Bericht eingebettet ist. Siehe Lektion 3: Definieren eines Berichtsdatasets aus eingebetteten XML-Daten.

Siehe auch

Konzepte

Reporting Services-Lernprogramme

Andere Ressourcen

Definieren von Berichtsdatasets für XML-Daten
Herstellen einer Verbindung mit einer Datenquelle
Definieren von Berichtsdatasets
Vorgehensweise: Erstellen oder Bearbeiten einer berichtsspezifischen Datenquelle (Berichts-Designer)
Vorgehensweise: Erstellen eines Datasets (Berichts-Designer)
Arbeiten mit Feldern in einem Berichtsdataset
Vorgehensweise: Hinzufügen, Bearbeiten oder Löschen eines Feldes im Fenster Datasets (Berichts-Designer)
Berichtsdatasets (Berichts-Designer)

Hilfe und Informationen

Informationsquellen für SQL Server 2005