Cuadro combinado que añade el valor Todos a una lista:

He buscado esta información, pero por más que la aplico me da error.
Que me salga la palabra todos ya lo he conseguido, pero al aplicar la expresio SiImp...
Error:la expresión que indrodujo contiene un punto, un operador o paréntesis no válido.
Por más que lo intento siempre error. Me puedes decir donde puedo fallar o otra forma de hacerlo.
Gracias
Cuando se prepara un formulario con un cuadro combinado cuyo valor
luego se usa como criterio en una consulta, es posible que convenga
añadir a los valores de la lista el texto Todos, en cuyo caso la
consulta no tendrá criterio.
Conseguir este propósito requiere resolver dos problemas; por un
lado, lograr que el cuadro combinado muestre también la palabra Todos
y, por otro, que la consulte funcione correctamente. Para el primer
problema partimos de que el tipo de origen de fila del cuadro combinado
es Tabla. Consulta, ya que si fuera Lista de valores sólo tendríamos
que añadir dicho valor.
Necesitamos crear una consulta de unión que nos permita asociar a
los elementos de la tabla el texto deseado. Este tipo de consulta sólo
se puede crear en la pantalla de SQL y su sintaxis sería:
SELECT Campo FROM Tabla UNION SELECT '(Todos)' FROM Tabla
Aunque '(Todos)' es una constante, necesita un origen de datos, pero puede usarse sin problemas la misma tabla.
Veamos ahora cómo solucionar el tema de la consulta. Para que el
criterio funcione bien usaremos la siguiente expresión con la función
SiImp:
SiImp(Formularios![NombreFormulario]![NombreCuadroCombinado] = '(Todos)';
[NombreCampo];
Formularios![NombreFormulario]![NombreCuadroCombinado])
Con esta sintaxis se consigue que al seleccionar Todos el criterio
sea el propio nombre del campo, lo cual da como resultado todos los
registros.

1 Respuesta

