Comment faire pour utiliser un DataSet avec le composant de graphique Office XP et ASP.NET

Traductions disponibles Traductions disponibles
Numéro d'article: 303016 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article étape par étape explique comment créer un graphique de l'utilisation le composant de graphique Office XP avec données d'un DataSet . Les solutions qui présente cet article utiliser Visual Basic .NET et ASP.NET.

Sources de données pour le composant graphique

Le composant de graphique Office XP prend en charge différents types de sources de données, comme suit :
  • Le composant graphique pouvez lier à une source de données qui implémente l'interface IDataSource , une interface COM standard pour les contrôles de source de données. Les autres Office XP Web Components (c'est-à-dire, le composant Tableau croisé dynamique, le composant Feuille de calcul et les contrôles de source de données) implémenter IDataSource et peuvent être des sources de données potentielle pour un graphique.
  • Le composant graphique pouvez lier à un objet Recordset .
  • Le composant graphique pouvez lier à un flux XML si les données sont conservées dans le flux au format de persistance XML.
  • Un composant graphique pouvez utiliser des données littérales dans le formulaire d'une chaîne délimitée ou tableau ; un graphique qui utilise des données littérales n'est pas considéré comme lié.
La classe DataSet dans ADO.NET n'implémente pas IDatasource et le .NET Framework ne prend pas en charge un moyen direct pour convertir un objet ADO.NET DataSet un objet Recordset . Si vous disposez d'un DataSet à partir de laquelle vous souhaitez créer un graphique, vous pouvez utiliser une des deux solutions présentées dans cet article. Vous pouvez soit transformation du DataSet dans un flux qui utilise la persistance XML format pour ADO, ou vous pouvez générer données littérales à partir du DataSet .

Utilisez le format de persistance XML

Cette solution décrit comment transformer un DataSet dans un flux XML à laquelle le composant graphique pouvez lier. Cette solution comporte deux parties : un gestionnaire HTTP côté serveur qui crée un DataSet et transformations dans un flux XML et un script côté client qui lie le composant graphique à la chaîne XML.

