J'ai un petit souci avec mes comboBox.
J'ai 4 combobox sur un controle utilisateurs.
> 2 pour une table ACTIVITE
> 2 pour une table PREOCCUPATION
J'arrive à charger les 4 combobox. Néanmoins lorsque je selectionne une activité dans le 1er combobox, cela selectionne automatiquement la meme activité dans le 2nd combobox.
Idem pour les préoccupations.
J'aimerais aussi gerer le fait que lorsqu'une activité est choisie ds le 1er combobox, elle ne soit plus disponible dans le 2nd combobox...
code :
Imports System.Data.OleDb
Public Class UC_AjoutInfoPatient
Inherits System.Windows.Forms.UserControl
'Déclarer la connexion
Private ObjetConnection As OleDbConnection
' Déclaration l'Objet Commande
Private ObjetCommand As OleDbCommand
' Déclaration Objet DataAdapter
Private ObjetDataAdapter As OleDbDataAdapter
' Déclaration Objet DataSet
Private ObjetDataSet As New DataSet
'String contenant la 'Requête SQL
Private strSql As String
' Déclaration Objet DataTable
Private ObjetDataTable As DataTable
'Paramêtres de connexion à la DB
Private strConn As String
Private choixAct1 As Object
Private choixAct2 As Object
Private choixPreo1 As Object
Private choixPreo2 As Object
#Region " Code généré par le Concepteur Windows Form "
[...]
Private Sub UC_AjoutInfoPatient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' charger les activites et les préoccupations disponibles dans la base
chargerComboBox(ComboBoxAct1, "ACTIVITE", "LIBELLE", "NUMACT" )
chargerComboBox(ComboBoxAct2, "ACTIVITE", "LIBELLE", "NUMACT" )
chargerComboBox(ComboBoxPre1, "PREOCCUPATION", "LIBELLE", "NUMPREO" )
chargerComboBox(ComboBoxPre2, "PREOCCUPATION", "LIBELLE", "NUMPREO" )
End Sub
Private Sub chargerComboBox(ByVal cboBox As ComboBox, ByVal table As String, ByVal champ As String, ByVal id As String)
'Initialisation de la chaîne de paramètres pour la connexion
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= d:\stage\InterfaceGraphique\db.mdb;"
'Initialisation de la chaîne contenant l'instruction SQL
strSql = "SELECT * FROM " & table
'Instanciation d'un Objet Connexion
ObjetConnection = New OleDbConnection
'Donner à la propriété ConnectionString les paramètres de connexion
ObjetConnection.ConnectionString = strConn
'Ouvrir la connexion
ObjetConnection.Open()
'Instancer un objet Commande
ObjetCommand = New OleDbCommand(strSql)
'Instancer un objet Adapter
ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
'initialiser l'objet Command
ObjetCommand.Connection() = ObjetConnection
'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
ObjetDataAdapter.Fill(ObjetDataSet, table)
'Mettre dans un Objet DataTable une table du DataSet
ObjetDataTable = ObjetDataSet.Tables(table)
'Indiquer quelle colonne afficher
cboBox.DisplayMember = champ
cboBox.ValueMember = id
'Indiquer au ListBox d'afficher la table (indiquer la source)
cboBox.DataSource = ObjetDataSet.Tables(table)
End Sub
Private Sub chargerInfoPatient()
' charger nom prenom , sexe, cate, numdossier dans les labels
End Sub
Private Sub ComboBoxAct1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxAct1.SelectedIndexChanged
Me.choixAct1 = ComboBoxAct1.ValueMember
End Sub
Private Sub ComboBoxAct2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxAct1.SelectedIndexChanged
Me.choixAct2 = ComboBoxAct2.ValueMember
If Me.choixAct2 = Me.choixAct1 Then
MsgBox("Activités identiques", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub ComboBoxPre1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxPre1.SelectedIndexChanged
chargerComboBox(ComboBoxPre2, "PREOCCUPATION", "LIBELLE", "NUMPREO" )
End Sub
Private Sub ComboBoxPre2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxPre1.SelectedIndexChanged
chargerComboBox(ComboBoxPre1, "PREOCCUPATION", "LIBELLE", "NUMPREO" )
End Sub
End Class