IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[DATASET] Création utilisation


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut [DATASET] Création utilisation
    Bonjour,

    Voila, je voudrai savoir comment faire pour créer et remplir un dataset à partir d'un fichier xml ou xsd. Pour info, les schéma xsd ne sont pas générés par une base de donnée type SQL, donc les assistant de visual studio ne les prennent pas en compte.

    J'ai vu qu'il existe un outil "xsd.exe" qui permet de générer un xsd à partir du fichier xml mais je ne sais pas du tout comment l'utiliser.

    Sinon comment je peux faire pour créer mon dataset?

    Je cherche un peu partout sur le net mais je n'arrive pas à trouver de réponses clair pour un débutant comme moi...SVP

    En vous remerciant par avance

  2. #2
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    tu créé ton dataset
    tu fait ta requete xpath
    tu charge les résultat de ta requete dans ton dataset
    exactement comme en sql! ( bon xpath est moins puissant que sql quand meme)
    apres la syntaxe précise je m'en rappele plus mais tu devrai trouver ca facilement

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Merci

    Bon Xpath je connais un peu maintenant car je travail avec pour récupérer des infos d'un fichier xml.
    Le problème est que je rempli mon datagridview manuellement. c'est à dire que je fais des itérations dans mon xml et ensuite je charge les données dans le datagrid. les modifications dans le DGV s'enregistrent comme il faut dans mon fichier xml.
    Mais ce traitement est lourd.
    mais je ne sais pas utiliser les dataset. quand tu parle de le créer, c'est à dire que dans les Windows form de visual studio je le sélectionne? et ensuite je clic sur le DGV pour le lier a celui ci?
    Je suis désolé, c'est en l'utilisation même du dataset que j'ai du mal...
    Tu n'aurais pas un exemple un peu concret stp?

    (Comprend vite mais faut m'expliquer lontemps )

  4. #4
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    les modifications ne peuvent pas être appliqués directement sur un datagrifview. Le plus souvent un datagrid view est lié a un dataset et les modifs se portent sur le dataset
    pour faire une requete xpath sur un dataset, je ne m'en rappelle vraiment plus mais je crois que j'avai trouver des réponses à l'époque sur un des tutos du site.
    Sinon pour l'utilisation meme du dataset http://plasserre.developpez.com/v6-5.htm

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Merci, je suis déjà tombé sur ce site.
    Mais l'exemple montre la création et l'utilisation d'un dataset à partir d'une base de donnée alors que pour moi ce n'est pas le cas.

    J'ai fais ce bout de code qui me permet de récupérer certaines infos de mon xml via le dataset et les afficher dans mon DGV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        Dim ds As DataSet
        Dim xmlfl As XmlDocument
        Dim file As String
     
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            file = "MonFichierXML"
     
            xmlfl = New XmlDocument()
            xmlfl.Load(file)
            ds = New DataSet()
            Dim lcteurXml As XmlNodeReader = New XmlNodeReader(xmlfl)
            ds.ReadXml(lcteurXml)
            DataGridView1.AutoGenerateColumns = True
            DataGridView1.DataSource = ds
            DataGridView1.DataMember = "partItem"
    End Sub
    à partir de la j'affiche bien les données contenant dans ma ligne pour chaque "partItem".
    Mais la mise à jour du document ne marche pas.
    Je ne pense pas utiliser la bonne méthode mais voici ce que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
            DataGridView1.Update()
            DataGridView1.Refresh()
            ds.WriteXml(file)
     
            xmlfl.Save(file)
     
        End Sub
    Suis-je sur la bonne voie?

  6. #6
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    le principe est la, apres si ton code marche je ne sais pas
    Tout ce que je peux te dire c'est l'extraction de données d'un fichier xml est quelque chose de tres simple, par contre l'écriture et l'insertion de données dans un fichier xml c'est une autre paire de manche ( moins formalisé qu'une base de donnée). Pour la suite je ne sais pas si je vais pouvoir t'aider je n'était pas allé tres loin dans la manip des fichiers xml

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Ok,

    Et bien le premier code marche, enfin il fait pas exactement ce que je veux au final mais à partir de ça je peux afficher les données du nœud pointé (ou des noeuds si plusieurs).
    Disons que pour résumer, je rempli mon DGV directement en parsant le fichier xml (en utilisant XPath pour récupérer précisément ce qu'il faut) et les modifs sur le DGV peuvent ensuite être sauvegardées dans le fichier xml. mais comme je l'ai dit précédemment c'est lourd comme traitement et je sais qu'avec un dataset il est possible de faire plus simple.

    C'est sur que si j'avais une base de donnée type SQL cela sera bien plus simple car tout est automatisé. (dataAdapter.fill(), etc.)
    Je fouille dans la MSDN au sujet de dataset et son utilisation avec xml mais c'est galère...

    Ce que j'ai compris, lorsque je fais cela charge le dataset avec le schéma Inline et les données du fichier xml.
    mais après c'est pour accéder aux données du dataset en fonction de mes besoins et les afficher dans le DGV.
    ça me rend tout ça...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par DiamonDonald Voir le message
    mais après c'est pour accéder aux données du dataset en fonction de mes besoins et les afficher dans le DGV.
    Up

    Personne qui pourrait m'orienter??

  9. #9
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    va voir ce lien, c'est sur le xmldatadocument
    http://msdn.microsoft.com/fr-fr/libr...sd(VS.80).aspx
    il présente les avantages du xmldocument et du dataset ca devrait t'aider

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    je suis justement en plein dessus, merki

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Bon j'en suis la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
     
            file = "MonFichierXML"
     
            ds = New DataSet()
     
            ds.ReadXml(file)
     
            xmlDoc = New XmlDataDocument(ds)
            Dim nodeList As XmlNodeList = xmlDoc.DocumentElement.SelectNodes(path)
     
            Dim dataRow As DataRow
            Dim xmlNode As XmlNode
     
            For Each xmlNode In nodeList
                dataRow = xmlDoc.GetRowFromElement(CType(xmlNode, XmlElement))
            Next
     
            If ds.Tables.Count > 0 Then
     
                DataGridView1.DataSource = ds
                DataGridView1.DataMember = ds.Tables.ToString
     
            Else
                MessageBox.Show("pas de tables")
     
            End If
    End Sub
    Le problème c'est que j'ai une exception a cette ligne
    xmlDoc = New XmlDataDocument(ds)
    Qui me dit : "la référence d'objet n'est pas définie à une instance d'objet"

    Idem pour cette ligne la un peu plus après dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Dim nodeList As XmlNodeList = xmlDoc.DocumentElement.SelectNodes(path)
    Et je ne vois pas ce que je dois faire...

  12. #12
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    c'est quoi exactement ton exception?
    c'est pas plutot dim xmldoc as new xmldatadocument
    puis un truc du genre xmldoc.datasource=ds ou xmldoc.read(ds)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Non j'avais déjà essayé mais cela ne change rien. le code je l'ai adapté de la msdn (si je retrouve le lien je le met ). le filtre est en vb, donc la synthaxe doit être bonne, je ne pense pas que la msdn se trompe
    Mais après soit j'ai loupé une étape, ou bien... soit

  14. #14
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    ton exception vient surement du fait que ds est vide ou non référencé, exécute ton programme pas a pas pour voir
    Et quelle est l'exception exacte? ( NullReference Exception ne m'étonnerait pas )

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Pour l'exception oui c'est bien ça mais le problème c'est que lorsque je charge mon dataset avec le fichier xml, il me crée mes 86 tables (oui mon fichier xml est assez 'gros') donc je pense pas qu'il soit vide.

  16. #16
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    recapitulon:
    ton dataset n'est pas vide d'apres ce que tu dit
    tu fait un xmlDoc = New XmlDataDocument(ds)
    moi je verrai vraiment dim xmlDoc as new ... tu déclare une variable il faut utiliser dim. Sur msdn ils ont fait comme ca car ils ont du déclarer la variable avant, mais toi il faut bien que tu la declare un jour ou l'autre
    pareil pour Dim nodeList As XmlNodeList = xmlDoc.DocumentElement.SelectNodes(path)
    dim nodelist as new xmlnodelist...
    change et reteste et dit moi ou exactement il y a l'exception et le message d'erreur precis

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    peut etre une piste = lié ton datagridview a dataset.tables(0) , ca devrait aller mieux

  18. #18
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    lefaucheux a raison il faut specifier le datatable que tu veut charger dans ton datagridview tu ne peut pas charger directement un dataset (enfin je crois)

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 41
    Points
    41
    Par défaut
    essaye ca aussi :
    Dim xmldoc As New Xml.XmlDataDocument


    xmlDoc = New Xml.XmlDataDocument(ds)


    Dim nodeList As new xml.XmlNodeList = xmlDoc.DocumentElement.SelectNodes(path)

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par bobby51 Voir le message
    recapitulon:
    ton dataset n'est pas vide d'apres ce que tu dit
    tu fait un xmlDoc = New XmlDataDocument(ds)
    moi je verrai vraiment dim xmlDoc as new ... tu déclare une variable il faut utiliser dim. Sur msdn ils ont fait comme ca car ils ont du déclarer la variable avant, mais toi il faut bien que tu la declare un jour ou l'autre
    pareil pour Dim nodeList As XmlNodeList = xmlDoc.DocumentElement.SelectNodes(path)
    dim nodelist as new xmlnodelist...
    change et reteste et dit moi ou exactement il y a l'exception et le message d'erreur precis
    Lol, je sais, je débute en vb mais ça j'avais compris. le dim xmlDoc as xmlDataDocument est déclaré avant le sub mais c'est juste que je ne l'ai pas mis ici. Sinon j'aurais eu une erreur bien avant de compiler ...
    Les variables sont bien déclarées mais j'ai quand même des erreurs, non pas à la compilation mais à l'exécution

Discussions similaires

  1. Problème de création/utilisation d'une Classe
    Par Stephane_br dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/05/2010, 17h12
  2. Compter ligne dataset + création label
    Par piero53 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/10/2009, 23h53
  3. création, utilisation d'un SAFEARRAY
    Par patoche.05 dans le forum C++
    Réponses: 2
    Dernier message: 23/02/2009, 14h36
  4. Réponses: 1
    Dernier message: 14/03/2007, 16h02
  5. requete SQL sur Typed DataSet, sans utiliser SQL serveur
    Par Harry_polin dans le forum Accès aux données
    Réponses: 2
    Dernier message: 06/10/2006, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo