edwinzap
Messages postés149Date d'inscriptionsamedi 29 septembre 2012StatutMembreDernière intervention21 juin 2016
-
Modifié par edwinzap le 4/06/2014 à 15:09
edwinzap
Messages postés149Date d'inscriptionsamedi 29 septembre 2012StatutMembreDernière intervention21 juin 2016
-
4 juin 2014 à 15:54
Bonjour,
Je viens de commencer avec les fichiers Xml.
Mon programme crée des fichiers xml pour des chants. Voici la forme de mes fichiers XML:
Jusqu'à présent, j'allais chercher à chaque fois l'élément que j'avais besoin et remplissais la textbox correspondante.
Je voudrais utiliser un dataset composer de 2 tables liées (une pour les infos et une pour les paroles)
A l'ouverture du programme, je voudrais que le dataset se remplisse avec tous les fichiers xml se trouvant dans un dossier spécifiés. Comment faire?
J'ai essayé avec un morceau de code en allant chercher un seul fichier:
Dim fichier As String
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
fichier = OpenFileDialog1.FileName
ds.ReadXml(fichier)
DataGridView1.DataSource = ds
DataGridView1.DataMember = ds.Tables(0).TableName
End If
Ce code fonctionne, mais pour un seul fichier, et il ne me sort pas les informations des noeuds "Paroles". De plus, il crée sa propre table avec son propre schéma (ce que je ne souhaite pas)
Comment faire pour remplir mes deux tables avec tous les fichiers se trouvant dans un dossier spécifié??? (pour ensuite faire une liaisons entre les deux tables)
edwinzap
Messages postés149Date d'inscriptionsamedi 29 septembre 2012StatutMembreDernière intervention21 juin 20162 4 juin 2014 à 15:11
J'ai testé en ouvrant plusieurs fichiers l'un après l'autre, et il ajoute une datarow par fichier. Donc de ce côté, ça fonctionne.
Par contre il ne lis tjrs pas le noeud "Paroles" et je ne sais tjrs pas choisir dans quelle table il stocke les données !
J'ai juste une question dont je n'ai pas encore de solution.
Comment lié les deux tables???
Je devrait avoir pour cela un champ "ref" supplémentaire que je puisse ajouter
Voici mon code si ça intéresse qqn.
Je ne suis pas sur que ça soit le meilleur mais bon, ça fonctionne correctement:
Dim dossier As String
If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
dossier = FolderBrowserDialog1.SelectedPath
Dim répertoire() As String = Directory.GetFiles(dossier, ".", SearchOption.AllDirectories)
Dim N As Integer = 0
Dim RowCount As Integer = 0
For Each chant As String In répertoire
ds.ReadXml(chant)
DataGridView1.DataSource = ds
DataGridView1.DataMember = ds.Tables(0).TableName
DataGridView2.DataSource = ds
DataGridView2.DataMember = ds.Tables(1).TableName
If ds.Tables(0).Columns.Contains("Ref") = False Then
ds.Tables(0).Columns.Add("Ref")
End If
ds.Tables(0).Rows(ds.Tables(0).Rows.Count - 1)("Ref") = N
If ds.Tables(1).Columns.Contains("Ref") = False Then
ds.Tables(1).Columns.Add("Ref")
End If
For I = RowCount To ds.Tables(1).Rows.Count - 1
ds.Tables(1).Rows(I)("Ref") = N
Next
RowCount = ds.Tables(1).Rows.Count
N = N + 1
Next
End If