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 !

COMPOSANT XSLT-SQL SERVER


Information sur la source

Catégorie :Composants Source .NET ( DotNet ) Classé sous : xslt, xsl, sql, composant, xml Niveau : Initié Date de création : 20/12/2004 Date de mise à jour : 18/04/2005 16:45:45 Vu / téléchargé: 11 501 / 252

Note :
Aucune note

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Voici un composant dont je suis assez fier, et qui me servira probablement dans mes prochains dev.  Il fait suite à l'exemple que j'ai posté sur CSharpfr.com et concerne donc la transformation, selon un fichier XSL, d'une requête sur SQL Server en HTML.

ATTENTION : pour l'utiliser vous devez télécharger XML FOR SQL Server sur le site de Microsoft.

UTILISATION :
1 - Une fois tout correctement installé, faites glisser le composant sur une feuille ASP.Net.
a) utilisation simple, remplissez les 3 propriétés :
RequeteSQL est votre requete sql se terminant par For XML Auto pour la sortie XML.
exemple :
SELECT  EmployeeID, FirstName, LastName FROM Employees  For XML Auto
FichierXSL est le répertoire dans votr e appli web ou se situe le fichier de présentation XSL.
exemple : modeles/MyXSL.xsl

ChaineSQLServer est évidemment la chaine de connexion à la base dont voici un exemple :
Provider=SQLOLEDB;Server=localhost;database=Northwind;uid=sa;pwd=monpass

En fait il faut surtout savoir réaliser un fichier XSL : )

b) ajouter un paramètre dans la feuille XSL.
Pour le valoriser dynamiquement avec ce composant il suffit de faire :
SqlToXslt1.XSLParams.AddParam("mon_param","","ma valeur !");

c) valorisation de variable dans une requête paramétrée
exemple de la requête :
SELECT  EmployeeID, FirstName, LastName FROM Employees WHERE EmployeeID > ?  For XML Auto

dans le code :
using Microsoft.Data.SqlXml
...
SqlXmlParameter a = SqlToXslt1.CommandeSQL.CreateParameter();
a.Name = "EmployeeID";
a.Value = 2;

Ici l'exemple est en dur, mais évidemment le but est de réaliser des liens par exemples dans le XSL qui change dynamiquement l'affichage du composant... et pourquoi pas en changeant alors aussi le fichier XSL.
 

Conclusion

Les défauts de ce composant :
1-Pas d'affichage "page par page"... Ou alors ce sera compliqué à faire.
2-Une seule requête possible.

Bref, ce composant permet d'afficher toutes sortes d'informations provenant d'une base SQL Server avec une grande dynamique, que ce soit dans la présentation, ou dans la structure de la présentation
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 décembre 2004 11:22:21 :
21 décembre 2004 19:14:33 :
Comme il me l'a été fait remarqué, le tri sur les colonnes (si on crée une liste) est en fait possible facilement en créant des liens dynamiques dans le XSL.
23 décembre 2004 12:27:17 :
17 avril 2005 19:05:05 :
Variables publiques transformées en propriétés, et modification en conséquence de l'exemple.. Ce dernier est fourni dans le zip.
18 avril 2005 16:45:45 :

Commentaires et avis

signaler à un administrateur
Commentaire de mushimushi le 17/04/2005 01:29:11

...

signaler à un administrateur
Commentaire de mushimushi le 17/04/2005 01:35:09

J'aurais juste un petit commentaire:

Si tu n'as jamais développé de ta vie, ok, tu peux être presque content de toi... (et encore, ton composant ne fait rien de spécial...).
Autrement, j'aurais honte de moi à ta place ....

Ca fait 20 ans qu'on dit qu'il ne faut pas mettre les variables d'un objet en public...

#region Variables publiques
public SqlXmlCommand CommandeSQL;
public XsltArgumentList XSLParams = new XsltArgumentList();
#endregion

Achètes-toi un livre sur l'objet.... et tu pourras être fier de ton ... achat.

La vanité est un vilain défaut....

signaler à un administrateur
Commentaire de stailer le 17/04/2005 02:00:45

Merci de me donner le code permettant d'améliorer ce composant et de m'expliquer pourquoi je peux pas mettre ces variables en "public", tu penses que je devrais les transformais en propriété ? je vois que cette solution... Mais alors le code, du côté de la page, va grossir. Ca pert de l'intérêt... Bref, je suis pas expert .Net, si tu veux bien m'aider y a pas de souci.

Pour le reste, t'as pas compris, c'est pas grave... C'était dans le sens : content de pouvoir utiliser (grâce à asp.net et le patch XML pour SQL Server) un composant fait assez rapidement, permettant des transformations XSLT aussi puissantes. Inutile d'épiloguer, les joutes sur les forums me fatiguent : )

signaler à un administrateur
Commentaire de mushimushi le 17/04/2005 16:38:51

re,