Créer un gestionnaire HTTP pour créer un DataSet et transformer en une source de données XML

  1. Dans le menu Fichier dans Visual Studio .NET, cliquez sur Nouveau , puis cliquez sur le projet .
  2. Cliquez sur projets Visual Basic , cliquez sur le modèle Empty Web Project et nommez-le ChartDemo1.
  3. Dans le menu projet , cliquez sur Ajouter une référence , cliquez pour sélectionner les assemblys suivants et puis cliquez sur OK :
    • System.Data.Dll
    • System.Dll
    • System.Web.Dll
    • System.XML.Dll

  4. Dans le menu projet , cliquez sur Ajouter une classe , nom de la classe MakeData.vb et cliquez sur Ouvrir .
  5. Remplacez le code MakeData.vb par le suivant.

    note <username>Vous devez modifier <nom_utilisateur> ID d'utilisateur et mot de passe = < mot de passe fort > pour les valeurs correctes avant d'exécuter ce code. Assurez-vous que code utilisateur possède les autorisations appropriées effectuer cette opération sur la base de données.
    Imports System.Web
    Imports System.Xml
    Imports System.Xml.Xsl
    Imports System.Data
    Imports System.Data.SqlClient
    
    Public Class MakeData
        Implements IHttpHandler
    
        Public ReadOnly Property IsReusable() As Boolean _
        Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
    
        Public Sub ProcessRequest(ByVal context As HttpContext) _
        Implements IHttpHandler.ProcessRequest
            Dim sConn As String = "User ID=<username>;Password=<password>;Initial Catalog=Northwind;Data Source=YourSQLServer;"
            Dim sSQL As String = _
                "SELECT LastName, Sum([UnitPrice]*[Quantity]*(1-[Discount])) AS OrderTotal " & _
                "FROM Employees INNER JOIN (Orders INNER JOIN [Order Details] ON " & _
                "Orders.OrderID = [Order Details].OrderID) ON Employees.EmployeeID = " & _
                "Orders.EmployeeID GROUP BY LastName"
    
            'Connect to the data source.
            Dim nwindConn As SqlConnection = New SqlConnection(sConn)
            nwindConn.Open()
    
            'Build a dataSet for Employee Sales.
            Dim ds As DataSet
            ds = New DataSet("MyDataset")
            Dim da As SqlDataAdapter = New SqlDataAdapter(sSQL, nwindConn)
            da.Fill(ds)
    
            'Transform the dataSet using the stylesheet.
            Dim xmlDoc_ds As XmlDataDocument = New XmlDataDocument(ds)
            Dim xslTran As XslTransform = New XslTransform()
            xslTran.Load(context.Server.MapPath("Rowset.xslt"))
    
            'Return the persisted recordset.
            context.Response.ContentType = "text/xml"
            context.Response.Charset = ""
            xslTran.Transform(xmlDoc_ds, Nothing, context.Response.Output)
    
        End Sub
    
    End Class
    Remarque : dans le code, modification de la chaîne de connexion dans sConn en une chaîne connexion valide pour un ordinateur qui exécute Microsoft SQL Server et qui contient la base de données exemple Les Comptoirs.

  6. Dans le menu projet , cliquez sur Ajouter un nouvel élément , cliquez sur le modèle Web Configuration File et puis cliquez sur Ouvrir .
  7. Remplacez le contenu de Web.config par suivantes :
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
       <system.web>
          <httpHandlers>
             <add verb="*" path="MakeData.aspx" type="ChartDemo1.MakeData, ChartDemo1" />
          </httpHandlers>
       </system.web>
    </configuration> 
  8. Dans le menu projet , cliquez sur Ajouter un nouvel élément , cliquez sur le modèle XSLT File , nommez le fichier Rowset.xslt, puis puis cliquez sur Ouvrir .
  9. Remplacez le contenu de Rowset.xslt par suivantes :
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output method="xml" omit-xml-declaration = "yes" indent="yes"/>
     <xsl:template match="/">
     <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
        xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
        xmlns:rs="urn:schemas-microsoft-com:rowset"
        xmlns:z="#RowsetSchema">
     <s:Schema id='RowsetSchema'>
     <s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>
     <s:AttributeType name="LastName" rs:number="1" rs:writeunknown="true">
     <s:datatype dt:type="string" dt:maxLength="10" rs:maybenull="false" />
     </s:AttributeType>
     <s:AttributeType name='OrderTotal' rs:number='2' rs:nullable='true'>
     <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' rs:fixedlength='true'/>
     </s:AttributeType>
     <s:extends type='rs:rowbase'/>
     </s:ElementType>
     </s:Schema>
     <rs:data>
     <xsl:for-each select="MyDataset/Table">
     <xsl:element name="z:row" namespace="#RowsetSchema">
     <xsl:attribute name="LastName">
     <xsl:value-of select="LastName"/>
     </xsl:attribute>
     <xsl:attribute name="OrderTotal">
     <xsl:value-of select="OrderTotal"/>
     </xsl:attribute>
     </xsl:element>
     </xsl:for-each>
     </rs:data>
     </xml>
     </xsl:template>
     </xsl:stylesheet>
  10. Procédez comme suit pour tester le gestionnaire HTTP MakeData :
    1. Dans le menu Générer , cliquez sur Générer la solution .
    2. Démarrez Microsoft Internet Explorer, puis accédez à http:// YourWebServer /ChartDemo1/MakeData.aspx
      (où YourWebServer est le nom de votre site Web serveur).
    3. Examinez le code XML qui le navigateur affiche. Le code XML utilise le schéma qui est défini pour le format de persistance XML.

