Visual Basic - combobox de dos campos

Life is soft - evento anual de software empresarial
 
Vista:

combobox de dos campos

Publicado por samuel (1 intervención) el 30/03/2006 13:03:03
Hola a todos, me gustaria saber como hacer para que un combobox del tipo dropdown combo me muestre 2 campos pero me seleccione uno solo. Para explicarme mejor, tengo el siguiente código:

/*********************************************************/
Dim tmp As New ADODB.Recordset
Screen.MousePointer = vbHourglass

tmp.Open "Select codcla, descla1 from coo_clasificacionobras order by codcla asc", cnn, adOpenKeyset, adLockOptimistic
't_obra.DataField = tmp!CODCLA
While Not tmp.EOF

t_obra.AddItem Format(tmp!CODCLA, "00000")
t_obra.AddItem (tmp!DesCla1)
tmp.MoveNext
Wend
tmp.Close

Set tmp = Nothing
Screen.MousePointer = vbNormal
/*****************************************************************/
Bien lo que quiero es que en el dropdown combo se vean el codigo y la descripción pero al seleccionar coja el código solamente, ya que la descripción solo me interesa como información adicional. Que tendria que añadir/quitar del código anterior?
Gracias a todos de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:combobox de dos campos

Publicado por Mario (107 intervenciones) el 30/03/2006 16:30:44
Yo lo haria de la siguiente forma
While Not tmp.EOF
'Aqui en un sola linea tendria los dos campos
t_obra.AddItem Format(tmp!CODCLA, "00000") & " " & t_obra.AddItem (tmp!DesCla1)
tmp.MoveNext
Wend
Para la busqueda tomaria solo los 5 primeros digitos que al parecer son los que me interesan.
busca=mid$(t_obra,1,5)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox de dos campos

Publicado por matías freire (421 intervenciones) el 30/03/2006 21:10:11
no está mal... pero en argentina a eso se le llama "ATARLO CON ALAMBRE!!!!", porque si los dígitos te llegan a cambiar, sonaste!!!

algo mejor sería lo siguiente (y acostumbrate a usar DO LOOP!!!!)

Do While Not tmp.EOF

'Aqui en un sola linea tendria los dos campos
t_obra.AddItem Format(tmp!CODCLA, "00000") & " " & t_obra.AddItem (tmp!DesCla1)

t_obra.ItemData (t_obra.NewIndex) = Format(tmp!CODCLA, "00000")
tmp.MoveNext
Loop
'para la busqueda, simplemente leo el valor de itemdata psandole como parámetro el indice del elemento que seleccionó el usuario:

busqueda= t_obra.ItemData (t_obra.ListIndex)

Listo!!!

Ya sea que tu código tenga 2, 3, 4, 5, o 6 números, no te importa, porque siempre tendrás el valor que te interesa en la propiedad "item data" de cada uno de los elementos del combo. Sí, ya sé, que tu código es fijo porque le pusiste los 5 ceritos... pero imagínate si no pudieras hacer eso, y fuera un código que varíe en su longitud...

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar