Rellenar un Combobox con datos de una consulta

27/05/2009 - 00:21 por Gustavo Echenique | Informe spam
Hola Foro!

Estoy tratando de rellenar un combobox de 3 columnas con los datos de una
consulta realizada a un motor de bases de datos Informix.

La consulta se realiza perfectamente, ya que lo puedo comprobar mediante el
debug, pero la carga de datos en el ComboBox me arroja un error diciendo que
necesita un objeto.
El código de llenado es el siguiente:
While Not datos.EOF
Combo1.List(nFila, 0) = CStr(datos(0).Value)
Combo1.List(nFila, 1) = datos(1).Value
Combo1.List(nFila, 2) = datos(2).Value
datos.MoveNext
nFila = nFila + 1
Wend

En donde "datos" es el recordset que contiene los datos y obviamente
"Combo1" es el ComboBox en donde quiero que se inserten los datos.

Agradecería me marquen el error para así solucionarlo.

Desde ya, agradezco infinitamente su ayuda.

Saludos!

Gustavo Echenique

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
29/05/2009 - 06:29 | Informe spam
hola, Gustavo !

Mostrar la cita
no se alcanza a apreciar alguna causa de error en el codigo y asumo que el nombre del procedimiento ("Form_Load")
simplemente es un procedimiento "normal" y no un procedimiento de evento "clasico" de VB (stand-alone)

podrias comentar cual linea de codigo se marca cuando te avisa del error: "el objeto no admite esta propiedad o metodo" (?)

saludos,
hector.
#7 Gustavo Echenique
05/06/2009 - 14:57 | Informe spam
Hola Héctor!

Te doy las gracias por amabilísima atención, y te solicito disculpas por la
demora en contestar, pero he estado muy sobrecargado con otros temas en mi
trabajo, y ahora estoy retomando éste.
Con respecto a la línea en donde arroja el error, es en la primera
asignación de valor mediante List.

Espero te guíe a la solución.

Un abrazo.

Gustavo Echenique
"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#8 Héctor Miguel
06/06/2009 - 05:36 | Informe spam
hola, Gustavo !

Mostrar la cita
ok, de acuerdo con tu mas reciente codigo (segun exposicion en mensajes anteriores)...
el uso que haces de la propiedad .List para rellenar el control con el objeto recordset es +/- asi:

= nFila = 0
datos.MoveFirst
While Not datos.EOF
Hoja1!Combo1.List(nFila, 0) = CStr(datos(0).Value) ' Como este dato es numérico lo convierto a string
Hoja1!Combo1.List(nFila, 1) = datos(1).Value
Hoja1!Combo1.List(nFila, 2) = datos(2).Value
datos.MoveNext
nFila = nFila + 1
Wend
=
y el error que obtienes se deriva al NO especificar el campo (columna) del recordset a pasar a la columna en el combo
prueba modificando las instrucciones anteriores +/- a lo siguiente:

- cambia el While...Wend por: -> Do While...Loop
- agrega la propiedad .Field(...) al rescatar los datos del recordset

nFila = 0
datos.MoveFirst
Do While Not datos.EOF
Hoja1!Combo1.List(nFila, 0) = CStr(datos.Fields(0).Value)
Hoja1!Combo1.List(nFila, 1) = datos.Fields(1).Value
Hoja1!Combo1.List(nFila, 2) = datos.Fields(2).Value
datos.MoveNext
nFila = nFila + 1
Loop

otra posible solucion/alternativa/... (segun el numero de registros) que pudiera resultar mas rapido
es "bajar" el recordset a un rango en hoja de calculo y luego "subirlo" al control (excel 2000 en adelante)
(p.e.) una vez que has leido/abierto/rescatado/... el recordset...

With Worksheets("una hoja oculta")
.Range("a1").CopyFromRecordset datos ' vaciamos el recordset al rango '
With .Range("a1").CurrentRegion
Hoja1!Combo1.List = .Value ' cargamos los valores al control '
.ClearContents ' volvemos a dejar 'limpio' el rango donde se vacio el recordset :) '
End With
End With

otra posible solucion/alternativa/... mas, es la propuesta en alguno de tus consultas anteriores: <objeto recordset>.GetRows

op1:
Hoja1!Combo1.List = datos.GetRows

op2:
Hoja1!Combo1.Columns = datos.GetRows

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
#9 Gustavo Echenique
16/06/2009 - 18:19 | Informe spam
Héctor, sos un veradero genio!.

Muchas gracias por compartir tus conocimientos.

Un abrazo.

Gustavo Echenique

"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#10 Héctor Miguel
16/06/2009 - 18:44 | Informe spam
hola, Gustavo !

Mostrar la cita
gracias a ti, por el "feed-back" (y por tus comentarios) :D

solo para los registros... podrias informar cual opcion fue la que ha servido a tu caso ?

saludos,
hector.

__ previos __
Mostrar la cita
Ads by Google
Search Busqueda sugerida