Lier le composant de graphique Office XP à la source de données XML

  1. Ouvrez le projet d'application Web ChartDemo1 dans Visual Studio .NET.
  2. Dans le menu projet , cliquez sur Ajouter HTMLPage .
  3. Nommer la nouvelle page default.htm , puis cliquez sur Ouvrir . Default.htm apparaît en mode Création.
  4. Cliquez avec le bouton droit sur défaut.htm , cliquez sur Propriétés , remplacez le schéma cible par Internet Explorer 5.0 et puis cliquez sur Appliquer .
  5. Modifier le langage de script par défaut en VBScript , puis cliquez sur OK .
  6. Procédez comme suit pour ajouter un composant Office XP graphique à default.htm :
    1. Dans le menu Outils , cliquez sur Personnaliser la boîte à outils .
    2. Dans la liste des composants COM , cliquez sur Graphique Microsoft Office 10.0 , puis cliquez sur OK .
    3. Faites glisser un contrôle ChartSpace sur default.htm.
  7. Suivez ces étapes pour ajouter un contrôle de bouton à default.htm :
    1. Dans la fenêtre boîte à outils, cliquez sur HTML .
    2. Faites glisser un contrôle de bouton sur default.htm.
    3. Modifier la propriété Value du bouton Créer un plan .
  8. Cliquez avec le bouton droit sur le bouton que vous avez ajouté à default.htm, puis cliquez sur script client afficher .
  9. Ajoutez le code suivant à l'événement Button1_onclick :
        'Bind the chart to the recordset.
       Dim c
       Set c = Chchartspace1.Constants
       Chchartspace1.ConnectionString = "Provider=MSPersist"
       Chchartspace1.CommandText = "http://YourWebServer/ChartDemo1/MakeData.aspx"
       Chchartspace1.HasMultipleCharts = False
       Chchartspace1.PlotAllAggregates = c.chPlotAggregatesSeries
       Chchartspace1.SetData c.chDimCategories, c.chDataBound, "LastName"
       Chchartspace1.SetData c.chDimValues, c.chDataBound, "OrderTotal"
    Remarque : modifier YourWebServer dans l'URL sur le nom de votre serveur Web.

  10. Dans le menu Fichier , cliquez sur Enregistrer default.htm .
  11. Procédez comme suit pour tester la solution :
    1. Démarrez Internet Explorer et accédez à http:// YourWebServer /ChartDemo1/Default.htm
      (où YourWebServer est le nom de votre site Web serveur).
    2. Cliquez sur Créer graphique . Notez que si un graphique en histogrammes avec des données provenant du DataSet apparaît.

Utiliser des données littérales

Cette solution décrit comment générer des données littérales à partir d'un DataSet et ensuite utiliser ces données littérales pour créer un graphique. Cette solution utilise un formulaire Web ASP.NET. Le code qui s'exécute côté serveur génère un DataSet et renvoie le DataSet au client en tant qu'un data-island XML ; un contrôle serveur espace réservé est utilisé pour le îlot de données. Un script côté client parcourt les n?uds dans le îlot de données pour créer des tableaux pour les catégories et les valeurs qui sont utilisées pour créer le graphique.
  1. Dans ASP.NET Visual Basic, créez une application Web projet nommé ChartDemo2 . WebForm1.aspx est créé par défaut et est affiché en mode Création.
  2. Cliquez avec le bouton droit sur WebForm1 , puis cliquez sur Afficher la source HTML .
  3. Remplacer l'élément suivant
    <form id="Form1" method="post" runat="server">
    </form>
    avec des opérations suivantes :
    <form id="Form1" method="post" runat="server">
    	<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </form>
    <OBJECT id="CSpace" classid="clsid:0002E556-0000-0000-C000-000000000046"
    style="Z-INDEX: 101; LEFT: 9px; WIDTH: 576px; POSITION: absolute; TOP: 43px; HEIGHT: 348px"
    VIEWASTEXT></OBJECT>
    
    <button id="Mybtn" style="Z-INDEX: 103; LEFT: 604px; POSITION: absolute; TOP: 46px"
    	type="button">Chart Data</button>
    <script language="vbscript">
    
    Function Mybtn_OnClick
    
    	'Extract the contents of the XML Data island and insert it into two
    	'arrays: one array for the chart categories and one array for the 
    	'chart values.
    	Dim nCount, nodes, i
    	Set nodes = dsXML.XMLDocument.childNodes.item(0).childNodes
    	nCount = nodes.length
    	Redim aNames(nCount)
    	Redim aTotals(nCount)
    	For i=1 to nCount
    	   aNames(i) = nodes.item(i-1).ChildNodes.item(0).text
    	   aTotals(i) = nodes.item(i-1).ChildNodes.item(1).text
    	Next
    	
    	'Create a chart from the array data.
    	'Bind the chart to the recordset.
    	Dim c
    	Set c = CSpace.Constants
    	Dim oChart, oSer
    	CSpace.Clear
    	Set oChart = CSpace.Charts.Add
    	Set oSer = oChart.SeriesCollection.Add
    	oSer.SetData c.chDimCategories, c.chDataLiteral, aNames
    	oSer.SetData c.chDimValues, c.chDataLiteral, aTotals
    	
    End Function
    </script>
  4. Dans le menu Affichage , cliquez sur Créer pour revenir en mode Création.
  5. Dans le menu Affichage , cliquez sur code pour afficher le code qui se trouve derrière le formulaire Web (Webform1.aspx.vb).
  6. Ajoutez le code suivant en haut de Webform1.aspx.vb :
    Imports System.Data.SqlClient
    Imports System.Xml
    Imports System.Xml.Xsl
  7. Ajoutez le code suivant à la fonction Page_Load de Webform1.aspx.vb.

    note <username>Vous devez modifier <nom_utilisateur> ID d'utilisateur et mot de passe = < mot de passe fort > pour les valeurs correctes avant d'exécuter ce code. Assurez-vous que code utilisateur possède les autorisations appropriées effectuer cette opération sur la base de données.
    Dim sConn As String = "User ID=<username>;Password=<strong password>;Initial Catalog=Northwind;Data Source=YourSQLServer;"
    Dim sSQL As String = _
        "SELECT LastName, Sum([UnitPrice]*[Quantity]*(1-[Discount])) AS OrderTotal " & _
        "FROM Employees INNER JOIN (Orders INNER JOIN [Order Details] ON " & _
        "Orders.OrderID = [Order Details].OrderID) ON Employees.EmployeeID = " & _
        "Orders.EmployeeID GROUP BY LastName"
    
    'Connect to the data source.
    Dim nwindConn As SqlConnection = New SqlConnection(sConn)
    nwindConn.Open()
    
    'Build a DataSet for Employee Sales.
    Dim ds As DataSet
    ds = New DataSet("MyDataset")
    Dim da As SqlDataAdapter = New SqlDataAdapter(sSQL, nwindConn)
    da.Fill(ds)
    
    'Add the DataSet as XML to a data island in the PlaceHolder control.
    Dim sw As System.IO.StringWriter = New System.IO.StringWriter()
    ds.WriteXml(sw)
    Dim lc As LiteralControl = New LiteralControl( _
        "<XML ID=""dsXML"">" & sw.ToString & "</XML>")
    PlaceHolder1.Controls.Add(lc)
    Remarque : dans le code, modification de la chaîne de connexion dans sConn en une chaîne connexion valide pour un ordinateur qui exécute SQL Server et qui contient la base de données exemple de Northwind.

  8. Procédez comme suit pour tester l'application Web :
    1. Appuyez sur F5 pour générer et exécuter l'application. Le Web application charge dans Internet Explorer.
    2. Dans le menu Affichage dans Internet Explorer, cliquez sur Afficher la source . Notez que des données XML tropicale avec l'ID « dsXML » existe dans la source HTML; le îlot de données a été généré par le code dans l'événement Page_Load de l'écran Web.
    3. Dans l'écran Web, cliquez sur les données de graphique pour créer le graphique des données dans le data-island XML.

