Numéro d'article: 315695 - Dernière mise à jour: mercredi 16 mai 2007 - Version: 5.3

Comment faire pour utiliser Office Web Components avec des données XML générées par un service Web XML créé à l'aide de ASP.NET

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Ancien nº de publication de cet article : F315695

Sommaire

Agrandir tout | Réduire tout

Résumé

Cet article décrit étape par étape comment utiliser ASP.NET pour créer un service Web XML simple qui extrait des données de l'exemple de base de données Comptoirs de Microsoft Access et retourne les données au format XML à un client lorsque ce dernier appelle une méthode du service. Côté client, les données sont présentées à l'aide des composants Tableau croisé dynamique et Graphique. Cet article démontre également comment créer un client pour le service Web XML à l'aide de Visual Basic .NET ou de Visual Basic 6.0.

Création d'un service Web XML simple à l'aide d'ASP.NET

  1. Démarrez Visual Studio. NET.
  2. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet. Sous Types de projets, cliquez sur Projets Visual Basic, puis sur Service Web ASP.NET sous Modèles. Form1 est créé par défaut.
  3. Remplacez Emplacement par http://localhost/MyDataService et cliquez sur OK. Le projet de service Web XML est créé sur l'ordinateur local sous le nom MyDataService. Class Service1, qui hérite de System.Web.Services.WebService, est créé par défaut dans le fichier Service1.asmx.
  4. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Service1.asmx, puis sélectionnez Afficher le code. Cette opération affiche le fichier code-behind de la page .asmx.
  5. Ajoutez une référence à Microsoft ActiveX Data Objects 2.1 Library. Pour cela, procédez comme suit :
    1. Dans le menu Projet, cliquez sur Ajouter une référence.
    2. Cliquez sur l'onglet COM, sélectionnez Microsoft ActiveX Data Objects 2.7 Library, cliquez sur Sélectionner, puis sur OK.
  6. Ajoutez la méthode suivante à la classe Class Service1 :
    <WebMethod()> Public Function GetResultsAsAdoXML() As String
        Dim myAdoRs As ADODB.Recordset
        Dim myAdoConnection As New ADODB.Connection()
        Dim mypersiststream As New ADODB.Stream()
    
        Dim myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
           "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
        Dim mySelect As String = "SELECT * from [Category Sales for 1997]"
    
        myAdoConnection.ConnectionString = myConnectionString
        myAdoConnection.Open()
        myAdoRs = myAdoConnection.Execute(mySelect)
        myAdoRs.Save(mypersiststream, ADODB.PersistFormatEnum.adPersistXML)
        Return mypersiststream.ReadText
    End Function
    					
    Remarque Si vous n'avez pas installé Office XP dans le dossier par défaut (C:\Program Files\Microsoft Office), modifiez la chaîne de connexion dans le code afin qu'elle indique le chemin d'accès correct à votre installation Office. De même, si vous avez installé Office 2003, vous devrez peut-être modifier le chemin en conséquence.

  7. Dans le menu Générer, cliquez sur Générer la solution afin de créer le service Web XML.

Test du service Web XML

  1. Dans le menu Déboguer, cliquez sur Démarrer. Microsoft Internet Explorer démarre puis accède au fichier Service1.asmx.
  2. Cliquez sur le lien hypertexte GetResultsAsAdoXML.
  3. Cliquez sur Appeler afin de tester l'appel de méthode. Une nouvelle fenêtre affiche les résultats de la requête Category Sales for 1997 au format de schéma de rowset XML. Le document XML de rowset est compris dans l'élément string.
  4. Dans le menu Déboguer de Visual Studio .NET, cliquez sur Arrêter le débogage.

Création d'un client pour le service Web XML

Cette section explique comment créer un client pour la consommation du service Web XML MyDataService. Vous pouvez créer votre client à l'aide de Visual Basic 6.0 ou de Visual Basic .NET.

À des fins de démonstration, les étapes suivantes expliquent comment créer le client test sur le même ordinateur que le service Web XML. Toutefois, vous pouvez créer vos clients tests sur tout ordinateur pouvant accéder au fichier WSDL (Web Services Description Language) présenté par le service Web.


