littlekenny
Messages postés43Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention10 septembre 2009
-
22 avril 2007 à 10:45
littlekenny
Messages postés43Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention10 septembre 2009
-
18 juin 2007 à 13:02
Bonjour,
Avant de vous exposer le problème et mon code, voici la base de données:
Public BaseDonnees As DataSet
Public VueDonnees As DataView
Public VueLigneDonnees As DataRowView
Public FichXML As String
Private MaTableDeDonnees As DataTable
Private MaVueDeDonnees As DataView
<hr />
Public Sub ChargerGrille()
'traitement
Try
'on renseigne le chemin du fichier XML
FichXML = Application.StartupPath & "\options.xml"
'on renseigne un dataset avec ce fichier XML sans shéma car inutile ici
BaseDonnees = New DataSet
BaseDonnees.ReadXml(FichXML)
'on trie
VueDonnees = Trier(BaseDonnees, "cut", "ident", True)
'on renseigne le datagrid
With DataGrid
.DataSource = VueDonnees.Table
End With
Catch exc As Exception
MessageBox.Show("XML file not found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
<hr />
Public Function Trier(ByVal DataSet As DataSet, ByVal Table As String, ByVal Propriete As String, ByVal TriAscendant As Boolean) As DataView
Dim Tri As String
' Génère une vue triée d'un dataset sur une propriété d'une de ses tables
MaTableDeDonnees = DataSet.Tables(Table) 'Mettre dans un Objet DataTable une table du DataSet
MaVueDeDonnees = MaTableDeDonnees.DefaultView 'Créer la vue
If TriAscendant = True Then
Tri = Propriete & " ASC"
Else
Tri = Propriete & " DESC"
End If
MaVueDeDonnees.Sort = Tri
Return MaVueDeDonnees
End Function
<hr />
Ma base de données est composée de lignes "cut" avec un id "ident".
Quand je n'utilise que les paramètres type :
<count> 1 </count>
Ca fonctionne nickel et mon datagrid est rempli (avec une ligne, dans ce cas ci).
Par contre, si je rajoute les sous noeuds type:
<v ident ="nom pour info" nr="1">valeur du paramètre</v>
Le programme s'arrête dans ce cas, et il me dit qu'il n'arrive pas à lire les sous noeuds.
J'aimerais savoir comment peut-on lire ces sous noeuds, récupérer la valeur du paramètre et le nom "vident" tout en pouvant lire les autres infos comme les premiers paramètres type <count>1</count>
Je vous remercie d'avance pour votre aide ou vos suggestions.
littlekenny
Messages postés43Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention10 septembre 2009 26 avril 2007 à 22:35
Merci pour tes réponses.
J'utilise aussi un XmlDocument pour lire et transférer les données dans une structure un peu plus utilisable avec un dataset. Mais bon, parcourir un fichier xml avec xmldocument ligne par ligne et copier en même temps les changements dans un nouveau fichier texte, c'est pas top...
littlekenny
Messages postés43Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention10 septembre 2009 25 avril 2007 à 20:26
En fait, non, le datagrid considère que certains noeux ont des enfants par rapport aux autres, ce qui provoque une erreur.
Pour résoudre ce problème, je lis le fichier et le recrée en virant une partie des infos des sous noeuds, pour avoir des enfants ayant la même déclaration et là, ça passe.
En passant, pour recréer le fichier xml, je crée un fichier texte et écrit tout simplement les données comme un flux texte,n'y aurait-il pas une solution plus rapide? Je pense au xmlwriter mais je n'ai pas encore tout compris... C'est la bonne voie?
littlekenny
Messages postés43Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention10 septembre 2009 18 juin 2007 à 13:02
La fonction writexml ne fonctionne pas si la structure des noeuds est différente. Je réécrit mon fichier et je sauvegarde les modifs avec writexml. Je garde tout de même ma solution, elle fonctionne bien.