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 :

probleme recherche datagridview


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut probleme recherche datagridview
    bonjour
    j'essaye d'expliquer:
    j'ai dans ma Base un table contenant 2 lignes
    la 1ere est rempli, la 2eme contient des cellules vides
    j'ai un combobox contenent les noms de colonnes de la table, un textbox pour taper le mot à rechercher
    si je ne tape rien dans le textbox la ligne 2 ne s'affiche pas
    voici le code:
    view_adresse est le nom de ma datagridview:
    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
    72
    73
     
        Private Sub Chercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Chercher.Click
            Select_Fichier()
            Dim user As String = ""
            If IsDBNull(TextBox1.Text) Then
                user = TextBox1.Text.ToString()
            End If
            Dim SQLStringSEARSH As String
            Dim objConnection As New OleDbConnection(ParamConnexion)
            Dim objDataAdapter As OleDbDataAdapter
            Dim objDataSet As New DataSet
            Dim objDataTable As DataTable
            Dim objDataRow As DataRow
            Dim LSTItems As ListViewItem
            Dim SUBItems As ListViewItem.ListViewSubItem
            Dim code As New Integer
            Dim colonne As String = ""
            Dim contenuCombo As String = "Prénom"
            If IsDBNull(cboRechercherDans.SelectedItem) Then
                contenuCombo = cboRechercherDans.SelectedItem.ToString()
            End If
            Select Case contenuCombo
                Case "Code"
                    colonne = "codeclient"
                Case "Date d'ajout"
                    colonne = "dateclient"
                Case "Nom"
                    colonne = "nom"
                Case "Prénom"
                    colonne = "prenom"
                Case "Adresse"
                    colonne = "adresse"
                Case "GSM"
                    colonne = "gsm"
                Case "Tél"
                    colonne = "tel"
                Case "Raison sociale"
                    colonne = "raison"
            End Select
            Console.WriteLine(colonne)
            'Commande pour lire dans la base de donnée la Table et met le en ordre ascendant par nom:
            SQLStringSEARSH = "SELECT * FROM TblClient WHERE " & colonne & " LIKE '%" & user & "%' ORDER BY codeclient"
            objConnection.Open()
            objDataAdapter = New OleDb.OleDbDataAdapter(SQLStringSEARSH, objConnection)
            objDataAdapter.Fill(objDataSet)
            '3.2) Affichage dans la listview:
            View_Adresse.Items.Clear()
            View_Adresse.BeginUpdate()
            'Répete chaque Table dans le DataSet collection.
            For Each objDataTable In objDataSet.Tables
                'Répete chaque ligne de la table
                For Each objDataRow In objDataTable.Rows
                    LSTItems = View_Adresse.Items.Add(objDataRow("codeclient").ToString)
                    If IsDBNull(objDataRow("dateclient")) Then
                        SUBItems = LSTItems.SubItems.Add("")
                    Else
                        SUBItems = LSTItems.SubItems.Add(CDate(objDataRow("dateclient")).ToString("dd/MM/yyyy"))
                    End If
                    SUBItems = LSTItems.SubItems.Add(objDataRow("nom").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("prenom").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("adresse").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("gsm").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("tel").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("raison").ToString)
     
                Next
            Next
            ' Affiche le contenu au complet de View_Adresse:
            View_Adresse.EndUpdate()
            lblConnect.Text = "Connection réussi : " & View_Adresse.Items.Count & " Utilisateurs"
            'fermeture de la base:
            objConnection.Close()
        End Sub

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    donc,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           If IsDBNull(TextBox1.Text) Then
                user = TextBox1.Text.ToString()
            End If
    C'est faut, on ne peut mettre de valeur dbnull dans un textbox, de plus si on pourrait, tu aurais un problème car le code tel qu'écrit pourrait être remplacer par :
    ce qui n'est pas très logique... ... donc à remplacer directement par :
    Pareil pour la logique du :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      If IsDBNull(cboRechercherDans.SelectedItem) Then
                contenuCombo = cboRechercherDans.SelectedItem.ToString()
            End If
    Ensuite, pourquoi faire une boucle sur toutes les tables du dataSet alors que tu es sur qu'il n'y a qu'une seul table?
    D'ailleurs, tu pourrais directement utiliser un dataTable vu que tu n'a qu'une table et donc aucune relation.

    le code complet modifié :
    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
     
        Private Sub Chercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Chercher.Click
            Select_Fichier()
            Dim user As String =  TextBox1.Text.ToString()
            Dim SQLStringSEARSH As String
            Dim objConnection As New OleDbConnection(ParamConnexion)
            Dim objDataAdapter As OleDbDataAdapter
            Dim objDataTable As New DataTable
            Dim objDataRow As DataRow
            Dim LSTItems As ListViewItem
            Dim SUBItems As ListViewItem.ListViewSubItem
            Dim code As New Integer
            Dim colonne As String = ""
            Dim contenuCombo As String = "Prénom"
            If not IcboRechercherDans.SelectedItem.toString = "" Then
                contenuCombo = cboRechercherDans.SelectedItem.ToString()
            End If
            Select Case contenuCombo
                Case "Code"
                    colonne = "codeclient"
                Case "Date d'ajout"
                    colonne = "dateclient"
                Case "Nom"
                    colonne = "nom"
                Case "Prénom"
                    colonne = "prenom"
                Case "Adresse"
                    colonne = "adresse"
                Case "GSM"
                    colonne = "gsm"
                Case "Tél"
                    colonne = "tel"
                Case "Raison sociale"
                    colonne = "raison"
            End Select
            Console.WriteLine(colonne)
            'Commande pour lire dans la base de donnée la Table et met le en ordre ascendant par nom:
            SQLStringSEARSH = "SELECT * FROM TblClient WHERE " & colonne & " LIKE '%" & user & "%' ORDER BY codeclient"
            objConnection.Open()
            objDataAdapter = New OleDb.OleDbDataAdapter(SQLStringSEARSH, objConnection)
            objDataAdapter.Fill(objDataTable)
            '3.2) Affichage dans la listview:
            View_Adresse.Items.Clear()
            View_Adresse.BeginUpdate()
                'Répete chaque ligne de la table
                For Each objDataRow In objDataTable.Rows
                    LSTItems = View_Adresse.Items.Add(objDataRow("codeclient").ToString)
                    If IsDBNull(objDataRow("dateclient")) Then
                        SUBItems = LSTItems.SubItems.Add("")
                    Else
                        SUBItems = LSTItems.SubItems.Add(CDate(objDataRow("dateclient")).ToString("dd/MM/yyyy"))
                    End If
                    SUBItems = LSTItems.SubItems.Add(objDataRow("nom").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("prenom").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("adresse").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("gsm").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("tel").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("raison").ToString)
     
                Next
     
            ' Affiche le contenu au complet de View_Adresse:
            View_Adresse.EndUpdate()
            lblConnect.Text = "Connection réussi : " & View_Adresse.Items.Count & " Utilisateurs"
            'fermeture de la base:
            objConnection.Close()
        End Sub
    P.S. : Pourquoi ne pas utiliser un dataGridView plutot qu'un list? (LSTItems) tu aurais bien plus facile d'afficher ton résultat (DGV.dataSource = MonDataTable)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    Merci Sankasssss pour votre aide
    la ligne contenent des cellules vide ne s'affiche pas. donc j'ai ajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            'Commande pour lire dans la base de donnée la Table et met le en ordre ascendant par nom:
            If user = "" Then
                SQLStringSEARSH = "SELECT * FROM TblClient ORDER BY codeclient"
            Else
                SQLStringSEARSH = "SELECT * FROM TblClient WHERE " & colonne & " LIKE '%" & user & "%' ORDER BY codeclient"
            End If
    ça marche bien pour le moment


    Mo principeau probleme est que j'ai travaillé avec dataset mais j'ai trouvé difficulté dans la recherche.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    pouvez vous m'expliquez :
    P.S. : Pourquoi ne pas utiliser un dataGridView plutot qu'un list? (LSTItems) tu aurais bien plus facile d'afficher ton résultat (DGV.dataSource = MonDataTable)

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Tu pourrais remplacer cette partie de 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
    '3.2) Affichage dans la listview:
            View_Adresse.Items.Clear()
            View_Adresse.BeginUpdate()
                'Répete chaque ligne de la table
                For Each objDataRow In objDataTable.Rows
                    LSTItems = View_Adresse.Items.Add(objDataRow("codeclient").ToString)
                    If IsDBNull(objDataRow("dateclient")) Then
                        SUBItems = LSTItems.SubItems.Add("")
                    Else
                        SUBItems = LSTItems.SubItems.Add(CDate(objDataRow("dateclient")).ToString("dd/MM/yyyy"))
                    End If
                    SUBItems = LSTItems.SubItems.Add(objDataRow("nom").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("prenom").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("adresse").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("gsm").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("tel").ToString)
                    SUBItems = LSTItems.SubItems.Add(objDataRow("raison").ToString)
     
                Next
     
            ' Affiche le contenu au complet de View_Adresse:
            View_Adresse.EndUpdate()
    Qui, si j'ai bien compris, te sert à afficher les résultat de ta requête dans une liste par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DGV.dataSource = objDataTable
    où DGV est ton datagridview.
    Le résultat est le même en plus simple...

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    Merci Sankasssss pour votre aide
    j'ai vraiment trouvé la solution du probleme principal (afficher le résultat de la recherche dans le même DGV
    j'explique
    j'avait un DGV (TblClientDataGridView) dans Form1 lié à la base access mais je ne pouvait pas afficher le résultat de la recherche dans ce même DGV
    alors j'ai procédé à afficher ce résultat dans un autres formulaire donc un autre tableau (View_Adresse)
    Alors dans le deuxieme formulaire j'ai mis le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            objDataAdapter = New OleDb.OleDbDataAdapter(SQLStringSEARSH, objConnection)
            objDataAdapter.Fill(objDataTable)
            Form1.TblClientDataGridView.DataSource = objDataTable
    merci

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    De rein, content que tu aie trouvé une solution, pense à mettre le sujet en résolu en cliquant en bas de la page sur

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

Discussions similaires

  1. Probleme de datagridview(Débutant)
    Par San_25 dans le forum Windows
    Réponses: 1
    Dernier message: 04/05/2007, 12h50
  2. probleme recherche dans base de donnée
    Par 0kiss0 dans le forum ASP
    Réponses: 3
    Dernier message: 16/04/2007, 18h50
  3. probleme recherche séquentiel
    Par mikees dans le forum C++
    Réponses: 6
    Dernier message: 17/01/2007, 02h48
  4. probleme : recherche dichotomique
    Par M.a.n.u. dans le forum C
    Réponses: 3
    Dernier message: 17/06/2006, 23h30
  5. Souvent j'ai le probleme (recherche de carractere...)
    Par GESCOM2000 dans le forum Access
    Réponses: 7
    Dernier message: 21/01/2006, 20h13

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