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

Controlar ComboBox

Estas en el tema de Controlar ComboBox en el foro de Visual Basic clásico en Foros del Web. Buenas a todos: Vereis tengo el examen de Visual dentro de dos días y me han mandado un programa para practicar de un Banco. La ...
  #1 (permalink)  
Antiguo 15/03/2010, 18:37
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Controlar ComboBox

Buenas a todos:
Vereis tengo el examen de Visual dentro de dos días y me han mandado un programa para practicar de un Banco.
La cuestión es que he de hacer un formulario de Transferencias. Una vez hayas introducido en otros formularios los datos de los clientes (Nombre, DNI, Dirección), en el formulario Transferencias aparecerá dos radioButton: DNI Y Nombre. Dependiendo de cual selecciones se activará su respectivo TextBox.
La cuestión es que al introducir en el textbox cualquier letra, ha de aparecer en un comboBox los datos que coincidan con esa letra. Por ejemplo si seleccionas Nombre y pones P, te aparecerá en el ComboBox todos los Nombres que empiecen por P y cuantas mas letras añadas mayor tendrá que ser la coincendia.
El problema es que no se como controlar el ComboBox así, porque se que aparezcan todos los datos pero no que sea coincidente con lo que se escriba.
¿Alguien podría ayudarme por favor? :(
Un cordial saludo y gracias
  #2 (permalink)  
Antiguo 16/03/2010, 03:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Controlar ComboBox

Hola

Puedes cargar el ComboBox utilizando un Recordset, en el evento Change del TextBox puedes ir cambiando el .Source del recordset para que coincida con lo que estas escribiendo en el text y luego refrescar. Algo como:

Código:
Private Sub Text1_Change()
   Reg.Source = "Select Nombre from tabla1 where nombre like '" & text1.text & "%' order by nombre"
Luego tienes que asignar ese recordset al combo y refrescar, de esa forma cada vez que modifiques el text la select se irá adaptando a lo escrito en el mismo.

Es solo una idea, yo lo utilizo con el control TDBGrid, pero debería funcionar con cualquier control que podamos enlazar con un recordset.

--Saludos--
  #3 (permalink)  
Antiguo 16/03/2010, 07:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Controlar ComboBox

Gracias por responder:
He usado el código que me has pasado pero me dice que Reg no se ha declarado. Acaso es una variable? Y a quien pertenecería y de que tipo es?
Un saludo
  #4 (permalink)  
Antiguo 16/03/2010, 09:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Controlar ComboBox

Hola

Efectivamente reg es una variable, supongo que tienes los datos en una base de datos, reg es un RecordSet, se declara de la siguiente forma:

Código:
Dim Reg as As New ADODB.Recordset
Pero ten en cuenta que también te hará falta declarar la BD y establecer su cadena de conexión para poder pasársela al RecordSet

--Saludos--
  #5 (permalink)  
Antiguo 16/03/2010, 09:44
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Controlar ComboBox

Lo siento pero aun no di base de datos, estamos empezando a aprender formularios, por eso nos pidieron este ejercicio :(
  #6 (permalink)  
Antiguo 16/03/2010, 10:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Controlar ComboBox

Hola

Entonces tienes que hacer este ejercicio sin utilizar bases de datos?, la lista de nombres donde la guardas?, en un array?

--Saludos--
  #7 (permalink)  
Antiguo 16/03/2010, 13:09
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Controlar ComboBox

Si. Para ser mas exactos tengo la clase Cliente y en el formulario de crear cliente es donde creo el array declarado de la siguiente forma:
Friend Clientes () As Cliente.
Para que el combo me muestren todos los datos lo tengo declarado en LOAD de formulario de la siguiente forma:

For each cli In frmCliente.Clientes
comboBox.Items.Add(cli.Nombre & " - " & cli.DNI)
next
  #8 (permalink)  
Antiguo 17/03/2010, 03:52
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Controlar ComboBox

Hola

La verdad es que estoy tan acostumbrado a usar bases de datos que algo "supuestamente" mas sencillo o básico me resulta en realidad más complicado.

Una forma que se me ocurre es que en el evento change del textbox (se activa cada vez que cambias el text) midas la longitud del texto introducido, luego comparas el valor del textbox con el valor que tienes en el array cogiendo la longitud con la función left y si cumple la condición lo añades al combo. Sería algo así como:

Código vb:
Ver original
  1. Private Sub Text1_Change()
  2. Dim Longitud as Integer
  3. dim Cadena as string
  4.  
  5. Longitud=len(text1.text) 'Mide cuantos caracteres tiene lo introducido en el textbox
  6.  
  7. For each cli In frmCliente.Clientes
  8.    Cadena=left(cli.nombre,Longitud) 'Cogemos los caracteres del nombre
  9.   If Cadena=text1.text then 'Si los caracteres son iguales al nombre
  10.      comboBox.Items.Add(cli.Nombre & " - " & cli.DNI) 'Añadimos al combo
  11.   end if
  12. next

Ejemplo: Si en el textbox escribimos an en la variable Longitud nos quedara 2, si el primer nombre es angel, en la variable cadena nos quedará an (los primeros dos caracteres de angel). Si cumple lña condición (en este caso la cumple) la añades al combo, si no cumple no se añadirá). Recuerda en limpiar el combo antes de todo.

--Saludos--
  #9 (permalink)  
Antiguo 17/03/2010, 08:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Controlar ComboBox

Lo he probado y funciona.
Muchísimas gracias. Me has salvado a última hora de suspender el examen.
Un cordial saludo
  #10 (permalink)  
Antiguo 17/03/2010, 09:12
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Controlar ComboBox

Me alegro que te funcione !!!

--Saludos--

Etiquetas: combobox, controlar
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:20.