Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

cargar combobox

Estas en el tema de cargar combobox en el foro de Visual Basic clásico en Foros del Web. Hola.. les cuento que estaba cargando un par de combobox con datos de unas tablas y me surgio una duda... Cargar los datos para que ...
  #1 (permalink)  
Antiguo 04/05/2008, 09:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 44
Antigüedad: 16 años, 6 meses
Puntos: 0
cargar combobox

Hola.. les cuento que estaba cargando un par de combobox con datos de unas tablas y me surgio una duda... Cargar los datos para que se vean uno debajo de otro es facil... pero hay un dato que me gustaria que se vea como un cuadro combinado...

Osea cuando yo vaya a elegir una opcion del combo:

combobox

$ | Pesos
U$s | Dolares
EUR | Euro

osea en ves de un valor por renglon aparecen dos..... la logica que se utiliza para hacer esto es parecia a la de cargar el combobox como venia haciendolo???
  #2 (permalink)  
Antiguo 04/05/2008, 11:23
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: cargar combobox

Hola, hablas de Visual Basic 6 o de Visual Basic para Aplicaciones?

En VB6 lo puedes hacer concatenando los dos valores por cada línea, pero tendrías dificultad a la hora de seleccionar (a no ser que la longitud del primer valor siempre sea igual, estén separados por un delimitador y utilices la función Split). De todas formas, las columnas no quedarían alineadas.

Para estos casos que se quieren mostrar dos (o más) columnas en un ComboBox, existe la librería de objetos "Microfoft Forms 2.0", la cual contiene un control ComboBox que entre otras más posibilidades, tiene la de mostrar la columna del item (renglón) seleccionado.

Un saludo
  #3 (permalink)  
Antiguo 04/05/2008, 15:40
 
Fecha de Ingreso: octubre-2007
Mensajes: 44
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: cargar combobox

Hola Avellaneda!
Estuve viendo el objeto que me nombraste. Este el codigo que he hecho:

Function carga_combo_moneda()
Set tabla_moneda = Nothing
Set tabla_moneda = New ADODB.Recordset
tabla_moneda.Open "SELECT * FROM Moneda ORDER BY id", conexionbase, adOpenDynamic, adLockOptimistic

With tabla_moneda

.MoveFirst

Do Until .EOF
If .RecordCount = 0 Then
MsgBox "No existen registros", vbExclamation, "Mensaje"
Exit Function
Else

CmbBox.AddItem (.Fields("simbolo"))

.MoveNext
End If
Loop

End With
End Function

Como veras cuando hago el AddItem deberia indicarle en que columna quiero hacerlo para poder insertar en la misma fila el otro valor. Pero no puedo darme cuenta como hacerlo
  #4 (permalink)  
Antiguo 05/05/2008, 00:37
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: cargar combobox

Hola,

El segundo (o más) campo lo tienes que cargar en la propiedad Column(NumCol, NumFila), ten en cuenta que el primer índice de columna es 0 (cero).

Te pongo cómo haría yo esa función:

Código:
Function carga_combo_moneda()
Set tabla_moneda = Nothing  ' <-- instrucción innecesaria ya que a continuación creas un nuevo recordset
Set tabla_moneda = New ADODB.Recordset
tabla_moneda.Open "SELECT * FROM Moneda ORDER BY id", conexionbase, adOpenDynamic, adLockOptimistic

If tabla_moneda.RecordCount = 0 Then
    MsgBox "no existen registros", vbExclamation, "Mensaje"
    Exit Function
End If
Dim i As Long
With CmbBox
    ''''' Las siguientes propiedades las puedes poner en diseño
    .ColumnCount = 2            ' número de columnas a mostrar
    .ListRows = 15              ' número de items visibles al desplegar
    .ColumnWidths = "30pt;50pt" ' ancho de las columnas en puntos
    .TextColumn = 2             ' valor de la columna al seleccionar
    .Value = "Selecciona moneda..."    ' texto del combo
    '''''   
    tabla_moneda.MoveFirst    ' <-- instrucción innecesaria, ya que al abrir un nuevo recordset siempre se posiciona en el primer registro
    While Not tabla_moneda.EOF
        .AddItem tabla_moneda!simbolo         ' Primera columna
        .Column(1, i) = tabla_moneda!nombre   ' Segunda columna
        tabla_moneda.MoveNext
        i = i + 1
    Wend
End With
End Function
y en el evento Click del ComboBox:

Código:
Private Sub CmbBox_Click()
' la propiedad Value muestra la primera columna y Text la indicada en la propiedad TextColumn
MsgBox CmbBox.Value & " - " & CmbBox.Text
End Sub
Un saludo.
  #5 (permalink)  
Antiguo 05/05/2008, 17:01
 
Fecha de Ingreso: octubre-2007
Mensajes: 44
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: cargar combobox

Muchas gracias Avellaneda... fuiste de gran ayuda. Te mando un saludo. Gracias por todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:53.