Utilisation de Visual Basic .NET

  1. Créez un projet d'application Windows Visual Basic .NET. Form1 est créé par défaut.
  2. Appuyez sur CTRL+ALT+X pour afficher la fenêtre Boîte à outils.
  3. Dans le menu Outils, cliquez sur Personnaliser la boîte à outils. Sélectionnez les éléments suivants dans la liste de composants et cliquez sur OK :
    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Microsoft Office PivotTable 10.0
    Les icônes des composants s'affichent dans la Boîte à outils.

  4. Ajoutez un contrôle Chart (Graphique), un contrôle PivotTable (Tableau croisé dynamique) et un contrôle Data Source (Source de données) dans Form1. Redimensionnez et positionnez le formulaire si nécessaire.
  5. Ajoutez un contrôle Button (Bouton) dans Form1, puis définissez la propriété Text (Texte) de ce contrôle sur Fill Data (Remplir de données).
  6. Ajoutez une référence au service Web XML en exemple. Pour cela, procédez comme suit :
    1. Dans le menu Projet, cliquez sur Ajouter une référence Web. La boîte de dialogue Ajouter une référence Web s'affiche.
    2. Dans la zone de texte Adresse, tapez http://hôte_local/MyDataService/Service1.asmx?wsdl et appuyez sur ENTRÉE. Le fichier WSDL s'affiche dans la boîte de dialogue.

      Remarque : Si MyDataService ne se trouve pas sur l'ordinateur local, remplacez hôte_local dans l'adresse par le nom du serveur Web sur lequel se trouve MyDataService.
    3. Dans la boîte de dialogue, cliquez sur Ajouter une référence.
  7. Double-cliquez sur le contrôle Button (Bouton) dans Form1, puis remplacez le gestionnaire Button1_Click par le code suivant :
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        'Reference to the service.
        Dim objClient As New localhost.Service1()
    
        'Result obtained from the Service method.
        Dim strresult As String
    
        'The results will be stored on this disk file.
        Dim datafile As String
    
        datafile = System.IO.Directory.GetCurrentDirectory() + "\\mydata.xml"
    
        'Call the Web service method GetResultsAsAdoXML, which returns the recordset as XML.
        strresult = objClient.GetResultsAsAdoXML()
    
        Dim oxmldoc As New System.Xml.XmlDocument()
    
        'Load the XML recordset into the XML Document object.
        oxmldoc.LoadXml (strresult)
    
        'Save it to disk file.
        oxmldoc.Save (datafile)
    
        'Get data in the DataSource component.
        If Len(AxDataSourceControl1.ConnectionString) = 0 Then
            AxDataSourceControl1.ConnectionString = "provider=mspersist"
            AxDataSourceControl1.RecordsetDefs.AddNew( _
                  datafile, AxDataSourceControl1.Constants.dscCommandFile, "ChartData")
        End If
    
        'Get data in Chart component.
        Dim c
        Dim cht As OWC10.ChChart
        Dim ser As OWC10.ChSeries
        Dim ax As OWC10.ChAxis
    
        c = AxChartSpace1.Constants
        ' Clear the ChartSpace.
        AxChartSpace1.Clear()
    
        'DataSource to the Chart component.
        AxChartSpace1.DataSource = AxDataSourceControl1.DefaultRecordset.DataSource
    
        'Get the reference to Chart within the ChartSpace component.
        cht = AxChartSpace1.Charts(0)
        cht.Type = c.chChartTypeBarStacked
        cht.HasLegend = True
        cht.Legend.Position = c.chLegendPositionTop
        cht.HasTitle = True
        cht.Title.Caption = "Category Sales for 1997"
    
        'Set the Chart data.
        AxChartSpace1.SetData(OWC10.ChartDimensionsEnum.chDimCategories, 0, "CategoryName")
        AxChartSpace1.SetData(OWC10.ChartDimensionsEnum.chDimValues, 0, "CategorySales")
    
        ax = cht.Axes(c.chAxisPositionBottom)
    
        'Set the series attributes.
        ser = cht.SeriesCollection(0)
        ser.Name = "Category Sales"
        ser.Caption = ser.Name
        ser.Marker.Size = 4
    
    
        'Get Data in the PivotTable component.
        Dim pview As OWC10.PivotView
        AxPivotTable1.AutoFit = True
        AxPivotTable1.ConnectionString = "provider=mspersist"
        AxPivotTable1.CommandText = datafile
        pview = AxPivotTable1.ActiveView
        pview.AutoLayout()
        pview.FilterAxis.Label.Visible = False
        pview.RowAxis.Label.Visible = False
        pview.ColumnAxis.Label.Visible = False
        pview.TitleBar.Visible = False
    
    End Sub
    					
    Remarque Si le service Web XML se trouve sur un ordinateur distinct, déclarez la variable objClient comme suit :
     Dim objClient As New <servername>.Service1() 
    servername est le nom du serveur sur lequel se trouve le service Web XML.
  8. Remarque Si vous utilisez Office 2003, vous devrez peut-être modifier les références en conséquence.

  9. Ajoutez le code suivant au début de Form1.vb :
    Imports OWC10 = Microsoft.Office.Interop.OWC
    					
  10. Dans le menu Déboguer, cliquez sur Démarrer pour générer et exécuter le programme client. Form1 s'affiche.
  11. Cliquez sur Fill Data (Remplir de données) afin de présenter les données dans les contrôles Chart (Graphique) et PivotTable (Tableau croisé dynamique).