oui, même si cela ajoute du code, il faut ne faut JAMAIS mettre les variables internes d'un objet en public.

Je te conseille vivement de changer leur accès pour passer par des propriétés (ou des méthodes setMachin, getMachin comme en Java).

PS:
Pas besoin de les mettre en private.... il y a aussi protected... il faut peser le pour et le contre...

Si tu veux plus d'explications sur le pourquoi n'hésites pas à me demander.

a+

signaler à un administrateur
Commentaire de stailer le 17/04/2005 17:40:34

Bon, j'ai regardé mon code... Effectivement j'ai merdé, je comprends pas. J'avais déjà crée 2 propriétés pour configurer... Et je comprends pas pourquoi j'ai pas mis ces 2 variables publiques en propriété également... Bon je change tout ça et je poste la mise à jour.

signaler à un administrateur
Commentaire de stailer le 17/04/2005 19:06:48

Mise à jour effectuée et j'ai mis un exemple dans le zip.
En fait la seule chose qui change c'est ça :
au lieu de faire :

SqlToXslt1.XSLParams.AddParam("mon_param","","ma valeur !");

il faudra faire
XsltArgumentList() argus = new XsltArgumentList() ;
argus.AddParam("mon_param","","ma valeur !");
SqlToXslt1.XSLParams = argus

signaler à un administrateur
Commentaire de mushimushi le 18/04/2005 16:38:34

re,

c'est pas pour t'embêter, mais il y a un nom dans ton assembly.

au cas ou tu voudrais rester anonyme je te suggère de l'enlever (si c'est bien ton nom).

a+

signaler à un administrateur
Commentaire de stailer le 18/04/2005 16:41:57

Merde, vi... En fait quand je vais livrer mon appli, je vais faire une page spéciale qui va chercer toutes les infos de mes dll et les affiche à l'écran.. Ce sera pour le suivi de version.

Je reposte tout de suite l'archive, sans mon nom car effectivement ca craint un peu : )

signaler à un administrateur
Commentaire de stailer le 29/04/2005 03:28:29

Voilà 15 jours que j'ai attaqué sérieusement ma nouvelle appli.. Et je me sers donc de ce composant, mais uniquement avec des procédures stockées paramétrées. Alors comme j'ai pas fourni d'exemple, bah c'est tout simple. Tapez votre procédure en déclarant une variable @nom, déclarer le paramètre comme dans les exemples fournis avec mon composants et ensuite dans la propriété "RequeteSQL" au lieu de mettre : "SELECT nom FROM machin WHERE nom = ?" et bien vous tapez : "Exec ma_proc ? FOR XML NESTED"
Voilà c'est tout.
Et si il y a plusieurs paramètres :
"Exec ma_proc ?, ? FOR XML NESTED"

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

asp net+There are multiple root elements. [ par jimmy69 ] Bonjour,je bosse avec c# 1.1 webform etj'essayes en vain d'applique une transformation xslt sur un fichier xml issue d'un dataset afin d'obtenir un fi [XSL]Importer et lire un .xml se trouvant sur un serveur... [ par akaii ] Bonjour, Je dois rendre dynamique cette partie de code<xsl:for-each select="document('pbxglobal.xml')//show/filter" > Actuellement le fichier pb [xml][xsl]page xml utilisant une base de donnée xml (pas de forum xml :/ ) [ par keliante ] Bonjour à tous, dsl de poster ici mais je n'ai pas trouvé sur quel forum posté mais comme il y a pas mal de sujet sur le xml ici , j' [xsl][xml] transformer un xsl avec un xml [ par keliante ] Bonjour à tous, Je recherche un moyen de transformer ma page xsl avec un xml. (pas un xml transformé avec xsl) J'ai trouvé sur intern [xsl][aspx] Encore un problème : ignore les xsl:attribute [ par keliante ] bonjour à tous, Après avoir perdu tous mes cheveux et assassiner les enfants de la maternels juste à coté de chez moi, je me sens Xml et Xsl [ par akaii ] Bonjour,- Visual Web Developer 2005.- C#.Je dois transformer un document .xml avec un fichier .xsl. Le fichier .xml se trouvant sur une passerelle VoI [xml] la programmation DOM [ par keliante ] bonjour à tous, comme vous vous interessez  au XML , vous pouvez surement m'aider. Je cherche à mettre du script dans mes pages XML/XS problème xml et xslt [ par c_ensias ] Bonjour à tous et à toutes,J'utilise un filtre xslt pour extraire des données d'un fichier source xml.Mon problème est le suivant Menu xml+xslt [ par Pkpo ] Bonjour, j'ai fait un menu en xml que je transforme en html grace à du xslt :Mon fichier xml:<?xml version="1.0" encoding="utf-8" ?><Map>  XSL :AIDEZ MOI SVP [ par lamiruth ] Bonjour à tous,svp je souhaite transformer un document du XML vers TXT.voici le format de données XML:<Listeproduits><produit><code>


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,515 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é.