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] Tri dans un datatable


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut [VB.NET] Tri dans un datatable
    Salut,
    J'ai un soucis pour effectuer un tri dans un datatable. Je remplis un combo à partir d'un datatable. Je souhaite trier mon combo. Une fois la datasource déclarée, on ne peut plus effectuer de tri. Je dois donc effectuer le tri sur le datable.
    Maus j'ai un soucis sur la syntaxe. Pour effectuer le tri, je n'ai trouvé que la méthode select, qui me fait définir d'abord un critère de sélection, puis un tri.
    Concernant ce critère de sélection, il semblerait que si je note un critère qui me prend tout (genre id_article>=0), je n'ai dans mon datarow plus que ce champ là. Or j'ai besoin de deux champs. Comment déclarer la méthode sélect pour avoir autant de champs que voulus dans mon résultat ?
    Merci !


    Tag [VB.NET] rajouté par Morpheus
    Merci d'y penser à l'avenir

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Pourquoi ne pas trier tes informations depuis la source, c'est à dire le sgbdr au lieu de te casser la figure avec les datatables ?
    D'ailleurs c'est même plus rapide depuis le SGBDR.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    Parce que après avoir récupéré des infos dans mon datatable à partir de ma bd, j'en ajoute à la main. C'est d'ailleurs pour ça qu'ensuite mon datatable n'est plus trié ... et comme je ne sais pas non plus ajouter une ligne dans un datatable à une place particulière, mon datatable n'est plus trié ...

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Dommage que le datatable ne possede pas de méthode sorted...
    Vous devez peut être le faire via un dataview, par exemple n'est ce pas ?
    Sinon, vous pous mettre à jour les données dans la base de données puis recharger...

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    OUi mais disons qu'il existe une méthode de tri et de sélection sur le datatable, c'est la méthode select. Autant que je l'utilise, non ? !

    Ma question est bien de savoir comment l'utiliser, c'est à dire quelle est la syntaxe exacte de l'expression de recherche et de l'expression de tri, car je ne trouve pas d'exemple ...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Pour tu n'utilises pas un critère sélection vide qui est "".
    Tu n'as plus qu'a faire ton tri .......

  7. #7
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    Parce que lorsque je mets un critère de sélection vide sur mes deux champs (car je veux récupérer deux champs dans le datarow), je n'en ai qu'un seul qui est retourné, le premier que je précise ...

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 9
    Par défaut
    A mon avis, la solution consiste à créer un dataview à partir de ta table
    DataView maView = maTable.defaultView;

    definir la propriété RowFilter de la vue.
    maView.RowFilter = "MaColonne"

    affecter mon dataview au dataSource du Combo.
    monCombo.dataSource = maView;
    monCombo.displayMember = "colonne1";
    MonCombo.ValueMember = "Colonne2";

    c'est tout. le combo sera automatiquement trié à chaque ajoût de donnée.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Moi ce code fonctionne très bien chez moi et je peux récupérer tous les champs de mon DataTable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lignes = monDataTable.Select("","nom,prenom")
    Je fais un tri par nom puis par prénom.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    A mon avis, la solution consiste à créer un dataview à partir de ta table
    Je ne suis pas d'accord, pourquoi créer d'autres instances (prendre de la place en mémoire) alors que l'objet DataTable gère très bien le tri ???

  11. #11
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    Ah bah voilà je suis bien d'accord avec toi :D
    Ma question reste cependant entière : comment on effectue un tri sur un datatable, tout en récupérant l'intégralité de la table ?

  12. #12
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut Tri dans un datatable
    Désolée, je n'avais pas tout lu.
    A savoir que le code datatable.select ("","champ1, champ2") ne fonctionne pas chez moi (je suis en vb.net 2005)

    Dans mon datarow, j'ai deux colonnes, la première contient bien le champ1, mais la deuxième affiche "{system.data.datarow}" sur toutes les lignes ...

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Peux-tu nous mettre ton code car je me demande si tu utilises les bonnes propriétés ???????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim lignes As DataRow()
    Dim ligne As DataRow
     
    ' Effectue le tri.
    lignes = monDataTable.Select("","champ1,champ2")
    For Each ligne In lignes
       resultatLigne = ligne(monDataTable.Columns("champ1")).ToString()
       resultatLigne &= " -- "
       resultatLigne &= ligne(monDataTable.Columns("champ2")).ToString()
       MessageBox.Show(resultatLigne)
    Next
    Voila à quoi devrait ressembler la sturture de ton code.

  14. #14
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut Tri dans un datatable
    [VB.NET]
    Désolée, j'ai du partir.

    Bon alors voilà mon code, qui est loin du tien !

    Pour un datatable dt, et un combo cb, je fais ça :
    cb.DataSource = dt
    cb.DisplayMember = champ1
    cb.ValueMember = champ2

    Pour le tri, je fais ça (avec dr comme datarow):
    dr = dt.Select(String.Empty, "champ1 ASC")
    cb.DataSource = dr
    cb.DisplayMember = champ1
    cb.ValueMember = champ2

    et ça ça marche aps du tout ! :?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    Déjà, comme te la demandé Morpheus, pense à éditer ton message et à ajouter [VB.NET] dans le titre ..........

    dr devrait être un dataRow(), c'est à dire un tableau de DataRow.

  16. #16
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut Tri dans un datatable [VB.NET]
    Beh ouais mais c'est le cas, dr est bien un datarow ...

  17. #17
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut Re: Tri dans un datatable
    Citation Envoyé par boulete
    [VB.NET]
    Désolée, j'ai du partir.
    Il faut le faire sur le titre de ton 1er post...

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    comme te la demandé Morpheus, pense à éditer ton message et à ajouter [VB.NET] dans le titre
    TU NE L'AS TOUJOURS PAS FAIT ....

    devrait être un dataRow(), c'est à dire un tableau de DataRow
    J'ai pas dit DataRow mais un tableau de DataRow

  19. #19
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut Tri dans un datatable [VB.NET]
    Bah si !
    J'ai mis [VB.NET]dans le titre du message . C'est pas ça ?
    En plus Morpheus a dit de le mettre sur le premier post, en gros c'est un peu tard ...


    Et sinon pour le datarow, voilà ce que je déclare :
    dim dr() as datarow
    c'est pas un tableau de datarow ça ?

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Par défaut
    En plus Morpheus a dit de le mettre sur le premier post, en gros c'est un peu tard ...
    Tu peux rééditer ton premier message (avec le bouton qui se trouve en haut à droite) et alors modifier le titre de ce message ....



    En effet c'est un bien un tableau mais tu ne l'avais spécifié auparavant car tu avais dit ceci ...

    Pour le tri, je fais ça (avec dr comme datarow)
    Bon, peut-être que Datasource ne peut pas être utilisé avec un tableau de DataRow ..... dans ce cas, essayes de créer un dataTable à partir de ton tableau de DataRow !!!!? Je ne garantis pas le résultat mais faut essayer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/11/2012, 14h48
  2. Faire un tri dans une DataTable
    Par zooffy dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/03/2009, 00h46
  3. [VB.NET] Pbm de type de données dans un datatable
    Par boulete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/07/2006, 14h27
  4. [VB.NET] vérifier le format d'un champ dans un datatable
    Par HULK dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/10/2005, 16h13
  5. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19

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