begin process at 2012 02 08 19:32:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > ASP/VML, TRACER UN HISTOGRAMME À PARTIR D'UNE BD SQL SERVER OU AUTRE

ASP/VML, TRACER UN HISTOGRAMME À PARTIR D'UNE BD SQL SERVER OU AUTRE


 Information sur la source

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :vml, histogramme, sql, chart, tracer Niveau :Expert Date de création :24/06/2004 Vu :15 502

Auteur : rahou

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Jamais, tracer des graphes n'a jamais été aussi facile.
En plus cette fois ci la page web de tracé des graphes est directement connecté à notre base de données. Les mises à jour effectuées sur la base se répercutent automatique sur la page du graphe.
ASP+VML, c'est donc une autre manières de réprésenter ses statistiques, de tracer des graphes sur des sondages, de modéliser des objets etc...
Costumiser le code à votre guise et vous serez surpris.

Source

  • <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  • <%
  • Dim MM_Cnn_STRING
  • MM_Cnn_STRING = "dsn=DsnSondageIntranet;uid=sa;"
  • %>
  • <%
  • '==================================================================================
  • 'DECLARATION DES VARIABLES
  • '==================================================================================
  • Dim RsGraphe
  • Dim RsCouleurs
  • Dim RsCouleurs_numRows
  • Dim RsGraphe_numRows
  • DIM CodeCouleur
  • DIM CodeLettre
  • DIM LETTRE
  • '==================================================================================
  • 'CONNEXION A LA BASE DE DONNEES
  • '==================================================================================
  • Set RsGraphe = Server.CreateObject("ADODB.Recordset")
  • RsGraphe.ActiveConnection = MM_Cnn_STRING
  • RsGraphe.Source = "SELECT COUNT(nomchoisi) AS Nombre, nomchoisi FROM VotreChoix GROUP BY nomchoisi"
  • RsGraphe.CursorType = 0
  • RsGraphe.CursorLocation = 2
  • RsGraphe.LockType = 1
  • RsGraphe.Open()
  • RsGraphe_numRows = 0
  • %>
  • <%
  • '==================================================================================
  • 'Dans la balise HTML, xmlns:v="urn:schemas-microsoft-com:vml", permet d'informer
  • 'le navigateur que la page peut contenir du code VML(Vector Markup Language)
  • '==================================================================================
  • %>
  • <html xmlns:v="urn:schemas-microsoft-com:vml">
  • <head>
  • <title>Résultats du Sondage Intranet</title>
  • <style>
  • v\:* {behavior:url(#default#VML);}
  • </style>
  • </head>
  • <body>
  • <FONT COLOR="blue" size="+3">Résultats du Sondage Intranet</FONT>
  • <br>
  • <!--
  • Ici, le rect est un exemple, pour la suite des exemples,
  • veuillez copier le code directement dans le BODY de ce document
  • -->
  • <%'for i=1 to RsGraphe.RecordCount%>
  • <%While Not (RsGraphe.EOF or RsGraphe.BOF)%>
  • <%
  • '==================================================================================
  • 'Les couleurs son définies dans la base de données
  • 'Ceci pour éviter que les barres de l'histogramme aient la même couleur
  • 'Vous pouvez aussi créer un script de génération automatique de couleur aléatoire
  • '==================================================================================
  • Set RsCouleurs= Server.CreateObject("ADODB.Recordset")
  • RsCouleurs.ActiveConnection = MM_Cnn_STRING
  • RsCouleurs.Source = "SELECT Couleurs FROM SondageDesignationIntranet Where nomchoisi='" & RsGraphe.Fields.Item("nomchoisi").Value & "'"
  • RsCouleurs.CursorType = 0
  • RsCouleurs.CursorLocation = 2
  • RsCouleurs.LockType = 1
  • RsCouleurs.Open()
  • RsGraphe_numRows = 0
  • %>
  • <%'RANDOMIZE%>
  • <%'CodeCouleur=Int((9 * Rnd) + 1)%>
  • <%'CodeLettre=Int((8 * Rnd) + 3)%>
  • <%'LETTRE=CHR(69-Int((5 * Rnd) + 1))%>
  • <%'=69-Int((4 * Rnd) + 1)%>
  • <%'=LETTRE%>
  • <v:rect
  • <!--Commande VML qui permet de tracer un rectangle
  • Devant Width, mettre la longueur du rectangle et devant height, la largeur
  • La couleur est définit par fillcolor et on lui affecte le champ de base de données contenant le code de la couleur
  • ->
  • fillcolor="<%=(RsCouleurs.Fields.Item("Couleurs").Value)%>"
  • <!--
  • Dans Height, mettez, la valeur correspondant à la hauteur
  • ->
  • style="position:relative;top:1;left:1;width:40;height:<%=(RsGraphe.Fields.Item("Nombre").Value)*20%>;">
  • <b><div align="center"><%=(RsGraphe.Fields.Item("nombre").Value)%></div></b>
  • <%
  • RsCouleurs.Close()
  • Set RsCouleurs = Nothing
  • %>
  • </v:rect>
  • <%RsGraphe.MoveNext%>
  • <%WEND%>
  • <br>
  • <br>
  • <br>
  • <FONT COLOR="blue" size="+1">Légende</FONT>
  • <br>
  • <%
  • Set RsCouleurs= Server.CreateObject("ADODB.Recordset")
  • RsCouleurs.ActiveConnection = MM_Cnn_STRING
  • RsCouleurs.Source = "SELECT distinct NomChoisi,Couleurs FROM SondageDesignationIntranet order by nomchoisi"
  • RsCouleurs.CursorType = 0
  • RsCouleurs.CursorLocation = 2
  • RsCouleurs.LockType = 1
  • RsCouleurs.Open()
  • RsCouleurs_numRows = 0
  • %>
  • <%While Not (RsCouleurs.EOF or RsCouleurs.BOF)%>
  • <FONT COLOR="brown"><%=(RsCouleurs.Fields.Item("NomChoisi").Value)%></FONT>
  • <v:rect
  • fillcolor="<%=(RsCouleurs.Fields.Item("Couleurs").Value)%>"
  • style="position:relative;top:1;left:1;width:40;height:10;">
  • </v:rect>
  • <br>
  • <%RsCouleurs.MoveNext%>
  • <%Wend%>
  • <%
  • RsCouleurs.Close()
  • Set RsCouleurs = Nothing
  • %>
  • <p>
  • </p>
  • </body>
  • </html>
  • <%
  • RsGraphe.Close()
  • Set RsGraphe = Nothing
  • %>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim MM_Cnn_STRING
MM_Cnn_STRING = "dsn=DsnSondageIntranet;uid=sa;"
%>
<%
'==================================================================================
									'DECLARATION DES VARIABLES
'==================================================================================

Dim RsGraphe
Dim RsCouleurs
Dim RsCouleurs_numRows
Dim RsGraphe_numRows
DIM CodeCouleur
DIM CodeLettre
DIM LETTRE
'==================================================================================
								'CONNEXION A LA BASE DE DONNEES
'==================================================================================

Set RsGraphe = Server.CreateObject("ADODB.Recordset")
RsGraphe.ActiveConnection = MM_Cnn_STRING
RsGraphe.Source = "SELECT COUNT(nomchoisi) AS Nombre, nomchoisi  FROM VotreChoix  GROUP BY nomchoisi"
RsGraphe.CursorType = 0
RsGraphe.CursorLocation = 2
RsGraphe.LockType = 1
RsGraphe.Open()

RsGraphe_numRows = 0
%>
<%
'==================================================================================
'Dans la balise HTML, xmlns:v="urn:schemas-microsoft-com:vml", permet d'informer
'le navigateur que la page peut contenir du code VML(Vector Markup Language)
'==================================================================================
%>
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>Résultats du Sondage Intranet</title>
<style>
  v\:* {behavior:url(#default#VML);}
</style>
</head>
<body>
<FONT COLOR="blue" size="+3">Résultats du Sondage Intranet</FONT>
<br>
<!--
Ici, le rect est un exemple, pour la suite des exemples,
veuillez copier le code directement dans le BODY de ce document
-->

<%'for i=1 to RsGraphe.RecordCount%>

<%While Not (RsGraphe.EOF or RsGraphe.BOF)%>
<%
'==================================================================================
					'Les couleurs son définies dans la base de données
				'Ceci pour éviter que les barres de l'histogramme aient la même couleur
		'Vous pouvez aussi créer un script de génération automatique de couleur aléatoire
'==================================================================================

Set RsCouleurs= Server.CreateObject("ADODB.Recordset")
RsCouleurs.ActiveConnection = MM_Cnn_STRING
RsCouleurs.Source = "SELECT Couleurs FROM SondageDesignationIntranet Where nomchoisi='" & RsGraphe.Fields.Item("nomchoisi").Value & "'"
RsCouleurs.CursorType = 0
RsCouleurs.CursorLocation = 2
RsCouleurs.LockType = 1
RsCouleurs.Open()

RsGraphe_numRows = 0
%>


<%'RANDOMIZE%>
<%'CodeCouleur=Int((9 * Rnd) + 1)%>
<%'CodeLettre=Int((8 * Rnd) + 3)%>
<%'LETTRE=CHR(69-Int((5 * Rnd) + 1))%>
<%'=69-Int((4 * Rnd) + 1)%>
<%'=LETTRE%>
<v:rect
<!--Commande VML qui permet de tracer un rectangle
Devant Width, mettre la longueur du rectangle et devant height, la largeur
La couleur est définit par fillcolor et on lui affecte le champ de base de données contenant le code de la couleur
->
  fillcolor="<%=(RsCouleurs.Fields.Item("Couleurs").Value)%>"
 <!--
 Dans Height, mettez, la valeur correspondant à la hauteur
 ->

  style="position:relative;top:1;left:1;width:40;height:<%=(RsGraphe.Fields.Item("Nombre").Value)*20%>;">
<b><div align="center"><%=(RsGraphe.Fields.Item("nombre").Value)%></div></b>
<%
RsCouleurs.Close()
Set RsCouleurs = Nothing
%>
</v:rect>
<%RsGraphe.MoveNext%>
<%WEND%>
<br>
<br>
<br>
<FONT COLOR="blue" size="+1">Légende</FONT>
<br>
<%
Set RsCouleurs= Server.CreateObject("ADODB.Recordset")
RsCouleurs.ActiveConnection = MM_Cnn_STRING
RsCouleurs.Source = "SELECT distinct NomChoisi,Couleurs FROM SondageDesignationIntranet order by nomchoisi"
RsCouleurs.CursorType = 0
RsCouleurs.CursorLocation = 2
RsCouleurs.LockType = 1
RsCouleurs.Open()

RsCouleurs_numRows = 0
%>
<%While Not (RsCouleurs.EOF or RsCouleurs.BOF)%>

<FONT COLOR="brown"><%=(RsCouleurs.Fields.Item("NomChoisi").Value)%></FONT>
<v:rect
  fillcolor="<%=(RsCouleurs.Fields.Item("Couleurs").Value)%>"
  style="position:relative;top:1;left:1;width:40;height:10;">
</v:rect>
<br>
<%RsCouleurs.MoveNext%>
<%Wend%>
<%
RsCouleurs.Close()
Set RsCouleurs = Nothing
%>
<p>
</p>
</body>
</html>
<%
RsGraphe.Close()
Set RsGraphe = Nothing
%>



 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) ASP.NET - SAVOIR QUAND L'UTILISATEUR FERME LA FENETRE VIA CA... par werdDomain
CLASSE IMBRIQUÉS EN VBSCRIPT DE DOSSIERS (APPLICABLE ASP) par internetdev
Source avec Zip SÉRIALISER / DÉSÉRIALISER DES VARIABLES EN ASP par lejdu
CREATION D'UN AUTOCOMPLETE JQUERY AVEC UN CODE SOURCE ASP ET... par dedebis84
Source .NET (Dotnet) RÉCUPÉRER DES VALEURS D'UNE LIGNE DANS UN DATAGRID APRÈS AVO... par PascalCmoa

 Sources en rapport avec celle ci

Source avec Zip UN MODULE POUR APPRENDRE SQL par Elmarzougui
Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
Source avec Zip Source .NET (Dotnet) INSERER UNE PHOTO DANS UN CHAMP BLOB (IMAGE) DANS TABLE SQL ... par Myke
Source avec Zip Source avec une capture Source .NET (Dotnet) THCHARTS: HISTOGRAMME AVEC PLUSIEURS SERIES par TUHABITES
Source avec une capture VML/ASP : GÉNÉRATION D'UNE COURBE DE DROITES par zeb13

Commentaires et avis

Commentaire de fabrice69 le 25/06/2004 01:33:45 administrateur CS

intéressante comme source, Pour ceux que VML interessent, il y a un ensemble d'article permettant d'appréhender une partie des possibilité de celui-ci à l'adresse suivante :
  - http://www.asp-php.net/tutorial/vml/index.php

F___

Commentaire de laspirant le 27/08/2004 18:37:34

j'ai utilisé VML pour faire des courbes, mais là je crois que je vais faire un plaisir immense au cadres de ma boites en leur montrant de beaux graph sur l'intranet.
merci pour cette source.super

Commentaire de tontonpolak le 30/08/2005 17:52:34

Merci rahou, le VML est Magique
je me permets de mettre un code un peu plus généraliste pour en faire profiter tout le
monde meme les novices
Je sais c'est facile de mettre un code derrière un autre, mais c'est pour montrer plus de
fonctionalité entre autre la 3D.

Une petite Image : http://img353.imageshack.us/img353/8491/test0bc.jpg

Voilà le code (copier / coller dans notepad et enregistrer sous test.htm) :

<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>Résultats du Sondage Intranet</title>
<style>
  v\:* {behavior:url(#default#VML);}
</style>
</head>
<body>
<SCRIPT language="VBScript">
Function RazRotate()
txtX.value = 0
txtY.value = 0
txtZ.value = 0
    rx = 0
    ry = 0
    rz = 0
For i = 1 To 10
document.getelementbyid("Rect"&cstr(i)).rotation = rz
document.getelementbyid("Ext"&cstr(i)).rotationangle = rx & " " & ry
Next
End Function
Function ChangeRotate()   
x = txtX.value
y = txtY.value
z = txtZ.value
If Not IsNumeric(x) Then
   alert("X : n'est pas Valide !!!")
   txtX.focus()
   return
End If
If Not IsNumeric(y) Then
   alert("Y : n'est pas Valide !!!")
   txtY.focus()
   return
End If
If Not IsNumeric(z) Then
   alert("Z : n'est pas Valide !!!")
   txtZ.focus()
   return
End If
    rx = x
    ry = y
    rz = z
For i = 1 To 10
document.getelementbyid("Rect"&cstr(i)).rotation = rz
document.getelementbyid("Ext"&cstr(i)).rotationangle = rx & " " & ry
Next
End Function
Function Change3D()
Select Case Sel3D.value
   Case "2D"
   For i = 1 To 10
document.getelementbyid("Ext"&cstr(i)).backdepth = 0
Next
   Case "3D"
For i = 1 To 10
document.getelementbyid("Ext"&cstr(i)).backdepth = 75
Next
   End Select
End Function
Function ChangeDegrade()
Select Case SelDegrade.value
   Case "Sans"
   For i = 1 To 10
document.getelementbyid("Deg"&cstr(i)).type = none
Next
   Case Else
For i = 1 To 10
document.getelementbyid("Deg"&cstr(i)).on = True
document.getelementbyid("Deg"&cstr(i)).type = SelDegrade.value
Next
   End Select
End Function
</SCRIPT>
<center>
<v:line from="0, 0" to="70, 0" style="width:100;height:100">
  <v:fill on="True" color="#FFFFFF" color2="#fe845a" type="gradient" angle="180" />
  <v:shadow on="true" color="#808080" offset="5pt, 5pt" opacity="50%" />
  <v:path textpathok="True" />
  <v:textpath on="True" string="Résultats du Sondage Intranet" style="font:normal normal normal 40pt Arial" />
</v:line>
</center>
<hr>
Dégradé :
<select name="SelDegrade" onchange = "ChangeDegrade()">
<option value="Sans"> Sans</option>
<option value="gradient" selected> Gradient</option>
<option value="gradientradial"> Gradient Radial</option>
</select>
&nbsp;&nbsp;
Vue 3D :  
<select name="Sel3D" onchange = "Change3D()">
<option value="2D">2D</option>
<option value="3D" selected> 3D </option>
</select>
&nbsp;&nbsp;
Rotation :
x = <input type="text" Id="txtX" style="width:30" maxlenght="3">
y = <input type="text" Id="txtY" style="width:30" maxlenght="3">
z = <input type="text" Id="txtZ" style="width:30" maxlenght="3">
<input type="button" value="Rotate" onclick="ChangeRotate()">
<input type="button" value="Raz" onclick="RazRotate()">
<hr>
<br>  

<script language="VBScript">
Dim R
Dim V
DIM B
DIM WAleat
DIM Couleur
For i=1 to 10
R = hex(Int((255 - 0 + 1)*Rnd() + 0)) 'Couleur Aléatoire Rouge (0 => 255)
V = hex(Int((255 - 0 + 1)*Rnd() + 0)) 'Couleur Aléatoire Vert (0 => 255)
B = hex(Int((255 - 0 + 1)*Rnd() + 0)) 'Couleur Aléatoire Bleu (0 => 255)
WAleat = Int((255 - 0 + 1)*Rnd() + 0) 'Longeur de l'Histogramme Aléatoire (0 => 255)
Couleur= R&V&B 'La Couleur en Hexadecimal est = à Rouge + Vert + Bleu
randomize    ' un petit Random pour qu'à chaque rafraichissement ça bouge un peu
'La partie Dégradé => <v:fill
'La partie 3D de votre Rect avec une autre forme de terminaison de balise VML "<balise />" comme le XHTML => <v:extrusion
document.write "<v:rect id='Rect"&i&"'"&_
   " fillcolor='#"&Couleur&"'"&_
" style='position:relative;top:1;left:1;width:"&WAleat&";height:20'>"&_
     "<v:fill id='Deg"&i&"' on='True' type='gradient' color='#"&Couleur&"' />"&_
"<v:extrusion id='Ext"&i&"' on = 't' type = 'perspective' backdepth = '75pt' />"

   if WAleat > 55 Then 'Comme je donne la largeur de l'Histogramme au libellé interne, je suis obligé d'adapter pour éviter le retour chariot à cause de la Largeur
   document.write "<b><div align='center' style='position:relative;top:13;width:"&WAleat&"'>test : "&i&"</div></b>"
Else
document.write "<b><div style='position:relative;top:13;left:5;width:100'>test : "&i&"</div></b>"
End If
document.write "<b><div style='position:relative;top:0;left:300;width:"&WAleat&";height:20'>"&WAleat&"</div></b>"&_
"</v:rect>"&_
"<br>"
Next

</script>   
</body>
</html>

Bye et continue le VML

Commentaire de rahou le 30/08/2005 18:21:28

Ton script donne plus de fun au design.
Merci quand même.
Il faut cependant noter que le VML est quand même à ses balbutiements étant donné que des navigateurs comme firefox ne l'ont pas encore adopté.

Commentaire de tontonpolak le 31/08/2005 12:59:42

Ah ouaih, je savais pour la limite Supérieure à IE5 mais pour Firefox
as tu plus de news à propos des Navigateurs compatibles ???
genre Nescape, opéra, mozilla

Ils devraient bientot le faire etant recommander (ou normaliser) par le W3C

en tout cas, à choisir entre la daube Flash et le VML j'ai choisi :-)

bye

Commentaire de neddo le 21/03/2006 16:44:41

Joli programme.Bravo note 8,5/10
seulement si on pouvait avoir des histogramme verticaux

Commentaire de rahou le 21/03/2006 23:30:25

Salut Nedo, tontonpolak  a fait un prog similaire en vertical.
Il  suffira de faire varier certaines propriétés de la balise rect.

Commentaire de Jo_Pistol le 16/07/2007 13:17:22

Salut!

Pas mal tu tout l'utilisation du vml.
Est ce que tu sais si il est possible de faire des "pivot chart" avec ou pas.

Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Convertir le résultat d'une requete SQL en Histogramme [ par Toxic64 ] Bonjour, pour faire court, je vais poser le contexte. J'ai un cluster ISA 2006 qui stocke ses logs dans une base SQL(nombres de visite des sites, I Solution BI ( SQL Server 2008) [ par rimo26 ] Bonjour tout le monde, je suis entrain de faire la conception d'une solution décisionnelle dans une ba,que, je voudrais savoir, SVP, quelle est l'appr connection entre asp.net et sql server [ par saif87 ] Bonjour, aidez moi svpppppppppppppppppp je veux un exemple qui illustre la connection entre asp.net et sql server (qui installer avec le vs 2008) je compatibilité de serveur sql !! [ par Darkaminoo ] Bonjour j'ai installé microsoft visual studio 2008 version professionnel et j'ai le systeme windows seven version integral. mon proleme se pose dans Chargement drop down list a partir d'une req SQL [ par Nitrakz ] Bonjour a tous En VB .NET voila j'ai un petit problème, je doit charger une drop down list a partir d'une requête sql mais je ne sait pas comment fair Comparaison entre 2 date sur sql [ par sharifcrd ] sharif Select * From "E:\MAINTENANCE\DataBase\Capteur.dbf" Where REPARE_LE > '01/02/2000' AND REPARE_LE < '28/03/2001' en executant cette commande DE SQL [ par JMMORIO ] Bonjour, J'élabore toujours un petit programme en VB 2008 express utilisant ACCESS comme base de données. Mon code comporte une ligne de type INSERT alimentation base sql via formulaire [ par elixirspectacles ] Bonjour j'ai créer un formulaire (php) apres remplissage des champs j'ai bien un message vos données sont enregistrées sauf que les données dans ma b Probleme avec une requete sql sur acces [ par bebrouss ] Bonjour, je suis asser nouveau dans l'asp J'aurais p-t besoin d'un coup de pouce Voic mon code <% cn="Driver={Microsoft Access Driver (*.mdb)}; D pl\sql [ par amiradh ] bonjour; SVP est ce que quelqu&#8217;un peut m'aider à dévélopper une exception en PL\SQL qui vérifie l&#8217;existence d'une colonne d'une table1 da


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,562 sec (3)

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