Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/08/2008, 07:29
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Comparar rangos de numeros en campo string

Cierto es que cuando se le aplica la función Val(edad) y edad = "desconocida" o cualquier otra cadena de texto, el valor que devuelve es 0, y si tú utilizas 0 en el rango, se produce la confusión. Te diré que no sé en qué casos utilizas 0 en el rango de edad, pues salvo que se trate de niños menores de un año y habría que ver cómo anotas esas edades, por ej. 4 meses, no deberías tener problemas. Pero si no es así, deberías tener un rango de 1 a 20. Pero eso es un tema que tendrás que ver tú. Ahora tu problema:
si quieres evitar ese desconocida te bastará con añadir en la consulta que tienes AND edad NOT LIKE 'desconocida'

también podrías hacerlo directamente eliminando mediante un if el valor 0 en ese campo sacado de val(). Algo así:

IIf([edadcadena]='desconocida','desconocida',Val([edadcadena])) BETWEEN 0 AND 20
Si edadcadena es "desconocida", el alias prueba devuelve un valor "desconocida"; en los demás casos te devolverá el número que quieres. El único problema es que pudieras haber metido otras cadenas de texto sin número, y volverías a tener 0 en esos casos.

No lo he probado todo.