Aucune données visible depuis VS2005 dans ma bdd alors que données présentes

[Résolu]
Signaler
Messages postés
19
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
21 juin 2009
-
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
-
Bonjour à tous,
Je fais appel à vous, car j'ai un petit problème avec mon projet encours.
J'ai tenté de renseigner quelques infos à la main dans ma base de données Access, des infos qui alimenterons des listes déroulantes.
Sauf que, quand je tente d'afficher ces infos dans une des listes déroulantes, et bien il me renvoie un message d'erreur, celui de mon "Try...catch"
Je vous met mon code, au cas où quelqu'un comprendrais pourquoi.
Selon moi, et d'après ce que j'ai compris, Visual Studio est incapable de trouver une quelconque données dans ma bdd Access...
C'est très énervant...

Private Sub CmbCtr_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbCtr.SelectedIndexChanged
        Try
            command = New OleDbCommand("select * from T_Contrats", Cnxtemps)

            ' Ouvrir la connexion
            Cnxtemps.Open()
            dr = command.ExecuteReader()

            ' vider le ComboBox
            CmbCtr.Items.Clear()

            If dr.HasRows Then
                'Tant que le DataReader a une ligne d'enregistrement
                While dr.Read
                    ' Ajouter la donnée au ComboBox
                    CmbCtr.Items.Add(dr.GetValue(0))
                End While
            Else
                MessageBox.Show("Pas de résultats pour la donnée", "Infos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            If Not (dr Is Nothing) Then dr.Close()
            If Not (con Is Nothing) Then con.Close()
        End Try

    End Sub

Merci par avance de votre aide.

8 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Regarde les Propriétés DisplayMember et ValueMember, ce que tu as fais, c'est créer un contrôle lié au données, en gros, le code que tu as saisis plus haut se fait automatiquement, (Ajout à la propriété DataSource), c'est aussi valable pour plusieurs contrôles.

ValueMember sur le champ qui te sert d'ID ou sur ta clé primaire, puis sert toi de la propriété SelectedValue pour retrouver celui-ci.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Dans la propriété DisplayMember tu dois renseigner le nom de la colonne qui affichera les valeurs dans le combo, et dans ValueMember, le nom de la colonne dont les valeurs serront retournés par la sélection dans le combo (SelectedValue).

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Bonjour,

Montre nous ta chaine de connexion et précise tes messages d'erreurs. Merci.

Mayzz.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
19
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
21 juin 2009

Bonjour et merci,
Le message d'erreur est celui du "Else" : "Pas de résultats pour la donnée"

Sinon ma chaine de connexion est la suivante :
 Public Cnxtemps As OleDb.OleDbConnection
    Public StrChaine As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\base_appli.mdb;Persist Security Info=False"

Sinon, j'ai fait un truc tout con, j'ai fait glisser ma table dans ma combobox et ça fonctionne, par contre je voulais pas récupérer le libellé mais le numéro de ma table, ça j'ai pas trop vue où fallait aller pour le modifier.

Merci
Messages postés
19
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
21 juin 2009

Euh...
J'ai pas tout compris, mais je te promet que je vais essayer.
J'avais aussi essayer ce code, mais ça n'affichais rien !
        sql = "select * from T_Contrats"
        DtA = New OleDbDataAdapter(sql, Cnxtemps)
        Cnxtemps.Open()

        DtA.Fill(DtS, "Liste contrat")
        DtT = DtS.Tables("Liste contrat")
        CmbCtr.DataSource = DtT
        CmbCtr.DisplayMember = "NumCtr"

        Cnxtemps.Close()

Bon merci, pour votre aide. C'est vraiment mal foutu ces cours à deux balles.
C'est un projet que je dois rendre pour la semaine prochaine, et le type ils nous a juste expliqué rapidement comment afficher une donnée à l'aide de l'objet BindingSource.
Franchement, il a même pas parlé de modification, suppression, affichage dans autre chose que dans un textBox...
en bref, je suis dans la merde, j'ose à peine imaginer le reste de mes collègues.

Je fait pas mal de programmation, mais ça n'a vraiment rien avoir avec du VB.
(PHP et JAVA) aussi bien niveau grammaire que sur la forme. ça me déçois.
Messages postés
19
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
21 juin 2009

Bon, en faite, ayé, j'ai réussi à afficher les données, c'est parce que je n'instanciais pas mon "DtS" donc j'ai rajouté une ligne qui le fait.

a présent, quelqu'un peut-il me dire comment je fait pour afficher dans ma Combobox le libellé (nom du champ) mais enregistré dans ma bdd le numéro correspondant à ce même libellé ?

ça serait vraiment gentil, car là du coup, vue que je n'y arrive pas, j'affiche le libellé, mais j'ai changé le type dans ma table, j'attends plus un entier comme je le souhaitais, mais un string. et c'est dommage, car pour le trie c'était mieux d'avoir des numéros, comme ça je pouvait faire des conditions sur "inférieur à" et "supèrieur à".

Merci beaucoup par avance.
Messages postés
19
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
21 juin 2009

Merci bien, bon j'ai testé, j'ai essayé dans tous les sens, et ça marche nickel merci beaucoup !

Bon maintenant, il faut que je fasse tous les formulaires.
Passez un excellent fin de weekend et merci encore.

Bye
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Merci ;) également et bonne chance pout ton projet.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <