Share via


Leçon 2 : Définition d'un dataset du rapport pour un dataset ADO.NET à partir d'un service Web

Nouveau : 17 juillet 2006

Dans cette leçon, vous allez créer une connexion de source de données à un service Web qui retourne un objet XML System.Data.DataSet. Vous pouvez créer et déployer un service Web qui retourne un objet XML System.Data.DataSet ou utilisez un service Web existant auquel vous pouvez accéder. Vous définirez une chaîne de requête qui spécifie les données que vous voulez extraire pour un dataset de rapport à partir de l'objet XML System.Data.DataSet retourné par le service Web.

Dans le cadre de ce didacticiel, un service Web extrait les informations relatives aux employés et aux directeurs en appelant la procédure stockée uspGetEmployeeManagers de l'exemple de base de données AdventureWorks. Cette procédure stockée accepte une valeur EmployeeID et génère un jeu de résultats qui affiche la relation employé-directeur de façon récursive jusqu'à l'employé de niveau supérieur.

Procédures

Pour créer un service Web qui renvoie un dataSet ADO.NET (facultatif)

  1. Dans Microsoft Visual Studio, dans le menu Fichier, cliquez sur Nouveau, puis sur Site Web.

    La boîte de dialogue Nouveau site Web s'affiche.

    Aa337489.note(fr-fr,SQL.90).gifRemarque :
    Si Site Web n'apparaît pas en tant qu'option, vérifiez la section relative à la configuration requise pour Didacticiel : Utilisation de données XML dans un rapport.
  2. Dans le volet Modèles, sélectionnez Service Web ASP.NET.

  3. Dans la liste déroulante Emplacement, sélectionnez HTTP.

  4. Dans la liste déroulante Langage, sélectionnez Visual Basic ou C#.

  5. Cliquez sur le bouton Parcourir.

    La boîte de dialogue Choisir un emplacement s'affiche.

  6. Dans le volet Ouvrir un site Web, vérifiez que le bouton Serveur IIS local est sélectionné.

  7. Sur le contrôle d'arborescence du site Web, naviguez jusqu'au dossier parent de ce nouveau site Web.

  8. Cliquez sur le bouton Créer une application Web.

  9. Tapez un nom pour votre site Web.

  10. Cliquez sur Ouvrir.

  11. Cliquez sur OK.

    La page de codes App_Code/Service du langage de programmation sélectionné à l'étape 4 s'ouvre dans Visual Studio et affiche l'exemple HelloWorld WebMethod.

    Aa337489.note(fr-fr,SQL.90).gifRemarque :
    L'espace de noms par défaut est http://tempuri.org/. Cet espace de noms sera utilisé dans la requête lorsque vous définirez, ci-dessous, un dataset de rapport. Si vous modifiez cette valeur par défaut, vous devrez changer la requête.
  12. Ajoutez les deux références d'espaces de noms suivantes au début du fichier source Visual Basic ou C#.

    using System.Data;
    using System.Data.SqlClient;
    
    Imports System.Data
    Imports System.Data.SqlClient
    
  13. Remplacez la méthode Web HelloWorld par le code Visual Basic ou C# ci-après.

    [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. Dans le menu Générer, cliquez sur Générer le site Web.

  15. Dans le menu Générer, cliquez sur Publier le site Web.

Pour tester votre service Web publié (facultatif)

  1. Ouvrez Internet Explorer.

  2. Dans la barre Adresse, tapez l'URL de votre service Web.

    Par exemple, https://localhost/XMLTutorial/Service.asmx.

    La page par défaut du service Web s'affiche.

  3. Cliquez sur GetEmployeeManagersFromAdventureWorks.

  4. Tapez une valeur pour EmployeeID comprise entre 1 et 290.

  5. Cliquez sur Appeler.

    Le service Web extrait un dataset avec les supérieurs des employés à partir de la base de données AdventureWorks à l'aide de la procédure stockée uspGetEmployeeManagers.

Aa337489.note(fr-fr,SQL.90).gifRemarque :
Si vous obtenez le message « Autorisation Execute refusée sur l'objet », vous devez accorder l'autorisation d'exécution sur la procédure stockée AdventureWorks pour ASPNETUser, comme décrit dans la procédure suivante.

Pour accorder des autorisations d'exécution pour la procédure stockée (facultatif)

  1. Ouvrez Microsoft SQL Server Management Studio.

  2. Connectez-vous au Moteur de base de données où l'exemple de base de données AdventureWorks est installé.

  3. Dans l'Explorateur d'objets, développez successivement les nœuds Bases de données, AdventureWorks, Programmabilité et Procédures stockées.

  4. Cliquez avec le bouton droit sur dbo.uspGetEmployeeManagers, puis choisissez Propriétés.

  5. Dans le volet Sélectionnez une page, cliquez sur Autorisations.

  6. À côté du volet Utilisateurs ou rôles, cliquez sur le bouton Ajouter.

  7. Cliquez sur le bouton Parcourir. Sélectionnez [ASPNETUser].

  8. Cliquez sur OK.

    Vous avez ajouté l'autorisation pour toute personne exécutant ASP.NET d'exécuter la procédure stockée uspGetEmployeeManagers.

Pour définir un dataset de rapport pour le service Web

  1. Démarrez le Concepteur de rapports et ouvrez le projet de serveur de rapports créé pour ce didacticiel.

  2. Dans la vue Données, sélectionnez Nouveau dataset. Tapez le nom du dataset (par exemple, XMLWebDataSet).

  3. Dans la boîte de dialogue Dataset, dans Source de données, sélectionnez Nouvelle source de données. La boîte de dialogue Source de données s'affiche.

  4. Tapez un nom pour la source de données (par exemple, XMLWebDataSource).

  5. Dans la zone Type, sélectionnez XML.

  6. Dans Chaîne de connexion, tapez l'URL suivante pour accéder au service Web Report Server :

    https://localhost/XMLTutorial/Service.asmx

  7. Sous l'onglet Informations d'identification, sélectionnez Utiliser l'authentification Windows (sécurité intégrée).

  8. Cliquez sur OK pour enregistrer les modifications et fermer la boîte de dialogue Source de données.

  9. Dans le menu Rapport, cliquez sur Paramètres du rapport. La boîte de dialogue Paramètres du rapport s'ouvre.

  10. Cliquez sur Ajouter.

  11. Dans la section Propriétés, dans la zone de texte Nom, tapez EmployeeID.

  12. Dans la zone de texte Demander, tapez Employee ID (ID de l'employé).

  13. Cliquez sur OK.

  14. Sous l'onglet Données, cliquez sur le bouton Modifier le dataset sélectionné (...) de la barre d'outils. La boîte de dialogue Dataset s'affiche.

  15. Cliquez sur l'onglet Paramètres.

  16. Dans la colonne Nom, tapez EmployeeID.

  17. Cliquez dans la zone de texte Valeur et, dans la liste déroulante, sélectionnez =Parameters!EmployeeID.Value. Le paramètre de dataset est ainsi mis en correspondance avec le paramètre de rapport.

  18. Cliquez sur OK.

  19. Dans la boîte de dialogue Dataset, tapez la requête suivante à l'aide des informations de version d'espace de noms que vous avez vérifiées à l'étape 1 :

    <Query>
        <SoapAction>
            http://tempuri.org/GetEmployeeManagers
        </SoapAction>
        <Method Namespace="http://tempuri.org/" 
            Name="GetEmployeeManagers">
        </Method>
    </Query>
    
  20. Cliquez sur le bouton Exécuter (!) de la barre d'outils. La boîte de dialogue Définir les paramètres de la requête s'affiche.

  21. Dans la colonne Valeur du paramètre, entrez un numéro d'EmployeeID compris entre 1 et 290.

  22. Cliquez sur OK. Le dataset est ajouté dans la fenêtre Datasets.

  23. Examinez le jeu de résultats. Par défaut, une requête extrait les données à partir de tous les attributs et éléments XML jusqu'au nœud terminal du premier chemin d'accès XML qu'elle trouve dans le dataset.

  24. Collez l'ElementPath suivant dans le volet Requête juste après la balise <Query>.

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

    La requête est ainsi pourvue d'un chemin d'élément spécifiant les éléments à utiliser pour extraire les données du jeu de résultats. Dans ce cas, les accolades vides ({}) après les nœuds GetEmployeeManagersResponse, GetEmployeeManagersResult, diffgram et Results, signifient à la requête d'ignorer les données à partir de ces nœuds. Le nœud Table sans crochets demande à la requête d'extraire tous les nœuds et attributs de ce nœud.

    Aa337489.note(fr-fr,SQL.90).gifRemarque :
    Pour spécifier les éléments Table à extraire pour la collection de champs du dataset, répertoriez-les après l'élément Table à l'intérieur des accolades, comme illustré dans l'exemple suivant : Table {FirstName, LastName, EmployeeID, ManagerID, RecursionLevel}.
  25. Cliquez sur Exécuter (!) pour afficher le jeu de résultats. Les modifications effectuées dans l'élément ElementPath changent le jeu de résultats retourné par la requête.

  26. Lorsque vous êtes satisfait du jeu de résultats, cliquez sur le bouton Actualiser les champs (Actualiser les champs du dataset) de la barre d'outils. Cette opération enregistre la définition de rapports et met à jour la vue des champs dans la fenêtre Datasets du rapport pour afficher tous les champs utilisables.

Étapes suivantes

Vous avez défini avec succès un dataset de rapport à partir d'un objet XML System.Data.DataSet object retourné par un service Web. Lors du traitement du rapport, les données de chaque élément XML Table et ses attributs sont extraits du service Web. Ensuite, vous allez créer un dataset de rapport à partir de données XML incorporées au rapport. Voir Leçon 3 : Définition d'un dataset de rapport à partir de données XML incorporées.

Voir aussi

Concepts

Didacticiels de Reporting Services

Autres ressources

Définition de datasets de rapport pour des données XML
Connexion à une source de données
Définition des datasets de rapports
Procédure : créer ou modifier une source de données propre à un rapport (Concepteur de rapports)
Procédure : créer un dataset (Concepteur de rapports)
Utilisation de champs dans un Dataset de rapport
Procédure : ajouter, modifier ou supprimer un champ dans la fenêtre Datasets (Générateur de rapports)
Datasets du rapport (Concepteur de rapports)

Aide et Informations

Assistance sur SQL Server 2005