Récupérer le résultat d'un select dans un datagridview

Fermé
JeanMarc - 12 juil. 2021 à 23:45
Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 - 14 oct. 2021 à 21:04
Bonjour.
Je travail sur un une projet de gestion de location de voiture.
J'ai créer un formulaire pour rechercher des information sur des clients existant déjà dans ma base de données (Access).
J'ai écris une requête sql sur l'évènement TextChanged d'un textBox qui me renvoi, dans un DataGridView les informations sur les clients dont les nom commence par la lettre que j'ai spécifié dans le textBox, mais la requête ne s'exécute pas.

Voici mon code :

Private Sub txtRecherche_TextChanged(sender As Object, e As EventArgs) Handles txtRecherche.TextChanged
dtgResult.Rows.Clear()
infocon.mareq = "Select MatCli, NomCli, PrenomCli from CLIENT where NomCli LIKE '" & Trim(txtRecherche.Text) & "*'"

Try
infocon.proc_connexion()
If infocon.rdr.Read Then
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
While infocon.rdr.Read
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
End While
End If
Catch ex As Exception

End Try
End Sub

5 réponses

Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 876
13 juil. 2021 à 07:23
Bonjour

Pour poster un code lisible merci d’utiliser les balises de code, voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

D’autre part ton titre parle d’un datagrid (contrôle WPF) et le corps du message de datagridview (contrôle Winform) ce ne sont pas les mêmes technologies ni les mêmes contrôles.

Peux tu confirmer lequel tu utilises ?
0
Bonjour.
Merci pour votre réponse.
En fait c'est un DataGridView que j'utilise dans mon code et le code est en vb.net.

Revoici le code :
Private Sub txtRecherche_TextChanged(sender As Object, e As EventArgs) Handles txtRecherche.TextChanged
dtgResult.Rows.Clear()
infocon.mareq = "Select MatCli, NomCli, PrenomCli from CLIENT where NomCli LIKE '" & Trim(txtRecherche.Text) & "*'"

Try
infocon.proc_connexion()
If infocon.rdr.Read Then
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
While infocon.rdr.Read
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
End While
End If
Catch ex As Exception

End Try
End Sub


Merci d'avance pour vos réponses.
0
Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 876
14 juil. 2021 à 08:31
Oui le code behind est en vb.net, mais la technologie de l’interface c’est winform.
En .net tu peux avoir plusieurs autres techno d’interface
  • wpf
  • asp
  • uiApp
  • etc….



Quel est le type de l’objet infocon?
Le datagridview est il vide à ce moment-là ? Si non, alors il faudrait commencer par le vider
0
Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 876
14 juil. 2021 à 11:22
PS j'ai modifié ton titre
0
L'objet infocon est de type InfoConnection, qui est une classe que j'ai créé. Cette classe me permet de gérer la connexion avec la base de donnée et l'exécution des requêtes.
Voici son code :
Public Class InfoConnexion

    Public cnn As SqlConnection
    Private macon As New OleDbConnection 'Déclare une variable macon de type oledb connexion et instanciée(New)
    Public rdr As OleDbDataReader
    Private strcon As String
    Private cmd As OleDbCommand
    Public mareq As String
    Friend meq As String

    'procédure permetant de faire la connexion et d'exécuter les commandes sql
    Public Sub proc_connexion()
        strcon = connect 'permet la connexion à la base de donnée
        macon = New OleDbConnection(strcon)
        macon.Open()
        cmd = New OleDbCommand(mareq, macon)
        rdr = cmd.ExecuteReader()
    End Sub

    Public Sub pro_deconnexion()
        rdr.Close()
        macon.Close()
    End Sub

    Public Function la_table() As DataTable
        strcon = connect 'permet la connexion à la bd
        macon = New OleDbConnection(strcon)
        macon.Open()
        cmd = New OleDbCommand(mareq, macon)
        ' Dim dt As New DataSet
        Dim ds As DataTable = New DataTable
        Dim dat As New OleDbDataAdapter(cmd)
        dat.Fill(ds)
        'ds = dt.Tables(0)
        macon.Close()
        Return (ds)
    End Function

End Class
0
Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 876
15 juil. 2021 à 11:43
Ok

Tu n’as pas répondu à la 2eme question, à savoir est ce que le datagridview est vide?

D’autre part, si la connexion est déjà établie, je pense que ça peut poser problème.

As tu exécuté en pas à pas pour voir ce qui se passe?
0
Oui, le DataGridView est vide. Je l'ai vider avec première ligne de code.

dtgResult.Rows.clear()


J'ai exécuter en pas à pas détaillé. Et il n'y a aucune erreur au cours de l'exécution. Seulement, arrivé au niveau de la condition if :

If infocon.rdr.Read Then dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2)) While infocon.rdr.Read dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2)) End While End If


Le code à l'intérieur de la structure ne s'exécute pas.
C'est-à-dire que la condition n'est pas vérifiée.
Je me suis dis que c'est peut-être un problème de ma requête, alors j'ai changé de requête et ça a marché correctement. C'est à ce niveau que je suis bloqué.
0
Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 876
17 juil. 2021 à 14:49
Je n'utilise jamais de datareader, donc à tout hasard, Read est une méthode mais tu n'as pas mis les pararenthèses.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jacob_4292 Messages postés 1 Date d'inscription jeudi 14 octobre 2021 Statut Membre Dernière intervention 14 octobre 2021
14 oct. 2021 à 17:48
Bonjour à tous! Par rapport à l'affichage d'un Select dans un datagridview, vous pouvez aussi visualiser ce lien:https://www.youtube.com/watch?v=H4DmXqMOY8I&feature=youtu.be
0
Whismeril Messages postés 18016 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 décembre 2022 876
14 oct. 2021 à 21:04
Bonjour Jacob.

Non je n’irai pas voir ta vidéo, ici https://forums.commentcamarche.net/forum/affich-36859630-cours-sur-le-c#10 pourquoi
0