begin process at 2010 02 10 12:36:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CRÉATION D'UN GRAPHIQUE À PARTIR D'UNE DATAGRID

CRÉATION D'UN GRAPHIQUE À PARTIR D'UNE DATAGRID


 Information sur la source



 Description

Voici une petite fonction qui permet de mettre sous forme graphique les données contenues dans une DataGrid. J'ai développé ce code dans le cadre d'un projet où je devais attaquer une base SQL et afficher des données sous forme de tableau (DataGrid). Je devais ensuite les faire apparaître sous forme graphique.

Le graphique obtenu est du type "camembert", mais il suffit de modifier la propriété "objChart.Type" pour obtenir toute sorte de graph. Les paramètres d'entrée de la fonction sont le titre du graph, et la DataTable qui correspong à la propriété DataSource de la DataGrid.

N'hésitez surtout pas à me faire part de vos critiques, même négatives (et oui, c'est comme ça qu'on avance).

Ah oui, au fait, il faut avoir au préalable ajouter le référence Microsoft Office XP Web Components.

Source

  • Imports System.IO 'pour le FilInfo
  • Imports OWC10 'pour les objets grahiques
  • Private Sub CreerGraph(ByVal strTitre As String, ByVal dTable As System.Data.DataTable)
  • Dim objCSpace As New ChartSpaceClass
  • Dim objChart As ChChart
  • Dim objSeries As OWC10.ChSeries
  • Dim strCategory As String
  • Dim strValue As String
  • Dim strFileName As String
  • Dim intI, intJ As Integer
  • Dim file_gif As FileInfo
  • 'S'il n'y a pas d'enregistrements da,s le DataGrid, inutile de créer le graph (on aurait un graph tout blanc : aucun intérêt)
  • If dTable.Rows.Count <> 0 Then
  • PictureBox1.Visible = True
  • objChart = objCSpace.Charts.Add(0)
  • 'Type du graph (ici camembert 3D)
  • objChart.Type = ChartChartTypeEnum.chChartTypePie3D
  • 'Titre et légendes
  • objChart.HasTitle = True
  • objChart.Title.Caption = strTitre
  • objChart.HasLegend = True
  • objChart.Legend.Border.DashStyle = OWC10.ChartLineDashStyleEnum.chLineSolid
  • objChart.Legend.Position = OWC10.ChartLegendPositionEnum.chLegendPositionRight
  • 'Les données du graph correspondent au contenu de la Datatable qui est affiché dans un DataGrid
  • For Each dRow As DataRow In dTable.Rows
  • strCategory &= DataGrid1.Item(intI, 0) & ","
  • strValue &= DataGrid1.Item(intI, 1).ToString.Replace(",", ".") & ","
  • intI += 1
  • Next
  • objSeries = objChart.SeriesCollection.Add(0)
  • 'Mise en forme des datas dans le graph
  • objSeries.SetData(ChartDimensionsEnum.chDimCategories, ChartSpecialDataSourcesEnum.chDataLiteral, strCategory)
  • objSeries.SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strValue)
  • strFileName = "C:\graph.gif"
  • file_gif = New FileInfo(strFileName)
  • 'Si le fichier existe déjà, ça signifie qu'on a déjà associé le graph à la PictureBox
  • 'Cette partie permet d'actualiser le graph avec les datas (si elles ont changé)
  • If file_gif.Exists Then
  • 'On libère les ressources liées au fichier
  • PictureBox1.Image.Dispose()
  • file_gif.Delete()
  • End If
  • 'Export du graph au format gif pour l'assigner à la propriété Image de la PictureBox
  • objCSpace.ExportPicture(strFileName, , 400, 300)
  • PictureBox1.Visible = True
  • PictureBox1.Image = Image.FromFile(strFileName)
  • Else
  • PictureBox1.Visible = False
  • End If
  • End Sub
Imports System.IO  'pour le FilInfo
Imports OWC10      'pour les objets grahiques

