OVH Cloud OVH Cloud

question que elle est bette !

4 réponses
Avatar
Helter Skelter
bonjour et meileurs voeux a toutes & tous :)

Probleme :
j'utilise vs2005 vb pour faire un site web
j'utilise aussi sql server 2005
je me mets à xml

donc j'ai créé une table avec un champs xml (normal non ?)
j'ai créé un schema (en fait plusieurs en fonction de l'article, mais la
n'est pas le probleme)

comment faire de la saisie d'un article ET donc ajouter les valeurs dans mon
champs xml si je ne connais pas, au depart, les champs a remplir ?

commentaire :
dans un "travail normal" on connait les champs à remplir donc (sans passer
par un "grid" quelconque) je peux creer une page de saisie avec les champs
adéquois.
Mais là je possede un champs "special" puisque XML !
comment creer dans ma page de saisie des textbox (par exemple) permettant de
remplir ma table correctement.

exemple pour mieux cerner mon probleme
ma table
id
libelle
prix
xmlCaracteristique


selon l'article saisi, xmlCaracteristique peut contenir ceci
taille
longueur
largeur
epaisseur
poids
fonction
wifi
bluetooth
pda

mais il pourrait contenir selon l'article que je saisi
UC
processeur
ram
DD1
DD2
typeDVD

Video
processeur
ram

Entree-Sortie
rs232
rj54
usb
firewire

donc mon probleme est de pouvoir lire un schema et ne recuperer (je suppose
?) que les entetes de champs et leurs propriétés (string ? entier ? date ?)
en ayant ces infos, creer dynamiquement tous les label et textbox pour
pouvoir saisir mon premier enregistrement dans la base...

merci pour vos suggestions

4 réponses

Avatar
Rudi Bruchez
Helter Skelter a écrit:

donc mon probleme est de pouvoir lire un schema et ne recuperer (je suppose
?) que les entetes de champs et leurs propriétés (string ? entier ? date ?)
en ayant ces infos, creer dynamiquement tous les label et textbox pour
pouvoir saisir mon premier enregistrement dans la base...



Bonjour,

Comme le schema est lui-même en XML, tu peux sans doute le parser et bâtir
ta form en conséquence.
Tu peux récupérer le schema en utilisant la fonction Xml_schema_namespace()
en T-SQL, tu peux aussi peut-être utiliser la méthode ReadXmlSchema de
l'object dataset en ADO.NET :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconloadingdatasetschemainformationfromxml.asp

--
Rudi Bruchez
Consultant indépendant SQL Server - MCDBA, MCT
http://www.babaluga.com/
Avatar
Helter Skelter
Grand merci Rudi pour ton aide

travaillant sur des pages web j'ai trouvé comment lire un enregistrement
contenant un champs xml

j'arrive maintenant à "lire" le schema associé non pas à ma table (car j'ai
18 schemas possibles pour un enregistrement) mais à ma base.
je vais chercher un schema non pas en "dur" dans un fichier xsd mais par son
name dans sys.xml_schema_namespaces

ce que je ne comprends pas vraiment dans sa logique c'est comment associer
ma saisie de valeurs dans un champs xml à son controle de validation.
Je ne comprends pas la logique (donc le fonctionnement).

voici ce que fait ma page
elle va lire le champs xml
je stocke dans un arraylist le titre du noeud et sa valeur en parcourant
tout le champs xml de mon enreg
je construit une table dynamique (a partir de l'arraylist puisque je connais
maintenant la taille de la table a creer) qui va afficher avec les bons tag
html (gras, décalé a droite ou gauche selon l'importance du noeud) mon
champs xml.

A ce niveau la, la notion de schema m'importe peu (sauf peut etre si je veux
afficher la comparaison des champs xml entre plusieurs articles de ma base
!).

Mais si je suis en saisie ou en modif de ce champs ?
Le schema prend alors toute sa valeur car c'est lui (si j'ai bien compris)
qui va m'empecher de rentrer une valeur string dans un champs integer ou
data par exemple.
Dans ce cas precis le controle de valitation via un schema doit se faire au
niveau de ma page ou au niveau de sql server ?
J'aurais tendance a repondre au niveau de ma page pour éviter les
aller/retour entre ma page et sql !
suis-je dans la bonne voie ?
Si c'est au niveau de sql server, comment dois-je m'y prendre ?
Si c'est au niveau de ma programmation VS2005 itou !

j'espere avoir bien expliqué mes manques en sachant que pas mal d'articles
sur msdn ne semblent pas valable pour VS2005 voire SQL2005.

