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 :

Afficher plusieurs données d'une table dans un listbox après recherche multicritères


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut Afficher plusieurs données d'une table dans un listbox après recherche multicritères
    Bonjour,

    Ca y est! Je suis en mode craquage!

    Bon voilà, j'ai fait ma recherche multicritère (qui fonctionne) et je veux afficher plusieurs données de la table dans la listbox en fonction de la recherche. Je l'ai déjà fait sur Access et là je lutte sur VB 2005.

    Voici mon code :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     
    'Déclarer la connexion
            Dim ObjetConnection As OleDbConnection
            ' Déclaration l'Objet Commande 
            Dim ObjetCommand As OleDbCommand
            ' Déclaration Objet DataAdapter
            Dim ObjetDataAdapter As OleDbDataAdapter
            ' Déclaration Objet DataSet
            Dim ObjetDataSet As New DataSet
            'String contenant la 'Requête SQL' 
            Dim strSql As String
            ' Déclaration Objet DataTable
            Dim ObjetDataTable As DataTable
            'Paramêtres de connexion à la DB
            Dim strConn As String
            ' Déclaration d'un  OleDbCommandBuilder
            Dim ObjetCB As OleDbCommandBuilder
     
     
            S1 = "SELECT * FROM Maintenance Where Maintenance!ID <> 0 "
            If Me.Check_nom.Checked = -1 Then
                S1 = S1 & "And Maintenance!Technicien = '" & Me.Cmb_nom.Text & "' "
            End If
            If Me.Check_mach.Checked = -1 Then
                S1 = S1 & "And Maintenance!Machine = '" & Me.Cmb_mach.Text & "' "
            End If
            If Me.Check_type.Checked = -1 Then
                S1 = S1 & "And Maintenance!Type_panne = '" & Me.Cmb_type.Text & "' "
            End If
            If Me.Check_date.Checked = -1 Then
                S1 = S1 & " and Maintenance!Datem between " & CStr(Me.Cmb_date1.Value) - 1 & " and " & CStr(Me.Cmb_date2.Value) - 1
                'SQL = SQL & " and Maintenance!Datem between " & CLng(Me.cmbdate1) & " and " & CLng(Me.cmbdate2)
            End If
            If Me.Check_term.Checked = -1 Then
                S1 = S1 & "And Maintenance!Op_term = '" & Me.Cmb_term.Text & "' "
            End If
     
            'S1Where = Trim(Right(S1, Len(S1) - InStr(S1, "Where ") - Len("Where ") + 1))
            S1 = S1 & ";"
     
    'Initialisation de la chaîne de paramètres pour la connexion
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Documents and Settings\fdurame\Mes documents\GMAO_version1.mdb;"
            'Initialisation de la chaîne contenant l'instruction SQL
            strSql = S1
            'Instanciation d'un Objet Connexion
            ObjetConnection = New OleDbConnection
            'Donner à la propriété ConnectionString les paramètres de connexion
            ObjetConnection.ConnectionString = strConn
            'Ouvrir la connexion
            ObjetConnection.Open()
            'Instancier un objet Commande
            ObjetCommand = New OleDbCommand(strSql)
            'Instancier un objet Adapter
            ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
            'initialiser l'objet Command
            ObjetCommand.Connection() = ObjetConnection
            'initialiser l'objet OleCBComandBuilder (sinon pas d'update)
            ObjetCB = New OleDbCommandBuilder(ObjetDataAdapter)
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
            ObjetDataAdapter.Fill(ObjetDataSet, "Maintenance")
            'Mettre dans un Objet DataTable une table du DataSet
            ObjetDataTable = ObjetDataSet.Tables("Maintenance")
            'Mettre dans le DataGrid une table  DataTable
            DataGrid1.DataSource = ObjetDataTable
     
            'Indiquer quelle colonne afficher
            Result.DisplayMember = "Machine"
     
            'Indiquer au ListBox d'afficher la table 
            Result.DataSource = ObjetDataSet.Tables("Maintenance")
    Donc là, ça m'affiche juste les données "Machine". Et j'aurai voulu avoir "Nom", ...

    Je cherche, je cherche... et je trouve pas. Quelqu'un pourrait-il m'aider?

    Merci beaucoup!

  2. #2
    Membre habitué Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Points : 128
    Points
    128
    Par défaut
    Bonjour !

    Sinon il y a un autre moyen afin d'afficher le résultat de ta recherche, tu peux aussi le placer dans un datagrid, flexgrid...

  3. #3
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Result.DisplayMember = "Machine"

    C'est normal que tu ai Machine non ?

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Bah ouais c'est normal.

    Et si je met :
    Result.DisplayMember = "Technicien"

    ... je vais avoir les noms des techniciens qui vont s'afficher.

    Mais comment je fais pour avoir le nom du technicien et le numéro de la machine par exemple?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par lou87
    Bonjour !

    Sinon il y a un autre moyen afin d'afficher le résultat de ta recherche, tu peux aussi le placer dans un datagrid, flexgrid...
    Qu'est ce q'un datagrid? Un flexgrid?

    Désolé mais je commence le VB cette semaine. Je programmais en C++ avant.

  6. #6
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Si les données doivent être modifié tu peux utiliser un DataGrid.

    Si ce n'est pas le cas je te conseil d'utiliser un ListView en mettant son viewMode à "Details".
    Dans ce mode tu peux modifier la property "Columns" pour définir le nombre, les titres, les largeurs des colonnes.

    Un ListView est un controle qui possède une collection de ListViewItem.
    Un ListViewItem possède une property text qui sera le texte de la premiere collone ensuite tu met les autres colonnes dans la colection subItems.

    En gros ça donne.

    Tu balais tout les record reçu de ta DB pour chaque items

    ListViewItem lvi = new ListViewItem([Texte de la premiere colonne])
    lvi.subitems.add("[Texte de la colonne 2"]);
    lvi.subitems.add("[Texte de la colonne n"]);
    ListView.items.add(lvi)

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Ok, je me lance! Je vais tenter.

    Bon but, par la suite, est de cliquer sur l'enregistrement voulu dans la listbox et d'ouvrir le formulaire correspondant.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Je ne peux pas utiliser ListViewItem ainsi.

    Tu parles bien de VB.net 2005 aussi?

  9. #9
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Oupssss sorry, j'étais en c#

    voici le meme code en vb.net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim lvi AsNew ListViewItem("Premiere colonne")
    lvi.SubItems.Add("Deuxieme colonne")
    lvi.SubItems.Add("Neme colonne")
    ListView1.Items.Add(lvi)
    


  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    ça marche pas ...

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Ca marque :
    ListViewItem: {Machine}

    dans la listbox

  12. #12
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Peux tu poster ton code ?

    Tu as bien mis la listView en mode 'Details' ?
    Tu as bien défini les colonnes ?

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Ah nan, désolé! Tu fais ça où?

    Je dois passer pour un ignare eheh !

  14. #14
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Meuhh non il y a pas d'ignare ici ...

    Alors dans les properties de ton ListView (sur la droite de ton écran quand tu sélectionne la listview) il y en a deux qui nous intéressent :
    • View : Tu dois la mettre en "Details" pour avoir plusieurs colonnes
    • Columns : tu clic sur les "..." pour ouvrir la fenetre qui te permet d'ajouter des colonnes. (tu fais "add" et tu modifie les properties ,header text, width, etc ...)

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    J'ai l'impression qu'on parle pas du même VB ...

    Pour les propriétés, faut que je fasse clik droit puis "propriété". Il y a ni "view", ni "columns".

    Il y a "multicolumns", mais ça j'avais déjà essayé sans succés.

  16. #16
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Voici deux screenshots.

    Tu utilise bien une LISTVIEW et non une LISTBOX ?
    Images attachées Images attachées   

  17. #17
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    ah nan, j'utilise une listbox

  18. #18
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par LefortLudovic
    Oupssss sorry, j'étais en c#

    voici le meme code en vb.net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim lvi AsNew ListViewItem("Premiere colonne")
    lvi.SubItems.Add("Deuxieme colonne")
    lvi.SubItems.Add("Neme colonne")
    ListView1.Items.Add(lvi)
    

    Mais du coup là, si on fait ton exemple, ça marque dans la listview :
    Première colonne Deuxième colonne ...

  19. #19
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    LOL

    Oui c'était un exemple. tu dois remplacer "Premiere colonne" par la valeur de ta première colonne, "Deuxième colonne" par la valeur de ta deuxième colonne, etc ...

    Tu es près du but là

  20. #20
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 92
    Points : 16
    Points
    16
    Par défaut
    Ouais ok, j'avais mis :

    Dim lvi AsNew ListViewItem("Machine")
    lvi.SubItems.Add("Technicien")
    lvi.SubItems.Add("Description")
    ListView1.Items.Add(lvi)

    qui sont les noms des champs de ma table.

    Puis ma recherche ne fonctionne plus avec la listview

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/05/2014, 10h11
  2. [OpenOffice][Base de données] Afficher les données d'une table dans un formulaire
    Par Milapyl dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 05/03/2014, 21h31
  3. Afficher les données d'une table SQL dans un JComboBox
    Par bozmin dans le forum Composants
    Réponses: 1
    Dernier message: 13/11/2011, 18h29
  4. Réponses: 5
    Dernier message: 07/09/2006, 12h33
  5. concatenation des données d'une table dans une autre
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/10/2004, 11h38

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