Souhaite aide pour bdd xml et datagridview

Signaler
Messages postés
72
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
14 janvier 2013
-
Messages postés
72
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
14 janvier 2013
-
Bonjour,

Bon voila, je suis pas un crack en vb.net, mais j'essaye de comprendre un maximum, et de me démerder, par contre là j'ai besoin de votre aide.

J'ai un fichier xml, qui me sert de base de donnée. J'ai pris se fichier pour l'intégrer dans un datagridview:

Public datatable As New DataSet

datatable.ReadXml(filelocal)


Mon premier soucis, c'est que le fichier est composé de cette façon:

<?xml version="1.0" encoding="utf-8" standalone="no" ?> 
- 
- 
  <NomScientifique>Aborichthys elongatus</NomScientifique> 
- <NomCommuns>
  <NomCommun>test<NomCommun/>
  <NomCommun>test2<NomCommun/>
  <NomCommuns /> 
  <Famille>Balitoridés</Famille> 
  <Descripteur>Hora, 1921</Descripteur> 
- <Temperature>
  <TempMin>21</TempMin> 
  <TempMax>26</TempMax> 
  <TempRepro>0</TempRepro> 
  </Temperature>
- 
  6.5

 
  7.5

 
  0.0

 
  
- <Durete>
  <GHMin>5</GHMin> 
  <GHMax>12</GHMax> 
  <GHRepro>0</GHRepro> 
  </Durete>
- <Taille>
  <TailleMale>7.5</TailleMale> 
  <TailleFemelle>7.5</TailleFemelle> 
  </Taille>
  <EsperanceVie>6 à 8 ans</EsperanceVie> 
  <ZoneDeVie>Fond</ZoneDeVie> 
  <Origine>Inde (Bengale occidental, Darjeeling) Bangladesh</Origine>
  <Reproduction /> 
  



Et après un long moment j'ai compris que par le schema de mon xml, je me retrouvais avec 7 table:

datatable.Tables(0).Merge(datatable.Tables(3))
            datatable.Tables(0).Merge(datatable.Tables(4))
            datatable.Tables(0).Merge(datatable.Tables(5))
            datatable.Tables(0).Merge(datatable.Tables(6))
            DataGridView1.DataSource = datatable.Tables(0)


Je souhaite récupérer la table 2 qui correspond au NomCommuns, mais il me met une erreur dessus, j'ai l'impression que c'est à cause de la répétition du noeud "Nomcommun" ?

Ensuite mon second soucis c'est pour le tri, lorsque je clique sur le header de la colonne, il me tri une colonne (contenant du numérique) de cette façon:
1
12
2
3
...

Je sais que c'est dû à une colonne non défini en tant que numerique, mais je ne sais pas comment faire, j'ai déjà essayé pas mal de chose sans succès
Ensuite lorsque je fais un filtre sur ma datagridview, il me dis qu'il ne peut pas comparer mon textbox (decimal), sur un int32 ou string, ben oui logique.

Mais là j'ai tellement passé d'heures la dessus, que je pense basculer sur un autre moyen de gestion de bdd avec un xml, j'avais commencer avec une méthode manuel, et c'est vrai que c'est plus lent...

En vous remerciant.

6 réponses


Bonjour,

Je ne suis pas sur de bien comprendre ce qui se passe vraiment, mais j'ai l'impression que ton programme mélange un peu les choses.

Le Dataset est une sorte de conteneur pour des datatables.

En principe tu devrais avoir quelque chose qui devrait ressembler à cela:

dim quelquechose as DataSet
dim unetable as datatable = quelquechose.tables("NomDeLaTable")

si la table existe

ou

dim unetable as datatable = quelquechose.tables.add("NomDeLaTable)
Pour ajouter une table

pour lire le DataSet:

quelquechose.readxml()

Pour voir le contenu de ton Dataset:

mets un point d'arrêt immédiatement sur la ligne qui suit ton DataSet

Lance le programme et attend qu'il s'immobilise sur le point d'arrêt.

Une fois que la petite boîte d'information est ouverte, clique sur la loupe. Tu devrais voir chaque table table dans la liste déroulante et le contenu de la table dans la grille. C'est le seul moyen de savoir comment VB interprète ton fichier XML à titre de sources de données.

Bonjour,

Je souhaite récupérer la table 2 qui correspond au NomCommuns, mais il me met une erreur dessus, j'ai l'impression que c'est à cause de la répétition du noeud "Nomcommun" ?

Le xml contient des erreurs de slash au mauvais endroit. Il devrait être écrit comme ceci :
<NomCommuns>
  <NomCommun>test</NomCommun>
  <NomCommun>test2</NomCommun>
 </NomCommuns>


Pour le tri de ta grid, il y a un exemple sur msdn ici.

Et un bonjour à cmarcotte en passant

Bonjour Banana32,


Et un bonjour à cmarcotte en passant


Bonjour également.

J'espère juste que mon message privé s'est rendu. J'ai dû m'y prendre 3 ou 4 fois avant d'avoir un message qu'il s'était rendu !
Messages postés
72
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
14 janvier 2013

Bonjour et merci pour vos réponses, c'était tellement bête.... Je vais lancer une routine qui se chargera de vérifier la structure.

Mais pour le filtre de la colonne, comment puis-je faire pour dire que voila, la column(6).type = decimal ?

Merci

Là encore, jette un coup d'oeil sur msdn ici. Et aussi sur Decimal.TryParse
Messages postés
72
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
14 janvier 2013

Ca n'a pas marché (je parle de définir la colonne en numérique).

J'ai du faire un
convert.decimal
sur chaque valeur, et la formater avec 2 chiffre après la virgule.

Pour le tri je verrai cela ce soir, merci en tout cas pour les pistes !