Private Sub CreerGraph(ByVal strTitre As String, ByVal dTable As System.Data.DataTable)

        Dim objCSpace As New ChartSpaceClass
        Dim objChart As ChChart
        Dim objSeries As OWC10.ChSeries
        Dim strCategory As String
        Dim strValue As String
        Dim strFileName As String
        Dim intI, intJ As Integer
        Dim file_gif As FileInfo

        'S'il n'y a pas d'enregistrements da,s le DataGrid, inutile de créer le graph (on aurait un graph tout blanc : aucun intérêt)
        If dTable.Rows.Count <> 0 Then

            PictureBox1.Visible = True
            objChart = objCSpace.Charts.Add(0)
            'Type du graph (ici camembert 3D)
            objChart.Type = ChartChartTypeEnum.chChartTypePie3D

            'Titre et légendes
            objChart.HasTitle = True
            objChart.Title.Caption = strTitre
            objChart.HasLegend = True
            objChart.Legend.Border.DashStyle = OWC10.ChartLineDashStyleEnum.chLineSolid
            objChart.Legend.Position = OWC10.ChartLegendPositionEnum.chLegendPositionRight
            'Les données du graph correspondent au contenu de la Datatable qui est affiché dans un DataGrid
            For Each dRow As DataRow In dTable.Rows
                strCategory &= DataGrid1.Item(intI, 0) & ","
                strValue &= DataGrid1.Item(intI, 1).ToString.Replace(",", ".") & ","
                intI += 1
            Next
            objSeries = objChart.SeriesCollection.Add(0)
            'Mise en forme des datas dans le graph
            objSeries.SetData(ChartDimensionsEnum.chDimCategories, ChartSpecialDataSourcesEnum.chDataLiteral, strCategory)
            objSeries.SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strValue)

            strFileName = "C:\graph.gif"
            file_gif = New FileInfo(strFileName)
            'Si le fichier existe déjà, ça signifie qu'on a déjà associé le graph à la PictureBox
            'Cette partie permet d'actualiser le graph avec les datas (si elles ont changé)
            If file_gif.Exists Then
                'On libère les ressources liées au fichier
                PictureBox1.Image.Dispose()
                file_gif.Delete()
            End If
            'Export du graph au format gif pour l'assigner à la propriété Image de la PictureBox
            objCSpace.ExportPicture(strFileName, , 400, 300)
            PictureBox1.Visible = True
            PictureBox1.Image = Image.FromFile(strFileName)
        Else
            PictureBox1.Visible = False
        End If
    End Sub



 Sources du même auteur

Source avec Zip Source .NET (Dotnet) AUTO-CONFIGURATION DES PARAMÈTRES DE PROXY D' INTERNET EXPLO...

 Sources de la même categorie

Source avec Zip ALBUM PHOTOS par ayoube2009
Source avec Zip Source avec une capture EDITEUR D'AUTOMATES CELLULAIRES par PADYVEN
Source avec Zip Source avec une capture PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTRE... par SnkVrt
Source avec Zip Source avec une capture Source .NET (Dotnet) PHOTOSEXPRESS - TRAITEMENT DE PHOTOS par zozo14
Source avec Zip Source avec une capture ÉCRIRE SUR LE WALLPAPER par Rafale71

 Sources en rapport avec celle ci

CREER UN GANTT CHART A PARTIR D'EXCEL par maisai
Source avec Zip INSERER UN GRAPHIQUE DANS USERFORM par masterfix
Source avec Zip Source avec une capture Source .NET (Dotnet) GRAPHIQUE FACILE A DESSINER : CAMEMBERT ET HISTOGRAMME par Icarius44
Source avec Zip Source avec une capture Source .NET (Dotnet) COURBE 2D SANS MSCHART par nicolas99
Source avec Zip Source .NET (Dotnet) APPLICATION DE BASE DE DONNÉE AVEC SQL DATAGRIG par khamouli_41

Commentaires et avis

Commentaire de garcimor80 le 12/07/2006 09:20:01

Merci pour cette fonction qui m'a permis de produire une application  industrielle. Cependant j'ai juste un petit souci, notamment quand je dois régénérer un deuxième graphique. Je suis obligé d'effacer manuellement le GIF à la racine du disque dur. Peut être est ce du au fait que je ne ferme pas correctement mes objets ....


Encore une fois merci

Garcimor80

Commentaire de drahcir le 21/07/2006 09:36:05

J'ai eu ce soucis aussi lorsque mon programme plantais. Le fichier n'était pas supprimé, donc obligé de le faire manuellement (pas terrible...). Il faut placer l'ensemble du traitement dans un bloc try catch et supprimer le fichier même s'il y a un bug auparavant (s'il existe bien sûr!).

Dans ton cas, je ne vois pas pourquoi le fichier n'est pas supprimé. La création d'un second graph devrait écraser le premier.

Commentaire de korndexter le 07/09/2006 09:35:05

Bonjour, j'ai un problème avec        
picturebox1.Image = Image.FromFile(strFileName) si je change avec
picturebox1.ImageUrl = strFileName ca passe mais j'ai une erreur 'Accès refusé', sur le  objCSpace.ExportPicture.
Comment resoudre ce problème? merci d'avance
        

Commentaire de JVETRAVAILLE le 01/11/2006 14:57:49

J'ai VISUAL STUDIO 2005
Ton programme ne marche pas du tout !!!
Dépose une source en plus du texte

Commentaire de elliot le 03/11/2006 11:31:34

Demandé si gentillement, c'est sûr qu'il va même nous développer nos applications....

J'ai un problême evec cette ligne, tout le reste est bon. (j'ai VB2005 aussi ^^)

strCategory &= DataGrid1.Item(intI, 0) & ","