Utilisation de Visual Basic 6.0

Les services Web XML communiquent avec des clients au moyen de messages SOAP (Simple Object Access Protocol). Si l'application cliente est prise en charge par SOAP, elle peut appeler les méthodes qui sont présentées par le service Web XML. Il n'est pas nécessaire que Visual Studio .NET soit installé sur les ordinateurs clients pour l'appel de méthodes sur le service Web XML. Le client doit avoir la possibilité de composer des appels de méthode de service Web XML sous la forme de requêtes SOAP et de recevoir les résultats de ces appels de méthode sous la forme de réponses SOAP. SOAP Toolkit vous permet d'effectuer cela.

Pour plus d'informations sur SOAP Toolkit, y compris des instructions de téléchargement, reportez-vous au site Web de Microsoft Developer Network (MSDN) à l'adresse suivante :
SOAP Toolkit
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_SOAPToolkit.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_SOAPToolkit.asp)
Pour créer un client test Visual Basic 6.0 test client pour la consommation de méthodes dans le service Web XML MyDataService, procédez comme suit :

Remarque Pour ce test client, SOAP Toolkit 2.0 Service Pack 2 doit être installé sur l'ordinateur.
  1. Démarrez Visual Basic 6.0 et créez un nouveau projet EXE standard. Form1 est créé par défaut.
  2. Dans le menu Projet, cliquez sur Références. Ajoutez les références suivantes au projet :
    • Microsoft Soap Type Library
    • Microsoft XML, v3.0
  3. Dans le menu Projet, cliquez sur Composants. Sélectionnez Microsoft Office XP Web Components, puis cliquez sur OK.
  4. Ajoutez les composants Office Web Components suivants dans Form1 :
    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Microsoft Office PivotTable 10.0
  5. Ajoutez un contrôle CommandButton (Bouton de commande) dans Form1, puis définissez la propriété Caption (Légende) de ce contrôle sur Fill Data (Remplir de données).
  6. Double-cliquez sur le contrôle CommandButton (Bouton de commande) dans Form1, puis remplacez le gestionnaire Command1_Click par le code suivant :
    Private Sub Command1_Click()
      Dim osoapClient As MSSOAPLib.SoapClient
    
      'Initialize the SOAP client object.
      Set osoapClient = CreateObject("MSSOAP.SoapClient")
      osoapClient.mssoapinit "http://localhost/MyDataService/Service1.asmx?wsdl", "Service1", "Service1Soap"
    
      'DOM object to load the results.
      Dim oXMLDoc As New MSXML2.DOMDocument
      Dim strdirname As String
    
      'File to store XML recordset.
      strdirname = FileSystem.CurDir$ + "\mydata.xml"
    
      Dim strxmlrecordset As String
    
      'Call the WebService method.
      strxmlrecordset = osoapClient.GetResultsAsAdoXML()
    
      'Load the XML in the DOM document.
      oXMLDoc.loadXML strxmlrecordset
    
    
      'Save it to the disk file.
      oXMLDoc.Save (strdirname)
    
      'Get the data into the DataSourceControl1 component.
      If Len(DataSourceControl1.ConnectionString) = 0 Then
         DataSourceControl1.ConnectionString = "provider=mspersist"
         ' Add a RecordsetDef with name ChartData to the DataSourceControl1
         DataSourceControl1.RecordsetDefs.AddNew strdirname, DataSourceControl1.Constants.dscCommandFile, "ChartData"
      End If
    
    
      'Get the Data into the Chart component.
      Dim c
      Dim cht As ChChart
      Dim chart1 As ChChart
      Dim ser As ChSeries
      Dim ax As ChAxis
    
      Set c = ChartSpace1.Constants
      ChartSpace1.Clear
    
      'DataSource to the Chart component.
      ChartSpace1.DataSource = DataSourceControl1.DefaultRecordset.DataSource
    
      ' Draw the chart.
      Set cht = ChartSpace1.Charts(0)
      cht.Type = c.chChartTypeBarStacked
      cht.HasLegend = True
      cht.Legend.Position = c.chLegendPositionTop
      cht.HasTitle = True
      cht.Title.Caption = "Category Sales for 1997"
    
      'Set the chart data.
      ChartSpace1.SetData chDimCategories, 0, "CategoryName"
      ChartSpace1.SetData chDimValues, 0, "CategorySales"
     
      ' Set the tick label spacing depending on the number of points plotted.
      Set ax = cht.Axes(c.chAxisPositionBottom)
    
      'Set the series attributes.
      Set ser = cht.SeriesCollection(0)
      ser.Name = "Category Sales"
      ser.Caption = ser.Name
      ser.Marker.Size = 4
      
      'Get the data into the PivotTable.
      PivotTable1.ConnectionString = "provider=mspersist"
      PivotTable1.CommandText = strdirname
      PivotTable1.AutoFit = True
      Set pview = PivotTable1.ActiveView
      pview.AutoLayout
      pview.FilterAxis.Label.Visible = False
      pview.RowAxis.Label.Visible = False
      pview.ColumnAxis.Label.Visible = False
      pview.TitleBar.Visible = False
    End Sub
    					
    Remarque Si le service Web XML se trouve sur un ordinateur distinct, remplacez localhost dans l'adresse du service Web XML par le nom du serveur sur lequel se trouve ce service Web XML.

  7. Appuyez sur F5 pour générer et exécuter le programme. Form1 s'affiche.
  8. Cliquez sur Fill Data (Remplir de données) afin de présenter les données dans les composants Chart et PivotTable.

