Recupération Select SQL

Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011 - 13 juin 2011 à 09:58
Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011 - 14 juin 2011 à 18:20
Bonjour,

Je suis en train de coder un VB.net en relation avec un base de donnée MySQL en localhost

Voici mon code :

Je souhaiterai afficher dans un listBox, le résultat d'une requête "select * from table" mais je n'y arrive pas
La connexion, l'ajout et la suppression dans la base fonctionne parfaitement.

Voila un screen de mon code : http://www.hostingpics.net/viewer.php?id=715659vb.png


Mais quand je clique sur le BT_recherche_Click, il me signale une erreur sur la ligne "TA1.Fill(DT)" avec comme info :
Fill : la propriété SelectCommand.Connection n'a pas été initialisée. Je ne sais pas ou la mettre et que en faire.
faut-il utiliser une autre méthode ?

Merci de votre aide

Amicalement

Anthony

12 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 11:19
Salut,

Pourquoi tu utilises MySqlClient pour ton objet Connection et en suite tu utilise OleDb pour le reste ?

Aussi, tu n'avais pas précisé d'objet Connection à ton DataAdapter.

Imports MySql.Data.MySqlClient

Public Class Form1

    Private Sub Btn_Fill_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Fill.Click
        Dim ConString As String = "Server=127.0.0.1;Database=Test;Uid=Mayzz;Pwd=123456;"
        Dim Connexion As New MySqlConnection(ConString)
        Try
            Dim SelectCmd As String = "SELECT * FROM Table"
            Dim DA As New MySqlDataAdapter(SelectCmd, Connexion)
            Dim DT As New DataTable
            DA.Fill(DT)
            With ListBox1
                .ValueMember = ""
                .DisplayMember = ""
                .DataSource = DT
                .Refresh()
            End With
        Catch ex As Exception
            MessageBox.Show("Erreur de données : " & ex.Message, _
                            "Echec de connexion au données", _
                            MessageBoxButtons.OK, _
                            MessageBoxIcon.Exclamation)
        Finally
            If Connexion.State <> ConnectionState.Open Then
                Connexion.Close()
            End If
        End Try
    End Sub

End Class


wala. A+

PS: La prochaine fois si tu poste dans le forum fais un copié/collé de ton code et utilise la coloration syntaxique c'est plus sympa qu'une capture ;)

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 11:19
Ah oui et aussi poste dans la bonne catégorie, car VB6 c'est pas du .Net


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 11:22
Arf! Dans l'exemple j'ai pas remplis les champs ValueMember et DisplayMember mais je pense que tu t'en es rendu compte...


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011
13 juin 2011 à 12:32
Merci,

Oui j'ai remarqué que les champs ValueMember et DisplayMember n'était pas remplis mais je ne sais pas quoi mettre.

Mais je ne comprends pas le fonctionnement de la listbox :
Lorsque j'exécute le code, il s'affiche cela dans la 1ere ligne de la listbox :
system.data.datarowview

Merci de ton aide

Cordialement

Anthony
0

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

Posez votre question
Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011
13 juin 2011 à 12:47
Sur internet j'ai vu que c'était mieux de le faire sur une datagrid
Est ce vrai ?
Si oui comment procéder ainsi ?

Merci d'avance pour l'aide que tu m'apporteras
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 13:10
Alors essaye :

With ListBox1
    .ValueMember = ""
    .DisplayMember = ""
    .DataSource = DT.DefaultView
    .Refresh()
End With


En suite DisplayMember doit contenir le nom du champ à afficher et ValueMember la valeur retournée par la sélection dans la liste. Mais les deux peuvent être identiques.

Donc par exemple si tu possède une table avec les noms et les numéros de clients cela te permet de récupérer les numéro de client lors ce que l'utilisateur clique sur un nom dans la liste (affiche les noms mais retourne la valeur du champ voulu à la sélection).

.ValueMember = "CodeClient"
.DisplayMember = "NomClient"

Pour récupéré l'entrée sélectionnée il suffit de lire la propriété SelecetedValue. Attention ValueMember et DisplayMember doivent correspondre à des colonnes existantes dans la table.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 13:11
En effet c'est aussi valable dans un DataGridView, tout dépend de l'utilisation que tu en fais dans ton programme.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011
13 juin 2011 à 14:46
C'est pour un affichage quel est le mieux adapté ?
Merci
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 15:05
Bien disons pour un affichage simple, sans colonne par exemple une liste de noms une listbox suffit amplement. Si par compte tu dois afficher plusieurs colonnes (nom, prénom, adresse...) avec entêtes là il n'y a pas vraiment le choix c'est DataGridView




Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011
13 juin 2011 à 22:25
Merci beaucoup de l’intérêt que tu portes à mon problème,
J'aurais une dernière une question :

Comment utiliser un DataGridView avec le bout de code plus haut ?

Merci
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 juin 2011 à 22:56
Le DataGridView est plus complexe qu'une simple liste. Tu peux définir sa propriété DataSource comme le Listbox mais pour en comprendre le fonctionnement tu peux regarder dans mes tutos j'ai fais un tuto SQL c'est pour SQL Server mais ça parle du DGV.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Arkin69 Messages postés 7 Date d'inscription jeudi 4 novembre 2010 Statut Membre Dernière intervention 27 juin 2011
14 juin 2011 à 18:20
effectivement ça se complique avec le DTG

Merci pour tout :)
0
Rejoignez-nous