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

Windows Forms Discussion :

[vb.net] convertir dataview -> datatable


Sujet :

Windows Forms

  1. #21
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    ok, si tu essayes de charger tes données dans dt comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dt.Rows.Add(m_dsWebs.Tables(4).Copy.Select(dvNames.RowFilter))
    ça donne quoi ? (ajout de Copy)

  2. #22
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    meme chose.

  3. #23
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    est-ce que pae hasard, la table source aurait des relations avec d'autres tables dans son DataSet ?

    parce que comme on a copié la structure de la table source avec .Clone, on a aussi copié les relations...
    et comme dt, elle, n'est pas affectée au DataSet, peut-être que .Net y perd un peu ses petits...

    TEST :
    essaie d'ajouter dt au même DataSet que la Table source... pour voir...

  4. #24
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    essaie d'ajouter dt au même DataSet que la Table source... pour voir...
    Je vois pas trop pourquoi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    est-ce que pae hasard, la table source aurait des relations avec d'autres tables dans son DataSet ?
    non aucune relation

  5. #25
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    c'était pour le cas où la table source aurait eu des relations... pour qu'elles soient également respectée avec dt...

    mais là je dois avouer que je commence à sécher... je suis désolé...

  6. #26
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Au vu de ton code je me demandes bien pourquoi tu veux à tout prix passer par un DataView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    filtre As String = " not WebDomainName = etc..." 
    MonDataGrid.DataSource= m_dsWebs.Tables(4).Select(filtre)

  7. #27
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Salut,
    je ne peux pas changer directement le datasource de ma grille, elle se trouve dans un autre form.
    Ce que je cherche a faire c'est passer un sous-ensemble de mon datatable au constructeur du form qui contient la grille. Pas compliqué normalement sauf que là ça pose probleme... (voir les messages précédents).

  8. #28
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par graphicsxp
    Salut,
    je ne peux pas changer directement le datasource de ma grille, elle se trouve dans un autre form.
    Ce que je cherche a faire c'est passer un sous-ensemble de mon datatable au constructeur du form qui contient la grille. Pas compliqué normalement sauf que là ça pose probleme... (voir les messages précédents).
    Ayant plutôt l'habitude de fonctionner avec une couche d'accès aux données séparée de la couche graphique avec exposition du resultat sous la forme d'un DataSet accessible à toutes les forms. Je ne vois pas comment cela serait simple pour toi :

  9. #29
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Tu as un seul dataset accessible depuis toutes tes forms ? Non, pas possible de faire ça, trop de changement. Par contre je sépare bien l'acces aux données de l'affichage graphique, mais par form.

  10. #30
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Sinon la form qui connait Ta source est-elle aussi celle qui appelle la nouvelle Form car dans ce cas elle pourrait très bien lui fournir (dans un constructeur surchargé par exemple la reference de cette source)

  11. #31
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    graphicsxp :
    et depuis où est-ce tu appelle ta Form contenant le DataGrid ?

    depuis "l'appelant" tu n'as pas accès à ta table ? alors comment veux-tu lui passer des données via le constructeur ?

  12. #32
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Citation Envoyé par neguib
    Sinon la form qui connait Ta source est-elle aussi celle qui appelle la nouvelle Form car dans ce cas elle pourrait très bien lui fournir (dans un constructeur surchargé par exemple la reference de cette source)
    Oui et c'est exactement ce que je fais. Je lui passe la source dans le constructeur. Tout ce que je veux, c'est lui passer la source moins les données filtrées par le filtre.

  13. #33
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par graphicsxp
    Citation Envoyé par neguib
    Sinon la form qui connait Ta source est-elle aussi celle qui appelle la nouvelle Form car dans ce cas elle pourrait très bien lui fournir (dans un constructeur surchargé par exemple la reference de cette source)
    Oui et c'est exactement ce que je fais. Je lui passe la source dans le constructeur. Tout ce que je veux, c'est lui passer la source moins les données filtrées par le filtre.
    Comme je te l'ai dit inutile de passer par un dataview
    fait ton select sur la datatable concernée avant l'appel et transmet uniquement la nouvelle collection de Rows

  14. #34
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Oui, mais quelle est la bonne syntaxe ? Car, Select retourne un Datarow() et on ne peut pas assigner un Datarow() a un Datatable.

  15. #35
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par graphicsxp
    Oui, mais quelle est la bonne syntaxe ? Car, Select retourne un Datarow() et on ne peut pas assigner un Datarow() a un Datatable.
    Peux-tu tester stp de mettre directement un Array en datasource

  16. #36
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Pourquoi un array? Il faudrait un array a plusieurs dimensions car j'ai plu d'une colonne dans ma grid.
    En tout cas ça ne peut pas marcher car je n'utilise pas la Grid Microsoft, et en source je ne peux avoir qu'un datatable, dataview ou dataset.

  17. #37
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Citation Envoyé par graphicsxp
    ...Oui et c'est exactement ce que je fais. Je lui passe la source dans le constructeur. Tout ce que je veux, c'est lui passer la source moins les données filtrées par le filtre.
    là je ne comprends plus !!!!
    tu veux passer QUOI à ton contructeur (donc à ton DataGrid) ?

    les Rows résultant du filtre OU les rows originales MOINS les Rows résultant du filtre ?

    parceque là tu nous demande l'inverse qu'au début du Post...

  18. #38
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Non je demande la meme chose :

    Bonjour,
    J'ai filtré un datatable avec dataview. Maintenant je veux passer les enregistrements du dataview a un datagrid.
    Je veux passer à mon constructeur, un datatable contenant les données du datatable original moins les données rejetées par le filtre.

  19. #39
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    OK, excuse-moi, je voulais être sûr... je me marchais un peu dessus là...

    alors si on repart dans nos bonnes vieille méthodes du début du Post, mais en ne copiant pas les Rows depuis la vue, amis depuis la table source (toujours DT = Table cible) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            DT = m_dsWebs.Tables(4).Clone
     
            For Each dr As DataRow In m_dsWebs.Tables(4).Select(filtre)
                dr = DT.NewRow
                DT.Rows.Add(dr)
            Next
    Puis tu passes DT à ton constructeur... ça nous donne quoi ?

  20. #40
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Ca me donne l'exception bien connue maintenant : This row already belong to another table (note que la row en question c'est la seule row qui me reste apres avoir appliqué le filtre).
    Et dans ma datagrid j'ai 1 ligne avec dedans System.Data.DataRow.

    Donc toujours au meme point

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [VB.NET] Requete sur un DataTable
    Par Vlat dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 13h53
  2. [VB.NET] Tri dans un datatable
    Par boulete dans le forum Windows Forms
    Réponses: 21
    Dernier message: 15/02/2006, 18h53
  3. [VB.Net] Convertir un nombre au format double en date
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/11/2005, 15h34
  4. [VB.NET][ADO]Fusionner des dataTables
    Par neo.51 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/07/2005, 00h22
  5. Réponses: 2
    Dernier message: 19/01/2005, 13h14

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