Références

Pour plus d'informations sur les services Web XML créés à l'aide de ASP.NET, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
301273  (http://support.microsoft.com/kb/301273/ ) Comment faire pour écrire un service Web simple à l'aide de Visual Basic .NET.
Pour plus d'informations sur les services Web XML créés à l'aide de ASP.NET, consultez la rubrique « Programming the Web with Web Services » (Programmation du Web à l'aide de Services Web, en anglais) dans l'aide de Visual Studio .NET ou la section « ASP.NET Web Services and ASP.NET Web Service Clients » (Services Web ASP.NET et clients du service Web ASP.NET, en anglais) dans le manuel « Microsoft .NET Framework Developer's Guide » (Guide du développeur de Microsoft .NET Framework, en anglais).

Pour plus d'informations sur les notions de base des services Web et sur les services Web XML créés à l'aide de ASP.NET, reportez-vous au site Web Microsoft Developer Network (MSDN) à l'adresse suivante :
http://msdn2.microsoft.com/en-us/library/ba0z6a33.aspx (http://msdn2.microsoft.com/en-us/library/ba0z6a33.aspx)
Pour plus d'informations sur le développement de Microsoft Office avec Visual Studio et sur Office XP Web Components, reportez-vous au site Web MSDN à l'adresse suivante :
http://msdn2.microsoft.com/en-us/vstudio/aa718673.aspx (http://msdn2.microsoft.com/en-us/vstudio/aa718673.aspx)
Pour plus d'informations sur Office XP Web Components, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
286212  (http://support.microsoft.com/kb/286212/ ) Comment faire pour utiliser une source de données XML avec le composant Office Chart
235542  (http://support.microsoft.com/kb/235542/ ) Comment faire pour utiliser le composant PivotTable Office Web avec Visual Basic

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office 2003 Web Components
  • Microsoft Office XP Web Components
  • Microsoft Web Services (included with the .NET Framework) 1.0
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft .NET Framework Class Libraries 1.0
Mots-clés : 
kbhowtomaster kbofficewebchart kbofficewebpivot KB315695
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.