Consulta en access filtrar por meses

Aquí os planteo mi problema.

Tengo una tabla donde recojo las bajas y altas médicas de los trabajadores.

Por otra parte he creado una tabla con los meses del año con el id autonumérico

Y he creado una consulta para que me filtre las personas que han estado de baja y/o se han dado de alta en el mes elegido,. Esta consulta me lanzaba las personas que se habían dado de baja médica antes o durante el mes selecciona y que bien, podían tener el alta o seguir de baja durante el mes seleccionado. La finalidad última es saber a través de un informe cuantos días ha estado de baja una personas durante un mes determinado

Pues bien... Todo esto funcionaba correctamente hasta que ha llegado el mes de octubre. No sé si es cuestión de que toma el 10 como número menor que 09 pero en la consulta solo me lanza aquellas personas que se han dado de baja en el mes de octubre y no me recoge aquellas que se han dado de baja en meses anteriores y todavía siguen de baja en el mes de octubre

A través de un formulario donde seleccione el mes y el año y lanzo el informe asociado a esta consulta. Si elijo el mes de junio (por ejemplo) no tengo este problema ya que lista las personas que están de baja antes de ese mes o en ese mes

Espero que me podáis echar una mano porque me estoy volviendo loca.

3 respuestas

Respuesta
1

Si considera al dato '10' como anterior al dato '09' es que el cero del '9' se le adjudica por formato y ambos (el '10' y el '9') son tratados como texto, en esas circunstancias el orden será este:

1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9

Define el dato como numero (la función VAL puede ser útil) y cada dato estará donde le corresponde.

Muchísimas gracias ¿podrías decirme como hacerlo?. Yo lo tengo como autonumérico.

Un saludo

Para poder utilizar un dato como condición en un filtro, lo indispensable es que ambos datos sean del mismo tipo.

Cuando se hace un cambio (de formato) Access no sabe que tipo de dato aplicar y utiliza para ello un tipo de dato que es ambiguo (dato de tipo Variant) con el que intenta adaptarse, no siempre lo logra llegando a producir problemas como este.

Por lo que se ha publicado, el dato que diferencia a los meses 'parece' de tipo numérico (no está 'adornado' con ceros y esta alineado a la derecha).

Si se le aplica la función VAL al dato, se le retornará a número y siendo ambos del mismo tipo el filtro hará lo correcto.

La función Format para obtener el mes devuelve esto:
Format (La-Fecha, "m")  ==> uno o dos dígitos (1, 2... 11, 12), un TEXTO
Format (La-Fecha, "mm")  ==> siempre dos dígitos (01 ... 12), un TEXTO
Format (La-Fecha, "mmm")  ==> tres caracteres (Ene, Feb ... Dic), un TEXTO
Format (La-Fecha, "mmmm")  ==> el nombre completo (Enero ... Diciembre), un TEXTO

Para obtener el dato en formato numérico lo correcto es utilizar la función 'Mes' que devuelve un numero (el consensuado que corresponde al mes: 1 = Enero, 2 = Febrero ...).

Utilizar el adecuado al referente en la tabla o consulta y si actualmente es numérico, aplicar la función VAL para que el actual (01.. 12 = texto) sea del mismo tipo.

Para que la aplicación sea más 'ergonómica' (amable con el usuario) sería interesante plantearse la opción de utilizar el nombre en texto (se evitara el recalculo a escondidas para obtener el numero).

Hay una función más que se puede utilizar para evitar la tabla de conversión número >> mes en texto, la función 'MonthName' que devuelve el nombre del número del mes, en la ventana de inmediato:

FOr aa = 1 To 12: Debug.Print aa, monthname(aa): next AA
1 enero
2 febrero
3 marzo
4 abril
5 mayo
6 junio
7 julio
8 agosto
9 septiembre
10 octubre
11 noviembre
12 diciembre
Respuesta
1

Loles, no necesitas la tablas meses. Si construyo una consulta como

Cuando la abro

Ya me muestra el mes que corresponde a cada pedido, y en todo caso, en ese campo MesLetra, es donde puedo aplicar el criterio del combo del formulario. Como tengo tu email, si quieres que te envíe un ejemplo dilo.

Respuesta
1

Lolesferlo tiene mal construida la consulta, para no entrar a improvisar con imágenes, envíeme la tabla a [email protected] y le reviso la consulta. Favor en el asunto anotar la consulta.

Le envíe la base datos corregida a su correo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas