Hay un poco de literatura disponible en expert's exchange y en teck republic sobre el uso de la propiedad combobox.recordset para llenar un cuadro combinado en un formulario de acceso.Cómo llenar un ComboBox con un conjunto de registros usando VBA
Estos controles generalmente se rellenan con una cadena "SELECT *" en las propiedades de 'rowsource' del control, haciendo referencia a una tabla o consulta disponible en el lado del cliente de la aplicación. Cuando necesito mostrar los datos del lado del servidor en un cuadro combinado, creo una tabla local temporal e importo los registros solicitados. Esto lleva mucho tiempo, especialmente con tablas grandes.
Ser capaz de utilizar un conjunto de registros para rellenar un control de cuadro combinado permitiría al usuario visualizar directamente los datos desde el lado del servidor.
Inspirado por los 2 ejemplos anteriores, he escrito algo de código como sigue:
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
Dónde:
- connexionActive: es mi conexión ADO permanente con el servidor de base de datos
- FC() : es mi forma actual/activa
- controles ("id_Personne"): es el combobox control para poblar con empresa 'S lista personal
- versión de acceso en 2003
Por desgracia, no funciona!
En el modo de depuración, puedo verificar que el conjunto de registros se haya creado correctamente, con las columnas y datos solicitados, y que esté asociado correctamente al control del cuadro combinado. Desafortunadamente, cuando muestro el formulario, sigo obteniendo un combobox vacío, ¡sin registros en él! Cualquier ayuda es muy apreciada.
EDIT:
propiedad Este conjunto de registros es de hecho disponible para el objeto específico de cuadro combinado, no con el objeto de control estándar, y yo era muy sorprendidos al descubrir que hace unos días. Ya he intentado usar la función de devolución de llamada del combobox o llenar una lista con el método "addItem" del combobox. Todos estos requieren mucho tiempo.
No funciona para mí:/Tiene un error 91: Bloc No presente –
Si desea un consejo, debe dar el código defectuoso e identificar la línea que arroja el error. –
Descripción del error aquí: http://stackoverflow.com/questions/16231456/how-to-populate-a-listbox-with-a-adodb-recordset-error-91 –