Respuesta
1
Si me detallas un poco más qué es lo que quieres lograr ya te digo si puedo ayudarte. Con lo que me has mandado se me mezclan tu pregunta con la respuesta que mandas.
Gracias por la rápida atención, haber si se explicarme.
Realizo una consulta basándome en los datos de 2 cuadros combinados.En uno de ellos países y otros ciudades.En ellos sale un listado de países y ciudades.
Lo que quiero es poder añadir a esos cuadros combinados la palabra "todos" para que cuando realice la consulta si elijo todos, coja todas los países y ciudades, vamos que no me filtre.
Saludos
Me pillaste al inicio de mis vacaciones y hasta ahora no he regresado. He estado revisando lo que me ponías y la función Slimp no la he encontrado por ningún sitio sin embargo creo que se refiere a la función SiImn. Prueba eso y ya me cuentas
Que me salga la palabra todos en el cuadro combinado ya lo he conseguido, pero lo de la función SiImn no me sale no se si lo tengo que poner en la consulta en CAMPO o en CRITERIOS, lo he probado en los dos pero nada, en criterios me da error y en campo no me funciona.
Esto es lo que quiero conseguir
Tengo una BD en la cual ejecuto una consulta según los datos que tenga en 5 cuadros combinados (a la vez los datos de estos 5 cuadros combinados provienen de otras consultas).
-Lo que quiero es que en esos 5 cuadros combinados me salga la palabra "todos" para así si elego "todos" no me realice ningún filtrado de ese cuadro combinado.(Que coja por ejemplo todos los países)
Te dejo la BD en Megaumpload para que lo veas mas claro
http://www.megaupload.com/?d=SGOBY1MD
Gracias
Ya lo he estado revisando. Te lo explico, podría modificártelo yo todo pero si lo haces tú aprenderás más. Yo tampoco soy un experto pero lo que te diré me ha funcionado.
Como tu formulario1 no está asociado a ninguna tabla puede ser esa una de las fuentes de error. Eso es lo que me ha pasado a mí algunas veces. Se puede solucionar creando variables fijas que estén disponibles para toda la base de datos pero es complicado. Lo más fácil es crear una tabla de apoyo con los cinco campos que a ti te interesan. Luego puedes crear una consulta o una macro que borre todos los datos cuando a ti te venga bien para que siempre te aparezca en blanco el formulario 1 antes de buscar.
Una vez tengas esta tabla. Para tu primera duda te pongo el ejemplo para el grado de dificultad (hay que ponerlo en criterios, dentro de la consulta) sería:
SiInm([Formularios]![ESCALADOR]![Formulario1]![Cuadro combinado14]="todos";[GRADO DIFICULTAD];[Formularios]![ESCALADOR]![Formulario1]![Cuadro combinado14])
Fíjate que SiInm se deletra lleva dos íes, una minúscula y otra mayúscula, dependiendo de los caracteres puede parecer una ele.
Si haces eso con todos los campos creo que te saldrá.
Sobre lo de que te salga "todos", otra solución es ponerlo como valor predeterminado.
Para que al colocar el país luego sólo te salgan sus escuelas ve al origen de datos del campo combinado de las escuelas, en la consulta incluye el campo país y en los criterios pon que sea
[Formularios]![escalador]![Formulario1].[Formulario]![Cuadro combinado16]
Que es el cuadro combinado del país. Para que esto te funcione bien hay que actualizar el formulario después de introducir el país. Puedes hacerlo en el evento "después de actualizar" con el siguiente código:
DoCmd. DoMenuItem acFormBar, acRecordsMenu, 5,, acMenuVer70
Espero que te sirva. Ya me contarás
Bueno, Vamos haciendo progresos.
Ya me salen solo las escuelas del país correspondiente. OK
La tabla de apoyo no tengo muy claro para que es, lo he puesto de forma que al seleccionar los datos de los cuadros combinados se guarden en esa tabla, ¿aunque lógicamente solo se crea un registro...?
Y lo de poner todos como valor prederminado es buena idea(lo pongo en el cuadro combinado), pero claro al guardarse los datos en la tabla solo me sale lo que esta guardado en la tabla, que es solo un registro.
De todas formas lo seguiré intentando esta noche.
Aclarame que función es la de la tabla de apoyo que no lo veo.
Muchas gracias por tu interés, creo que ya estamos cerca de conseguirlo.
Lo de la tabla de apoyo es porque en tu formulario los datos son de variables independientes y muchas veces al no quedar registrados ese tipo de datos *en ningún sitio suele haber problemas al realizar consultas relacionados con ellos. Es un poco chapuza pero creo que te puede servir.
Lo de todos, una vez que has elegido cualquier otro valor lógicamente ya no vuelve a aparecerte, pero el resto de valores sí que te deben salir por si quieres cambiar algo. Otra opción es poner una etiqueta o botón al lado de cada cuadro combinado con un código para que al hacer click se escriba "todos" en él.
Estoy seguro de que pronto podrás subir todas las vías que quieras.
Ya lo tengo con tu método, perfecto.
Ahora lo estoy intentando perfeccionar, sin la tabla de apoyo y ya casi lo tengo solo me falla lo de Actualizar el formulario con el código que me diste. Me lanza un error
Se a produciodo el error 2046 en el tiempo de ejecución.
La acción o camando actualizar no esta disponible ahora
Con tu medodo si que funciona lo de actualizar formulario, me imagino que sera cuestión de las consultas( en las cuales esta integrado el "todos"), pero no consigo resolverlo te mando la BD para que veas el error.
http://www.megaupload.com/?d=52EMCBBF
No se si habrá otra forma de actualizar el formulario.
Por cierto cual seria el código del botón para poner "todos"
Muchas gracias
Ya te digo que sin esa tabla al darle a actualizar supongo que las variables que son independentes (no se guardan en ningún sitio) se pierden y de ahí vienen los errores. O bien creas una tabla donde se guarden o bien creas variables comunes a todas las aplicaciones, en una nueva página de códigos. La primera solución es la que veo más sencilla. Si te molesta ver la tabla la ocultas y si lo que quieres es que aparezca en blanco crea una consulta que borre esos registros y luego haces una macro (o con el código) para ejecutarla cuando te venga bien, por ejemplo cuando cierres el formulario o con un botón que indique "limpiar", ...
El código para que escriba algo en un campo sería:
[el campo de destino]. Setfocus
[el campo de destino]="todos"
Setfocus selecciona ese campo y la siguiente orden indica que se escriba "todos" en ese campo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas