Combobox avec doublons?

Résolu
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014 - Modifié par autodidacte3 le 27/02/2014 à 16:00
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014 - 5 mars 2014 à 12:24
Bonjour, tout le monde
plus d'un mois que mon petit programme fonctionne correctement jusqu'à ce matin :

j'ai deux employés qui portent le même "Nom et Prénom"; ça n'arrive qu'à moi :(

Dans ma combobox je sélectionne un employé pour afficher sont salaire, compte bancaire...

mais avec deux employés avec le même nom et prénom c'est un peu louche pour le SELECT non? j'ai effectué plusieurs manipulations, voilà mon dernier essai du code de la combobox

NB: ma combobox n'affiche que les noms des employés et le résultat dans des textBox

Et les gentils employés enregistrer dans la *.mdb en double, y a qu'un seul qui s'affiche en boucle ?

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBListeOperation.SelectedIndexChanged

          db_Myreq = "SELECT * from Employes WHERE Employes.NomN='" & Me.CBListeOperation.SelectedItem & "' "

         db_Connecting_in_engagement()

        Do While db_rdrr.Read

            'Me.txtIDemploy.Text = db_.rdrr(0).ToString
            IDemploy.Text = db_rdrr(0)

            Me.Ref_A.Text = db_rdrr(1).ToString()
            Me.Ref_B.Text = db_rdrr(2).ToString()
            Me.Ref_C.Text = db_rdrr(3).ToString()
            Me.Ref_D.Text = db_rdrr(4).ToString
       Loop


Merci de votre aide.

2 réponses

cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
27 févr. 2014 à 19:12
Bonjour

Le problème est plutot au niveau conception.

La recherche d' info sur un client doit etre selon son id ou tout autre numéroqui est unique à chaque employé
1
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014
4 mars 2014 à 23:20
Bonsoir cs_ShayW
Vraiment chui bouché :) , je suis un peu perdu, tu m'as déjà donné une très bonne réponse au :
http://codes-sources.commentcamarche.net/forum/affich-10003211-vb-net-remplir-des-textbox-via-combobox

Bonne nuit et merci encore.
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
Modifié par cs_ShayW le 4/03/2014 à 23:38
la réponse donnée c'est autre chose
ici il sagit de tes tables si elle sont mal constituées alors bonjour la pagaille
si tu cherches selon le nom et prenom et que tu as plusieurs nom identiques (il n'y a pas un qui s'appelle Martin) et que tu te trompes
tu vas afficher le salaire de l'autre ...
0
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014
5 mars 2014 à 12:24
Bonjour cs_ShayW

J'ai fait des essais avec trois employés qui portent le même nom et prénom enregistrer dans la table1 sous trois champs, nom prénom et le champ ID1 propre à chaque employé bien-sûr,

Dans la deuxième table un champ ID2 égal à l'ID1,....,.... la dataGridView affiche l'ID exacte de chaque employé.

Private listid2 As New List(Of Integer)

Private Connection As New OleDb.OleDbConnection 'declares connection

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Connexion()
ShowListAmi()

End Sub

Private Sub Connexion()

Dim Dbpath As String = "C:\ComptabiliteSolution\Comptabilite\PaieEmployes.mdb"
Connection.ConnectionString = Dbpath
Try
Connection.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub


Private Sub ShowListAmi()
' ici je cherche ID1 "IDemploye"
Dim exec As OleDbCommand
Dim lire As OleDbDataReader
Dim req As String
req = "SELECT Employes.NomN, Employes.IDemploye, Grille.IDemployeSurGrille FROM (Employes INNER JOIN Grille ON Grille.IDemployeSurGrille = Employes.IDemploye)"
Try
exec = New OleDbCommand(req, Connection)
lire = exec.ExecuteReader
listid2.Clear()
Do While lire.Read()
'Ici j'affiche 2 colons/combob à voir si ça marche
'CBListeOperation.Items.Add(lire("NomN")) '& " " & lire.GetValue(1))
CBListeOperation.Items.Add(lire("NomN"))
ComboBox2.Items.Add(lire("IDemploye"))

listid2.Add(lire("IDemployeSurGrille"))
Loop
lire.Close()

Catch ex As Exception
MessageBox.Show(ex.ToString(), "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End Sub

'la sub qui montre les détails selon l'ID2 "IDemployeSurGrille"

Private Function ShowListAmi2ID2(ByVal ID As Integer) As OleDbDataReader
Dim sql As String = String.Empty
Dim command As New OleDbCommand(sql, Connection)
Dim recordset

recordset = Nothing

command.CommandText = " SELECT Grille.IDemployeSurGrille FROM Grille WHERE Grille.IDemployeSurGrille = [?]"
command.Parameters.Add("", OleDbType.Integer).Value = ID
Try
recordset = command.ExecuteReader
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return recordset
End Function

' aussi au lieu de servir de plusieurs textbox tu as le datagridview
' dans ton cas où tu choisis un item de combo1
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBListeOperation.SelectedIndexChanged

Dim recordset As OleDbDataReader
Dim id As Integer
id = CBListeOperation.SelectedIndex
recordset = ShowListAmi2ID2(listid2(id))
'tu n'as plus qu'à lire le recordset dans tes texxbox
'je me servirai dans datagridview pour afficher
'on peut afficher tout le recordset dans un datagridview
' places un datagrideview sur ta form

'* Sur une unique cellule du dtagridview ça m'affiche BIEN l'ID2 "IDemployeSurGrille" _
'* de l'un des employe EN DOUBLE choisi dans la ComboBox1 _
'** sur ce ID2 que je compte affiche les détaille de ce dernier :)
DataGridView1.Columns.Clear()
DataGridView1.Rows.Clear()
Dim bds As New BindingSource
bds.DataSource = recordset
DataGridView1.DataSource = bds

'ta solution marche aussi dans ce cas si j'ai le ID correspondant de chaque employe.

End Sub

?Maintenant j'y travail pour afficher l'ID dans un Textbox pour afficher les détailles correspondantes. et je laisse la Datagridview pour afficher la totalité des employés.

Merci cs_ShayW et bonne journée.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
28 févr. 2014 à 06:12
Bonjour,
Ce qui appelle le plus mon attention est ceci :
"Et les gentils employés enregistrer dans la *.mdb en double, y a qu'un seul qui s'affiche en boucle ?"
qui donne à penser que le nom/employé a été défini comme idart dans la table.

0