Filtrar un combo en un formulario con código

Haber si se explicarme. Necesito cargar un formulario el cual entre otras cosas tiene un combo con tres datos (luego tendrá mas) y quiero que al entrar en el formulario dicho combo sólo aparezcan los datos que yo quiera mediante código, actualmente lo hago en la vista diseño en el origen de la fila del combo en los criterios, indicarle que datos quiero que aparezcan, pero quiero hacerlo con código.

2 respuestas

Respuesta
2

Puedes hacerlo de varias formas. Por ejemplo, so los valores los tienes en una tabla y quieres que sólo coja algunos

me.cuadrocombinado.rowsource="select cliente from Clientes where fechaventa<date"

Where... es el criterio que define unos registros y otros no.

En el caso de que quieras poner tu los valores, en el evento Al recibir el enfoque, puedes poner por ejemplo

Me.Cuadro_combinado42. AddItem "Pedro"
Me.Cuadro_combinado42. AddItem "Juan"
Me.Cuadro_combinado42. AddItem "Luis"

Entonces cuando pongas el cursor en el combinado te aparecerán esos valores.

Hola he escrito el código:

Private Sub Subfamilia_GotFocus()
Me.Subfamilia.RowSource = "select Subfamilia from tbl_Subfamilias where TINTAS "
End Sub

tanto al recibir el enfoque del cuadro combinado como al cargar el formulario y ambos casos al hacer click sobre el cuadro combinado lo que me aparece es un cuadro de dálogo que me dice que introduzca un parámetro

me podéis ayudar un poco más?

Gracias

Vamos a ver, la condición where es para indicar un criterio pero tu sólo pones ""El origen del combinado que sean aquellos valores de Subfamilia de la tabla SufFamilia en que Tintas. En que Tintas sea qué. Por ejemplo, vamos a suponer que quiero que en el combo me aparezcan los nombres de los clientes cuyo país sea Alemania. Tendría que poner

Me.subfamilia.rowsource="select nombrecliente from Clientes where país=""Alemania"""

Otro ejemplo supongamos que quiero poner en el combo los números de factura que se vendieron hoy

me.subfamilia.rowsource="select numfactura from facturas where fechafactura=date()"

En tu caso, sin saber el criterio podría ser

me.subfamilia.rowsource="select subfamilia from subfamilias where tintas=""Azul"""

y si quisieras más criterios

me.subfamilia.rowsource="select subfamilia from subfamilias where Tintas=""Azul"" or Tintas=""Verde"""

Si no quieres aplicar ningún criterio, es decir que te aparezcan todos los valores, basta con

me.subfamilia.rowsource="select subfamilia from subfamilias"

Por cierto, si quieres que te aparezcan dos columnas basta con que en formato del combinado pongas Numero de columnas 2, ponle el ancho de cada una y en el código ponle

me.subfamilia.rowsource="select subfamilia, amigos from subfamilias where tintas=""Azul"""

Es decir, que por cada nueva columna una coma y el nuevo campo

Hola de nuevo y disculpa de nuevo mi torpeza, he incluido en el evento al recibir el enfoque el siguiente código

Me.Subfamilia.RowSource = "select Subfamilia from tbl_Subfamilias"

el combo es Subfamilia, la tabla es tbl_Subfamilias y el campo donde están los datos que quiero filtrar se llama Subfamilia, al pulsar el combo no aparecen los valores. Tambien he probado con condición where y no me funciona ¿que hago mal?

Por curiosidad ¿Has mirado en las propiedades-eventos-nombre del cuadro combinado si se llama Subfamilia.

De todas formas, si quieres, mándame un mensaje a [email protected] y te mando un ejemplo con tus mismos datos. Si lo haces, en el asunto del mensaje pon tu alias fjavierh, ya que si no sé quien me escribe ni lo aro.

Respuesta
2

Otra opción, además de las que te comenta Icue, sería actuar sobre la propiedad RowSource del cuadro de lista (y sobre RowSourceType si lo necesitas), por ejemplo:

Me.nombreCuadro.RowSourceType="Value List"

Me.nombreCuadro.RowSource="Valor1;Valor2;Valor3"

De esta forma haces por código lo mismo que en las propiedades del cuadro de lista: le dices que quieres una lista de valores y le pones los que quieres.

Un saludo


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas