begin process at 2012 02 13 21:06:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > COMBODATA ACCES - LISTE UN CHAMP ET DONNE SON INDEX DANS LA BASE

COMBODATA ACCES - LISTE UN CHAMP ET DONNE SON INDEX DANS LA BASE


 Information sur la source

 Description

C'est un controle personnaliser pour le DAO et access.
Vous lui passé un recordset en paramètre, lui dite quel champ il doit afficher
On peut lui dire d'afficher tel index de la base, tel index du combo, il renvoi toujours la valeur de la base et son index correspondant.
Enfin, le code est court et simple je pense.


Source

  • 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
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

 Conclusion

Il s'agit d'un usercontrol basé sur un combobox et qui utilise la reference COM DAO
Donc à ajouter aux références de votre projet


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) TCPLISTENER - DEUX EXEMPLES D'UTILISATION : AVEC ET SANS BAC...
Source avec Zip Source .NET (Dotnet) RÉCUPÉRER FICHIER SUR FTP
Source avec Zip DLL DE CONNEXION FTP POUR NET EN VB6
Source avec Zip Source .NET (Dotnet) WINADMIN - GESTION ET ADMINISTRATION RÉSEAU
Source avec Zip WINADMIN - GESTION RÉSEAU LOCAL

 Sources de la même categorie

Source avec Zip Source avec une capture BIEN ADMINISTRER LES ETUDIANTS ET LEURS CÔTES par okosa
Source avec Zip VBA EXEL GESTION DE PERSONEL NOUVEAU CONTRAT DE TRAVAI par oudlarbi
Source avec Zip Source avec une capture CREATION D'UN OBJET D'ACCÈS AUX DONNÉES par okosa
Source avec Zip Source .NET (Dotnet) MISAHORAIRE par MdelM
Source avec Zip Source avec une capture BASEDEDONNEES,GESTIONDEMALADES,DATABASSE par shadkitenge

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture MDB TO BAS par skyla
Source avec Zip Source avec une capture OPEN ACCESS MDB par MALIKcpp
Source avec Zip Source avec une capture UN ACCESS MOIN COMPLET (IL MANQUE L'ÉDITEUR DE BASE DE DONNÉ... par MALIKcpp
Source avec Zip CRÉATION ASSISTÉE PAR CODE DAO D’UNE TABLE DANS MS ACCESS – ... par hector_quebec
Source avec Zip FONCTION DAO PERMETTANT DE VÉRIFIER SI UNE TABLE POSSÈDE UN ... par hector_quebec

Commentaires et avis

Commentaire de Totoroyamada le 11/08/2005 10:47:04

C'est cool, mais quel est l'intêret de passer par DAO alors qu'on a ADO.Net? Là t'es obligé d'ajouter la référence alors que sinon non. Et vaut mieux utiliser les dataset que les recordset, ils sont là pour ça.
Bref, quitte à utiliser VB.Net, autant faire du .Net et non du VB6... ;-)

Commentaire de COlive le 13/08/2005 17:01:18

Et bien que l'on me donne une manière simple rapide et efficace pour utiliser adp.net et conserver la meme souplesse au niveau du code que celle des objets recordset de dao. Car à ma connaissance, en ado (.net ou non) les propriètè et méthodes des dataset (recordset) n'ont pas les mêmes méthodes, et certaines manque plus que cruellement (Le findfirst par exemple).

Bref.......

Commentaire de xamax12 le 27/08/2005 19:32:10

Public cn As New OleDb.OleDbConnection
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!

Commentaire de COlive le 19/04/2006 14:50:01

Auto Critique :
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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

combo sous access [ par presseb ] J'ai un probleme sous un formulaire access un combo fait appel a un champs d'une base de données SQLQuand je supprime a l'aide d'une requete sql des c Etat Access avec VB + dao - Changement du source [ par steph ] Bonjour, Mon pb est le suivant : Dans VB j'alimente une table avec des données. Cette table est temporaire et vit le temps du traitement. A la fin de combo multi colonnes (adaptation access ==> VB ) [ par Moussetique ] Bonjour à tous, Voici, peut-être suis-je trop habitué à travailler en Access, mais j'ai unpetit problème avec les combo box. Dans Access, nous avons l BASE DONNée : QUEL CHOIX ??? ADO/DAO ? ACCESS/SQL SERVER/MYSQL ? [ par pingwee ] Je fais 1 prog qui nécessite une connection vers 1 base de donnée sur le net qui doit être sécurisée.Quelle base de donnée à utiliser ?g commencé avec Prob Access 2000 et DAO ... Hyper Urgent, pleazzze !!!: ) [ par dvdnet ] Bonjour, je rencontre un problème avec un développenent fait pour un client ... Ce prog a fonctionné au bureau, mais il marche plus chez le client, ch Récuperation d'un champ Access dans un Combo [ par slashnbk ] Bonjour à tous,J'aimerais récupérer la valeur des enregistrement d'un champ (BD Access) pour les mettrent automatiquement dans un Combo. Champ1 Attributs des champs d'une table en DAO (access) [ par SoftWay ] Voilà,j'ai cherché partout et je ne trouve pas la solution afin de mettre un ou plusieurs attributs d'un champ dans une table.Je connais la syntaxe de DAO 3.6 sur base access avec mot de passe [ par sprintjeff ] salut,j'arrive pas a me connecter sous dao3.6 a ma base access protégée par un mot de passe. quelqu'un a un bout de code avec la syntaxe adéquate d'op DAO + ACCESS URGENT MERCI [ par marquesj ] salut a tous,dans un projet Excel doit mettre ajour une base Acces via un Recordset, mail il arrive que l'enregistrement soit en cours de modification peut -on réparer une base access 2000 (DAO ne marche pas) [ par steph ] j'ai essayé avec repairDatabase mais cette option ne supporte pas access 2000 !


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales