Soyez le premier à donner votre avis sur cette source.
Snippet vu 10 108 fois - Téléchargée 33 fois
Imports dao Public Class CboxData Inherits System.Windows.Forms.ComboBox #Region " Code généré par le Concepteur Windows Form " Public Sub New() MyBase.New() 'Cet appel est requis par le Concepteur Windows Form. InitializeComponent() 'Ajoutez une initialisation quelconque après l'appel InitializeComponent() End Sub 'La méthode substituée Dispose du UserControl pour nettoyer la liste des composants. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Requis par le Concepteur Windows Form Private components As System.ComponentModel.IContainer 'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form 'Elle peut être modifiée en utilisant le Concepteur Windows Form. 'Ne la modifiez pas en utilisant l'éditeur de code. Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.ComboBox1 = New System.Windows.Forms.ComboBox ' 'ComboBox1 ' Me.ComboBox1.Location = New System.Drawing.Point(17, 17) Me.ComboBox1.Name = "ComboBox1" Me.ComboBox1.TabIndex = 0 Me.ComboBox1.Text = "" End Sub #End Region #Region "Variables Privées" Private m_table As Recordset Private m_Champ As Integer = 0 Private m_ChampMax As Integer = 0 Private m_IndexBase As Integer = -1 Private m_cb As ComboBox #End Region #Region "Propriètès Publiques" Public ReadOnly Property DataTable() As Recordset 'Table utilisée Get Return m_table End Get End Property Public Property DataChampALister() As Integer 'Champs qui sera listé Get Return m_Champ End Get Set(ByVal Value As Integer) If Value < 0 Then Value = 0 If Value > m_ChampMax Then Value = m_ChampMax m_Champ = Value End Set End Property Public ReadOnly Property DataIndex() As Integer 'Index dans la base du champ en cours Get Return m_IndexBase End Get End Property #End Region #Region "Methodes" 'Permet de charger la table (recordset) dans le combo (et le combo des index) Public Sub DataLoad(ByVal DataTable As Recordset, ByVal DataChampALister As Integer) If m_cb Is Nothing Then m_cb = New ComboBox 'Création d'un combo caché pour les index m_table = DataTable m_ChampMax = m_table.Fields.Count - 1 If DataChampALister < 0 Then m_Champ = 0 If DataChampALister > m_ChampMax Then m_Champ = m_ChampMax m_Champ = DataChampALister Me.Items.Clear() m_cb.Items.Clear() If m_table Is Nothing Then Exit Sub 'Si pas de table on sort If m_table.RecordCount = 0 Then Exit Sub 'Si pas de données on sort Try With m_table .MoveFirst() Do While Not .EOF Me.Items.Add(.Fields(m_Champ).Value) 'Met valeur m_cb.Items.Add(.Fields(0).Value) 'Met index base (on suppose que c'est le champ 0 .MoveNext() Loop End With Catch ex As Exception End Try End Sub 'Affiche valeur pour l'index de la base donné Public Sub DataShow(ByVal DataIndex As Integer) If DataIndex = -1 Then Me.Text = "" If m_table Is Nothing Then Exit Sub If m_cb Is Nothing Then Exit Sub m_cb.Text = DataIndex.ToString Me.SelectedIndex = m_cb.SelectedIndex End Sub #End Region #Region "Suivi Selection" 'Surveille les changement du combodata pour mettre a jour l'index de la base Private Sub CboxData_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SelectedIndexChanged Actualiser() End Sub Private Sub CboxData_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SelectedValueChanged Actualiser() End Sub Private Sub CboxData_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.TextChanged Actualiser() End Sub Private Sub Actualiser() On Error Resume Next If m_cb Is Nothing Then Exit Sub m_cb.SelectedIndex = Me.SelectedIndex m_IndexBase = Val(m_cb.Text) End Sub #End Region End Class
Il est posible avec DAO de se passer de ce controle,
à savoir un recordset à la propriètè absoluteposition, donc si on veut remplir un combobox avec une table, on obteint :
combobox.SelectedIndex = Recodset.absoluteposition.
Je ne me sers plus que de ça, sauf si des tris sont affectés dans le recordset après sa création et non dans sa création.
Public WithEvents da As OleDb.OleDbDataAdapter
Public ds As New DataSet
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Base de données\la base de donné.mdb;"
da = New OleDb.OleDbDataAdapter("SELECT * FROM Discipline", cn)
da.Fill(ds, "Discipline")
'cmb_discipline étant la combo
Cmb_Discipline.DataSource = ds
Cmb_Discipline.DisplayMember = "Discipline.Nom"
voila pour un remplissage facile de la combo!
Pour le reste je cherche!
Bref.......
Bref, quitte à utiliser VB.Net, autant faire du .Net et non du VB6... ;-)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.