Une idée ?

MERCI d'avance.

Commentaire de drahcir le 03/11/2006 14:16:56

Ca fait longtemps que je n'ai pas mis le nez là-dedans.....quel est le problème exactement avec cette ligne??

En ce qui concerne VS2005, j'utilise désormais le contrôle GridView en lieu et place du DataGrid, mais le fonctionnement est assez similaire.

JVETRAVAILLE-> allez un petit effort, ça doit être faisable de l'adapter à VS2005!!! Suffit juste de s'y mettre 5 minutes, c'est certes un peu plus long qu'un copier/coller mais je suis sûr que tu peux le faire! Allez courage ;)

Commentaire de cyril044 le 26/01/2007 09:21:15

Salut,

Merci pour ton code: il m'a aidé à réaliser un histogramme cumulé pour mon programme à partir d'un tableau 2D d'entiers (j'ai shunté le datagrid).

Petites questions:

- est-il possible de contourner l'enregistrement dans le fichier info en transférant directement les données vers la picturebox ? En tout cas .getpicture ne semble pas supporter cela :
Picturebox1.image = chartmachin.getpicture() -> Erreur

- comment modifier les couleurs au niveau de des barres de mon histogramme cumulé. J'ai 10 barres ayant chacune 3 valeurs cumulées et j'aimerais avoir 3 couleurs de mon choix pour ces 3 valeurs.

Merci d'avance

cyril_44@hotmail.com

Commentaire de koutb le 02/02/2007 09:22:42

salut,
moi j'ai le meme problémé que elliot une idée merci

strCategory &= DataGrid1.Item(intI, 0) & "," ????

Commentaire de outghouliast le 08/08/2007 20:09:35

Bonjour j'ai essayé de tester ton cofde mais ça marche pas
j'ai un visual studio 6.0 et j trouve pas la reference Microsoft office web...
en plus les déclaration des types:
System.Data.DataTable
OWC10.ChSeries
... et bien d'autres

surement j'ai du oublié un truc à faire
je ne suis en fait qu"un débutant
merci de m'avoir éclairci ces points
encore merci pour la collaboration

Commentaire de drahcir le 13/08/2007 08:34:34

Salut OUTGHOULIAST, ce bout de code a été développé avec visual studio 2003, il s'agit donc de vb.net...

Il te manque certainement des dépendances en vb6, à toi de voir si tu peux l'adapter.

Bon courage.

Commentaire de outghouliast le 16/08/2007 19:24:00

Merci Mr ce code
en fait j'ai tt essayé mais on m'a dit que ces dépendances n'existent peut etre pas surtout pour les références web.

si par hasard t'aura des éclaircissements je serai trés reconnaissant en les ayant de ta part.

merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Afficher ds dataGrid le rsltat requete SQL [ par tom ] Comment puis je afficher dans un dataGrid le résultat d'une requete SQL que je viens juste de faire avant, et ceci avec des réponses differentes par c Exportation d'un DataGrid pour Excel [ par Spard ] Bonjour a tous.Euh.. voila mon problemeJ'ai un resultat de requete SQL que je recupere dans un Datagrid ( 3 colonnes ). Je souhaite utiliser les éléme C'est compliqué le MS CHART !!!!! [ par reyman ] 1)Lorsque l'on trace un graphique de 10 valeurs, le prog affiche automatiquement en abcisse '1 2 3....10'Comment faire pour qu'il n'affiche que 2 vale en vb créer un graphique basé sur requete sql et dans excel [ par aysse ] Bonjour,je sais comment créer un graphique en Vb dans excel en mettant comme source de données du graphique une plage de données d'une feuille excel m Creer un graphique à partir d'un datagrid [ par Madmonk62 ] Je desire creer un graphique à partir d'une datagridSi quelqu'un peut m'indiquer comment faire exactement.Merci Définir les données a visionner dans un graphique [ par kaira008 ] Bonjour a tous,Voila j'ai une base de donnée access avec des données a l'intérieur je m'en sert pour tracer un graphique sous excel. Donc pour résumer Optimisation vb.net et sql [ par mestari ] En fait je fais une recherche multicritères avec une requete sql (un peu compliquée) stockée dans un objet commande, je parviens grace à un dataset, u graphique sous forme de camembert [ par willfred ] je recherche un ocx ou un moyen de faire des graphiques sous forme de camembertmerci CheckBox + datagrid avec Sql Server [ par zenori ] Bonjour,J'alimente un datagrid avec un adodc via une procédure stockée sous SQL Server.J'ai une colonne que je voudrais afficher avec une check box, e SQL Server et DataGrid Bound [ par oufben ] Salut,J'ai un sale probleme... Comment pourrais-je utiliser une Datagrid Bound pour afficher des données de SQL Server ?Le truc c'est que j'ai créé un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales