Comment faire pour remplir un ComboBox avec un jeu d'enregistrements à l'aide de VBA

Il existe de la littérature disponible à expert de la bourse de et à teck république sur l'utilisation de la zone de liste déroulante.propriété recordset pour remplir une zone de liste déroulante dans un formulaire Access.

Ces contrôles sont généralement remplies avec un "SELECT *" chaîne dans le "contenu" propriétés de la commande, la référence à une table ou une requête à la disposition du client, à côté de l'application. Quand j'ai besoin d'afficher du côté du serveur de données dans une liste déroulante, j'ai créer un local temporaire de table et d'importer des documents demandés. Cela prend du temps, spécialement avec des grandes tables.

Être en mesure d'utiliser un jeu d'enregistrements pour remplir un contrôle combobox permettrait à l'utilisateur d'afficher directement les données à partir du côté du serveur.

Inspiré par les 2 exemples précédents, j'ai écrit un code comme suit:

Dim rsPersonne as ADODB.recordset
Set rsPersonne = New ADODB.Recordset

Set rsPersonne.ActiveConnection = connexionActive
rsPersonne.CursorType = adOpenDynamic
rsPersonne.LockType = adLockPessimistic
rsPersonne.CursorLocation = adUseClient

rsPersonne.Open "SELECT id_Personne, nomPersonne FROM Tbl_Personne"

fc().Controls("id_Personne").Recordset = rsPersonne

Où:

  • connexionActive: mon permanents ADO connexion à mon serveur de base de données
  • fc(): est-ce ma de courant/forme active
  • contrôles("id_Personne"): c'est l'
    contrôle zone de liste déroulante pour remplir avec
    du personnel de l'entreprise liste
  • Accéder à la version en 2003

Malheureusement, il ne fonctionne pas!

En mode debug, je suis en mesure de vérifier que le jeu d'enregistrements est correctement créé, avec des colonnes demandées et données, et correctement associés au contrôle combobox. Malheureusement, lorsque j'affiche le formulaire, je reçois un vide combobox, avec aucun enregistrement! Toute aide est très appréciée.

EDIT:

Cette propriété recordset est en effet disponible pour la zone de liste déroulante objet, pas pour la norme de contrôle de l'objet, et j'ai été très surpris de le découvrir il y a quelques jours.
J'ai déjà essayé d'utiliser la zone de liste déroulante de la fonction de rappel, ou pour remplir une liste avec les "addItem" méthode de la zone de liste déroulante. Tous ces éléments sont consommatrices de temps.

OriginalL'auteur Philippe Grondier | 2009-06-08