Ne pas oublier (et c'est pour cela que je post ici) que je ne lis pas un
fichier xml attaché à un schema xsd, mais bien un champs xml que je rattache
dynamiquement à un des 18 schemas disponibles stockés dans ma base

donc je n'ai pas de
Dim xmlStream As System.IO.StreamReader = New System.IO.StreamReader
("schema.xsd")
Dim myDS As DataSet = New DataSet
(voir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconloadingdatasetschemainformationfromxml.asp)
car je ne pense pas devoir ou pouvoir utiliser System.IO.StreamReader qui
s'applique apparement a de la lecture ecriture de fichiers.


merci pour vos lumieres



"Rudi Bruchez" <rudi#nospam#at_babaluga.com> a écrit dans le message de
news: 11e36mkuws1yt$
Helter Skelter a écrit:

donc mon probleme est de pouvoir lire un schema et ne recuperer (je
suppose
?) que les entetes de champs et leurs propriétés (string ? entier ? date
?)
en ayant ces infos, creer dynamiquement tous les label et textbox pour
pouvoir saisir mon premier enregistrement dans la base...



Bonjour,

Comme le schema est lui-même en XML, tu peux sans doute le parser et bâtir
ta form en conséquence.
Tu peux récupérer le schema en utilisant la fonction
Xml_schema_namespace()
en T-SQL, tu peux aussi peut-être utiliser la méthode ReadXmlSchema de
l'object dataset en ADO.NET :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconloadingdatasetschemainformationfromxml.asp

--
Rudi Bruchez
Consultant indépendant SQL Server - MCDBA, MCT
http://www.babaluga.com/


Avatar
Rudi Bruchez
Helter Skelter a écrit:

Dans ce cas precis le controle de valitation via un schema doit se faire au
niveau de ma page ou au niveau de sql server ?
J'aurais tendance a repondre au niveau de ma page pour 赩ter les
aller/retour entre ma page et sql !
suis-je dans la bonne voie ?
Si c'est au niveau de sql server, comment dois-je m'y prendre ?
Si c'est au niveau de ma programmation VS2005 itou !



Le schéma valide la saisie des données au niveau de SQL Server. Tu crées
une colonne de type XML typé, c'est à dire que tu indiques que cette
colonne doit être validée par ce schéma.
http://msdn2.microsoft.com/en-us/library/ms184277.aspx

Tu peux aussi valider au niveau du code client avec ton schéma, mais je ne
connais pas la syntaxe.
Un article sur le sujet :
http://www.developer.com/net/net/article.php/3406251

--
Rudi Bruchez
Consultant indépendant SQL Server
MCDBA, MCT, SCJP2
http://www.babaluga.com/
Avatar
Helter Skelter
merci Rudi

mon champs sql n'est donc pas typé puisque plusieurs schemas sont possibles.
et merci pour tes liens

en ce qui concerne msdn2, je crois sans me vanter avoir tout lu (j'ai pas
dit compris hein ?)
notament le SQL Server 2005 Books Online Using XML in SQL Server.
Mais trop d'infos nuisant à l'info je n'ai pas trouvé grand chose parlant
simplement
mais plutot un dico/inventaire à la Prévert de regles grammaticales sans
queue ni suite souvent...

Le deuxieme lien (qui de toute facon correspond à ta definition de xml typé
ou pas (je pensais bettement que le fait d'avoir des schema associés à un
champs xml le "rendait" typé de facto)) semble prometeur et au moins plus
didactique.


merci pour le temps consacré à mes problemes ;)


"Rudi Bruchez" <"rudi#no-spam#[at]babaluga.com"> a écrit dans le message de
news: 10t5qaufvp68s.1e0v18nr6r2y8$
Helter Skelter a écrit:

Dans ce cas precis le controle de valitation via un schema doit se faire
au
niveau de ma page ou au niveau de sql server ?
J'aurais tendance a repondre au niveau de ma page pour ?ter les
aller/retour entre ma page et sql !
suis-je dans la bonne voie ?
Si c'est au niveau de sql server, comment dois-je m'y prendre ?
Si c'est au niveau de ma programmation VS2005 itou !



Le schéma valide la saisie des données au niveau de SQL Server. Tu crées
une colonne de type XML typé, c'est à dire que tu indiques que cette
colonne doit être validée par ce schéma.
http://msdn2.microsoft.com/en-us/library/ms184277.aspx

Tu peux aussi valider au niveau du code client avec ton schéma, mais je ne
connais pas la syntaxe.
Un article sur le sujet :
http://www.developer.com/net/net/article.php/3406251

--
Rudi Bruchez
Consultant indépendant SQL Server
MCDBA, MCT, SCJP2
http://www.babaluga.com/