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 :

Extraire x lignes d'un datatable vers un autre


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Par défaut Extraire x lignes d'un datatable vers un autre
    Slt,

    je viens vous exposer mon problème en espérant avoir un petit éclaircissement.
    j'ai actuellement un DataSet avec une datatable contenant l'ensemble du contenu de la table correspondante dans la DB
    j'essaye d'extraire X lignes de ce datatable et de les copier dans un autre Datatable afin de l'utilisé dans un combobox
    j'ai en fait 2 combobox , l'un reduit le contenu de l'autre
    il est important que je garde le contenu du 1er datatable complet pour la prochaine sélection.

    j'ai essayé ces 2 solutions et j'obtiens 2 messages d'erreur différents...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dtt_extract = DTS_Dico.Tables("MaTable").Clone
     
     For Each r As DataRow In DTS_Dico.Tables("MaTable").Rows
     
      If r.Item("Moncritere") = MaCb.SelectedValue Then 
     
        Dim ro As DataRow = Dtt_extract.NewRow
        ro = r 
        Dtt_extract.Rows.Add(ro) 
     
      End If
     
     Next
    j'obtiens le message : " Cette lignes appartient déjà à une autre table"
    Bizarre je viens de la créer...
    Peut être y a t il une référence dans la ligne copiée qui fais croire à la nouvelle qu'elle est déjà associée ailleurs ?


    j'ai également essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dtt_extract.ImportRow(ro)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dtt_extract.Rows.Add(ro)
    Et la je récupère toujours la premier ligne trouvée, jamais les suivantes...


    Seconde solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dtt_extract = DTS_Dico.Tables("MaTable").Clone
     
     For Each r As DataRow In DTS_Dico.Tables("MaTable").Rows
     
      If DTS_Dico.Tables("MaTable").Select("MonCritere=" & MaCb.SelectedValue)(i).Item("MonCritere") = MaCb.SelectedValue Then
     
           Dtt_extract.Rows.Add(DTS_Dico.Tables("MaTable").Select("MonCritere=" & MaCb.SelectedValue)(i).ItemArray)
      End If
     
      i += 1
     
     Next
    Ici tout fonctionne bien je récupère bien mes X lignes correspondantes à mon critère, le problème est le i+=1 qui arrive en dehors de la limite lorsque mon critère n'est plus trouvé...

    Quelqu'un aurai une autre idée ou pourrait me dire comment amélioré l'une de ces 2 boucles ?

    Merci.

  2. #2
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    utilise un DataReader

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Pour info, la fonction Select des DataTable est interéssante à connaitre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRow[] result = MyTable.Select("Size >= 230 AND Sex = 'm'");

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Par défaut
    Merci pour vos 2 réponses

    j'ai réussi en utilisant le .select sur le datatable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim tabrow() As DataRow = DTS_Dico.Tables("MaTable").Select("MonCritere=" & MaCb.SelectedValue)
        For Each r As DataRow In tabrow
               ' MessageBox.Show(r.Item("MonID"))
               Dtt_extract.ImportRow(r)
        Next
    Par contre, lors du debug , je met un messagebox afin de voir le contenu de mon ID et j'obtiens toujours celui de la 1er ligne alors que sur l'interface j'ai bien mes X lignes correspondantes....

    Etrange

    Pour ce qui est du DataReader, je doute pas de la possibilité de l'utilisé,mais perso je l'ai toujours utilisé 1 seul fois pour cree mon datatable en lisant la table dans ma Db, jamais pour lire une Datatable. J'ai préféré partir sur une piste me parlant un plus .
    Par contre si tu aurais un petit exemple d'utilisation je suis pas contre( ou je chercherai sur le net a l'occasion )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/06/2008, 13h35
  2. [C#] transferer une ligne d'une datagrid vers une autre datagrid
    Par nassimmm dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/08/2006, 09h38
  3. copier une ligne d'une table vers une autre
    Par Adren dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2006, 11h54
  4. Copier certaines lignes d'une table vers une autre
    Par TNorth dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/07/2006, 14h31
  5. [VBA-E]Importer une ligne d'un classeur vers un autre
    Par khiat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2006, 14h15

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