Access - SiInm anidados

   
Vista:

SiInm anidados

Publicado por antoniomr90 (6 intervenciones) el 18/11/2013 19:38:45
Hola buenas tardes,
Estoy comenzando ahora con Access y tengo un problema. En una tabla tengo un campo que corresponde al nombre de unos rangos que tengo definidos para un determinado valor que es otra columna de la tabla. Si creo esa columna como campo calculado puedo ir añadiendo los SiInm anidados pero me dice que la expresión es demasiado compleja (tengo 15 rangos).
¿Saba alguien como puedo solucionar este problema? ¿Como puedo hacer que en funcion de dicho valor me ponga el rango correcto en la otra columna? ¿Se puede hacer a través de una consulta?

Gracias de antemano y os agradezco toda ayuda con este error de novato :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto

SiInm anidados

Publicado por Norberto (432 intervenciones) el 19/11/2013 12:39:51
Hola.

La verdad es que no me queda claro qué debe de contener el campo calculado. Muchas veces en vez de utilizar funciones SiInm anidadas se puede resolver con operaciones aritméticas o con tablas auxiliares. Por ello si pones el caso concreto con ejemplo de valores de los campos de la tabla, resultados de los rangos, etc. seguro que te podemos ayudar.

Un saludo,

Nor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SiInm anidados

Publicado por antoniomr90 (6 intervenciones) el 19/11/2013 12:46:12
Perdon por explicarme mal.
El caso es, Tengo una tabla con 3 columnas, os pongo entre parentesis el tipo de dato

Rangos (Texto) Inicio(num) Fin(num)
"De 0 a 5" 0 0


Y en otra tabla tengo una columna que es

Dato(num)
3


Yo lo que quiero es crear otra columna en esta segunda tabla que me de el nombre del rango. Sería algo así.

Dato(num) Rango(texto)
3 "De 0 a 5"

Lo que no se es como hacer la comparacion.

Espero que lo hayas entendido mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto

SiInm anidados

Publicado por Norberto (432 intervenciones) el 19/11/2013 15:50:43
Hola de nuevo.

Entiendo que en

Rangos (Texto) Inicio(num) Fin(num)
"De 0 a 5" 0 0

hay un error y en realidad es "De 0 a 5" 0 5. Si es así, otros registros de la tabla serán:
"De 6 a 10" 6 10
"De 11 a 20" 11 20
"De 21 a 50" 25 50
"De 51 a 100" 51 100
etc. y sólo a modo de ejemplo. Si es así, lo tienes muuuuuy pero que muy fácil.

Creas una consulta con los datos de la segunda tabla y en ella añades un campo calculado. La expresión del campo calculado sería:

Rango: DBúsq("Rangos";"Tabla 1";"Inicio <= " & [Valor] & " AND Fin >= " & [Valor])

Por otro lado, si los rangos van de 5 en 5, no te haría falta ni la tabla. Podrías hacer la consulta con el campo calculado así :

Rango: SiInm([Valor]<6;"De 0 a 5";"De " & Ent(([Valor]-1)/5)*5+1 & " a " & Ent(([Valor]+4)/5)*5)

Un saludo,

Nor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SiInm anidados

Publicado por antoniomr90 (6 intervenciones) el 19/11/2013 17:33:09
Hola, he intentado poner lo que tu me has dicho de DBúsq en campo en la consulta pero no soy capaz de sacarlo. Las comillas tengo que ponerlas también? Alomejor te parece muy sencillo pero esque llevo un par de días nada más y estoy hecho un lío, pero necesito hacerlo.
LA consulta que tengo que crear es de actualización no?

Muchas gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto

SiInm anidados

Publicado por Norberto (432 intervenciones) el 20/11/2013 09:01:06
Hola.

La consulta debe de ser de selección. Como norma debemos de decir que "nunca" debe crearse un campo real en una tabla cuyo contenido dependa de otros campos. De esta forma, cuando abras la consulta es como si abireras la tabla 2 pero con un campo más que sería el rango. Si cambias el campo Valor de la tabla, automáticamente cambia el campo Rango.

Si añades el campo Rango en la tabla 2, sí que deberías hacer una consulta de actualización para llenar ese campo, pero cualquier cambio en un valor, requeriría ejecutar la consulta de nuevo para que el cambio se refleje en el campo Rango.

Un saludo,

Nor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SiInm anidados

Publicado por antoniomr90 (6 intervenciones) el 19/11/2013 17:46:05
En el segundo campo de la fórumla tendría que poner el nombre de la tabla donde quiero que me aparezca la nueva columna o el de la tabla donde tengo los rangos definidos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto

SiInm anidados

Publicado por Norberto (432 intervenciones) el 20/11/2013 09:17:31
Hola.

En el primero de los ejemplos que te he puesto se usa la función DBúsq a la que le pasamos tres parámetros de texto por lo que deben de ir entre comillas. Tienes que hacer un copia-pega y cambiar, en su caso, el nombre de la tabla "Tabla 1" por el real. Si los campos no se llaman Rangos, Inicio y Fin, haz pon los que sean.

Te adjunto una imagen de cómo se diseña la consulta.

http://goo.gl/YCYV0C

En la imagen la tabla se llama "Rangos" y el campo se llama "Rango" y he añadido las dos expresiones que te comento más arriba. Si vas a usar la de DBúsq, no hagas caso a la segunda (Rango2: ...)

Espero haberte sido de ayuda,

Nor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SiInm anidados

Publicado por antoniomr90 (6 intervenciones) el 20/11/2013 10:12:59
Muchas gracias, ya lo solucioné. Yo necesitaba una consulta de actualización porque necesitaba añadir ese nuevo campo a la tabla, no solo que me lo mostrara con la consulta de selección.
Muchas gracias por tu ayuda y por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar