Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

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

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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
%>

Commentaires et avis

signaler à un administrateur
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___

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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é.

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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.

signaler à un administrateur
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

Probleme SQL [ par yoyo ] Mon pb ne concerne pas directement ASP mais je suppose queqq'un pourra m'aider.La requete suivante est executee sur un serveur SQLServer 7.SELECT * FR Probleme avec SQL SERVER [ par valou ] salut,j'ai un probleme pour une requete en asp sur sql server.voici mon code:&lt;%Set conn = Server.CreateObject("ADODB.Connection")connstring = "driv SQL SERVER 2000 ???? connection [ par Troyan ] j'ai toujours systematiquement la meme erreur.cela doit etre un parametrage de SQL2K mais j'ai pas trouvé !!Help Échec de la connexion de l'utilisateu SQL Requete [ par ZL ] j'ai une table, nommée T1 qui contient 5 enregistrements,par exemple,1,2,3,4,5;j'ai une autre table,nommée T2 qui contient 2 enregistrements,par exemp Transfert de donnees entre 2 BD SQL Server 2000! [ par ludo ] Bonjour, j ai un leger pb!Voila j ai deux bases de donnees SQL server 2000. Je veux recuperer certaines donnees d une ou +sieur tables d une BD et les probleme SQL ??? ou variable ASP??? [ par peguman ] Je souhaite me connecter à une base après vérification de l'identité d'un client...Je passe en parametre le log et le pass et je les vérifies dans ma Erreur sur requête SQL dans page ASP ... [ par IF ] Voilà, je lutte sur un petit problème, je ne comprends pas d'où vient l'erreur dans la requête SQL suivante :----------------------------------------- Probleme de requete ASP-SQL [ par peguman ] lors d'un e requete SQL d'insertion dans une table, l'erreur suivante apparait : ADODB.Field erreur '800a0cb3' L'opération demandée par l'application Requete sql asp [ par seb ] voila j'ai un tout petit problèmeJ'ai une requete asp qui fonctionnne sur les critère en chaine de caractère mais lorsque je souhaite réaliser mon cri requete sql asp [ par seb ] Pourquoi je n'arrive pas a créer ma requete select sur un critère numauto qui est mon identifiant de ma table access.login est un request.from du form


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.