Añadir dato al desplegable de un cuadro combinado

4 envíos / 0 nuevos
Último envío
Cron
Imagen de Cron
Offline
última acción: Hace 14 horas 54 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8860
Añadir dato al desplegable de un cuadro combinado

Hola

 

Tengo un formulario en el que presento una lista de registros que se corresponden con unos datos que introduzco previamente. Esta lista la manejo en un subformulario por limpieza.

Tengo un cuadro combinado cuyo "origen de la fila" está ligado a una tabla, pero "origen del control" está vacío, pues no quiero que me edite valores. Este cuadro me puede servir de filtro.

En este cuadro aparecen, por ejemplo, una lista de países. De esta manera, cuando selecciono un país en este cuadro, se me filtra el subformulario para presentar solo lo que tiene que ver con ese país.

 

Tengo claro lo que tengo que hacer para implementar el filtro: cambiar la propiedad "Origen del registro" de mi subformulario que presenta el listado de registros, poniendo el código SQL apropiado, en cada caso.

 

Mi problema es que quiero que, además de los países, me aparezca al principio de la lista desplegable del cuadro combinado la opción <cualquier país>, sin añadirla a la tabla.

 

Es decir, resumo lo que necesito

 

APARECEQUIERO QUE APAREZCA
ALBANIA<Cualquier país>
BOTSWANAALBANIA
COLOMBIABOTSWANA
DINAMARCACOLOMBIA
ESPAÑADINAMARCA

 

El problema es que para sacar los países necesito una orden SELECT en "Origen de la fila", y para ello tengo que poner la propiedad "Tipo de origen de la fila" en Tabla/consulta. Sin embargo, si quiero añadir un valor con la orden

 

Me.Cuadro_combinado72.AddItem "<Cualquier país>", 0

 

se me queja diciendo que tengo que poner el "tipo de origen de la fila" como lista de valores.

 

Pero si hago esto, entonces no me toma los valores de la tabla, y miedo me da tener que recorrer la tabla entera y añadir uno a uno los valores.

 

Adicionalmente, mi tabla de países tiene un campo Id autoumérico y después el nombre del país. Al cuadro combinado le estoy adjuntando dos campos, uno el Id, que es el valor que adopta el cuadro, y otro el nombre, que es el que muestra. Tendría que poner la orden anterior para añadir dos campos a cada fila, y no sé hacerlo.

 

¿Cómo puedo resolver esto de la mejor manera?

 

Muchas gracias por adelantado.

 

Un saludo

pacomegia
Imagen de pacomegia
Online
última acción: Hace 45 segs
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 7590
Re: Añadir dato al desplegable de un cuadro combinado

Hola Cron

En casos similares yo juego con el valor Nulo del desplegable. Si no hay nada elegido, es decir, si el valor del combo es nulo, lo interpreto como "cualquier país", claro que me queda menos amigable, porque no pone nada y tampoco me serviría si quiero utilizar el valor nulo, por ejemplo para buscar registros que no tengan país asignado.

 

Primera opción, crea un país en la tabla de países que se llame "cualquier país" (según lo escribo me parece que no es tan buena idea crear países a lo loco, podemos tener un conflicto diplomático)

 

Otra opción que se me ocurre que utilices una consulta de unión para unir los datos de la tabla países con ese otro dato que no existe llamado "cualquier país" que podrías tener en una tabla auxiliar

Estas consultas de unión son poco eficientes porque no tienen índices, no creo que en este caso dé muchos problemas, pero si va muy lento es lo primero que hay que mirar.

 

el origen de tu combo podría ser entonces una consulta de unión similar a esta (le asigno 0 a "cualquier país", supongo que los datos los tienes en tabla paises, supongo que quieres ordenar la lista de países por oden alfabético):

 

Select 0 as id, "<cualquier país>" as pais From tablapaises

Union All

Select id, pais From tablapaises Order By pais

 

Me preguntarás que por qué digo que los primeros valores vienen de tablapaises, si en realidad no están ahí, bueno, es porque access pide en las consultas de unión que haya una tabla (aunque aquí no haría falta

 

-Sobre que el origen del combo sea una lista de valores con varias columnas:

Bueno, pues el origen es una lista formada por el valor de la primera columna, luego el de la segunda, después la primera columna, luego la segunda...

así: (mi separador de listas es el punto y coma)

0;"<cualquiercosa>";1;"Argentina";2;"Bolivia";3;"Chile";4;"Ecuador";5;"España"

 

Data Tools Suite
datos y tablas con Excel

Cron
Imagen de Cron
Offline
última acción: Hace 14 horas 54 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8860
Re: Añadir dato al desplegable de un cuadro combinado

Muchas gracias, eso es justo lo que necesitaba.

Mañana lo implemento y te cuento.

 

Un saludo

Cron
Imagen de Cron
Offline
última acción: Hace 14 horas 54 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8860
Re: Añadir dato al desplegable de un cuadro combinado

Pues al final he tenido que hacer un pequeño retoque.

Resulta que en la tabla que necesito no tengo el nombre del país, sino su Id, que hay que sacarla de otra tabla.

Además, como dejaste el código, lo que hace es añadir un 0,<cualquier país> por cada campo que saca de la otra tabla, por lo que le he añadido un para de DISTINCT para quitar duplicados.

Por otra parte, como el 0 ya está cogido (un autonumérico empieza por ahí) he pensado en poner un valor null para homogeneizar el código (para responder igual cuando está seleccionado <cualquier país> que cuando no hay nada seleccionado) pero me da el problema de que cuando selecciono <cualquier país>, no se visualiza, sino que queda el cuadro combinado en blanco.

 

Al final queda algo así como:

 

SELECT DISTINCT 99999 as id, "<cualquier país>" as país

     FROM Lista

UNION ALL

SELECT DISTINCT Lista.id, Países.[Nombre País]  

     FROM Lista

     INNER JOIN Países

     ON Lista.País = Países.[Identificador País]

ORDER BY País;

 

 

Un saludo