Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Combo box

0 views
Skip to first unread message

Ignacio Ruben

unread,
Mar 15, 2006, 1:42:04 PM3/15/06
to
Hola a todos, tengo el siguiente problema, tengo una db que se llama Bancos,
y dentor id, nombre, cuenta1, cuenta2, cuenta3, y quiero cargar en dos
combobox, en el primero los bancos, y de acuerdo al banco seleccionado que
el el segundo combo me aparezcan las cuentas que tenemos cargadas a este
banco, no se si me explico bien.
Espero que alguien me pueda ayudar.

Muchas gracias

Ignacio Ruben


heich

unread,
Mar 15, 2006, 1:58:48 PM3/15/06
to
Hola
1. Carga tabla de bancos en un recordset, obteniendo ID y Nombre del
banco, agrega dos combos, por ejemplo cmbIdBanco(oculto) y
cmbNombreBanco(visible), llenalos

With Recset
If Not .EOF Then
.MoveFirst
cmbIdBanco.Clear
cmbNombreBanco.Clear
Do While Not .EOF
cmbIdBanco.AddItem .Fields("IdBanco").Value
cmbNombreBanco.AddItem .Fields("NombreBanco").Value
.MoveNext
Loop
End If
End With

2.- Como CmbNombreBanco es visible, agrega el evento click de este,
sincronizando los listindex de ambos, y al mismo tiempo cargando los
datos de las cuentas:
Private Sub cmbNombreBanco_Click()
Dim Recset As New ADODB.Recordset
Dim strSQL As String
'Sincroniza
cmbIdBanco.ListIndex = cmbNombreBanco.ListIndex

'Consulta
strSQL = "SELECT * From cuentas WHERE IdBanco=" & cmbIdBanco.Text

'Abre el recordset
Recset.Open strSQL, Conn, etc, etc
'Llena el combo de Cuentas
With Recset
If Not .EOF Then
.MoveFirst
cmbCuenta.Clear
'Limpieza de los demas combos
'-----
'-----
'-----
Do While Not .EOF
cmbCuenta.AddItem .Fields("Cuenta").Value
'Demas campos, a sus respectivos combos ocultos
'-----
'-----
'-----

.MoveNext
Loop
End If
End With

Ahora bien, es posible que tengas un monton de cuentas por cada banco,
por lo que se podria lento el llenado del combo de cuentas.
Posiblemente sea necesario especificar mas detalles, por ejemplo, la
sucursal o el tipo de cuenta a mostrar, para agilizar la carga.

Saludos
Heich
--
Daria todo lo que se por saber la mitad de lo que ignoro

Saga

unread,
Mar 15, 2006, 2:10:03 PM3/15/06
to

Hola :-)

Usando ADO...
Asumiendo que los campos se llaman tal como los decribes...

En las declaraciones del modulo

Private rs as ADODB.Recordset

En el form load carga el primer combo

Dim strSQL as string

strSQL = "select id, nombre, cuenta1, cuenta2, cuenta3 "
strSQL = strSQL & "from Bancos order by nombre"

set rs = new ADODB.Recordset
rs.open strSQL, dbConex

(se asume que dbConex es tu objeto de conexion)

do while not rs.eof
combo1.additem rs!Nombre
combo1.Itemdata(combo1.newindex) = rs!id
rs.movenext
loop

set rs.activeconnection = nothing

Ya esta la fase inicial. Cuando se presenta la ventana el combo1
tiene una lista de los bancos. Ahora en el evento Click de este combo,
ojo, el evento es Click, NO Change pones esto:


dim i as integer

if combo1.listitem <> -1 then
rs.movefirst
rs.find "id=" & combo1.itemdata(combo1.listitem)

'Limpia el combo para que las cuentas de otros bancos
'no se acumulen.
combo2.clear

'Son tres campos de cuentas.
for i = 1 to 3
'Que no este vacia.
if "" & rs.fields("Cuenta" & i) <> "" then
combo2.additem rs.fields("Cuenta" & i)
end if
next i
end if


espero te sea util. Esto lo hice al vuelo, no esta probado y
puede ser que algo se me haya escapado.

Suerte!
Saga

-
Soluciones Para Mejorar
www.reset.com.mx


"Ignacio Ruben" <nach...@SPAMMEbtd.se> wrote in message
news:eypJoAGS...@TK2MSFTNGP11.phx.gbl...

Guillermo Peralta

unread,
Mar 21, 2006, 12:24:19 PM3/21/06
to
Hola Juan, chequea el siguiente ejemplo:

http://vbnet.mvps.org/index.html?code/comboapi/comboheight.htm

--
Saludos
Guillermo
--
AG-CBA-ARG
"Juan Manuel Porras Gálvez" <Juan Manuel Porras
lv...@discussions.microsoft.com> escribió en el mensaje
news:C93C72A9-78F4-4FE9...@microsoft.com...
> Hola, ¿existe alguna forma de indicar mediante alguna propiedad o, en todo
> caso, alguna manera de que todos los valores de un objeto "combo" en
> Visual
> Basic 6.0 aparezcan sin "scroll vertical"?.
>
> No sé si tiene un número de valores predefinido y si se puede cambiar o
> no.


0 new messages