Considérations relatives à la

Vous pouvez créer et utiliser des objets Recordset dans le .NET Framework via la couche COM Interop. Si vous utilisez objets Recordset ou ADO.NET DataSets typés pour votre solution est un choix de conception. Si vous avez code existant qui crée des DataSets et vous souhaitez ajouter les fonctionnalités graphiques, vous pouvez utiliser une des solutions qui sont abordées dans cet article. Toutefois, si vous accédez données uniquement pour créer des graphiques, Microsoft vous recommande d'utiliser ADO via COM Interop afin que vous pouvez lier directement aux données sans conversion.

Références

Pour plus d'informations sur l'utilisation d'ADO avec Visual Basic .NET, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
316337 Comment convertir un DataSet ADO.NET jeu d'enregistrements ADO dans Visual Basic .NET
Pour plus d'informations, reportez-vous au site de Web MSDN (Microsoft Developer Network) suivant :
Accéder à un jeu d'enregistrements ADO ou à enregistrer à partir d'ADO.NET
http://msdn.microsoft.com/en-us/library/aa719471.aspx
Pour plus d'informations sur le composant Office XP graphique, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances :
288907 Lier le composant de graphique Office XP à une source de données
286212 Comment faire pour utiliser une source de données XML avec le composant Graphique Office
315695 Comment utiliser les composants Web Office avec les données XML générées par un service Web XML créé à l'aide de ASP.NET
286277 Comment utiliser le composant de graphique Office XP pour créer des graphiques statiques avec la technologie ASP

Pour plus d'informations, reportez-vous à la section Office Web Components de l'article suivant sur le site Web MSDN (Microsoft Developer Network) :
Développement de Microsoft Office avec Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Propriétés

Numéro d'article: 303016 - Dernière mise à jour: vendredi 9 mars 2007 - Version: 5.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET (included with the .NET Framework)
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Office XP Web Components
  • Microsoft ADO.NET (included with the .NET Framework)
Mots-clés : 
kbmt kbhowtomaster kbofficewebchart KB303016 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 303016
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.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com