Access 2010 - Consulta que me genere un informe semestral

Estoy haciendo una base de datos con muchas tablas y consultas. Armé algunas consultas de referencias cruzadas para contar registros mensuales, trimestrales y anual. El problema es que necesito hacer la misma consulta pero que me dé el informe semestral y no está en el asistente esta posibilidad. ¿Alguien podría ayudarme?

1 Respuesta

Respuesta
1

Hasta donde yo conozco, las funciones integradas en Access no contemplan la posibilidad de sacar los semestres.

Ahora bien, lo puedes sacar fácilmente usando las funciones Mes() y SiInm():

SiInm(Mes(CampoFecha)<7;"1º Semestre";"2º Semestre")

En tu caso, para las consultas de referencias cruzadas, puedes probar esto:

1º/ Coge una consulta que tengas trimestral y la copias

2º/ Abres esa copia en vista diseño

3º/ Localizas la columna que te agrupa por trimestres, que será algo así:

"Trimestre " & Format([CampoFecha];"t")

4º/ Lo cambias por esto:

"Semestre " & SiInm(Mes([CampoFecha])<7;1;2)

A ver si te funciona, porque no lo probé, pero es lo único que se me ocurre.

¡Gracias! Como de costumbre, tu respuesta es exacta. Muchísimas gracias, funcionó perfecto.

De nuevo yo, esto es lo último que me falta por resolver. En esta consulta semestral que funciona a las mil maravillas, como puedo hacer para que me pida el año del semestre que quiero calcular?

Nuevamente muchas gracias, no voy a dejar de decirlo. Espero me puedas ayudar.

Esta es la forma de hacerlo:

1º/ Abre tu consulta de ref. Cruzadas en vista diseño y cambia a vista SQL

2º/Antes del TRANSFORM... inserta esto:

PARAMETERS [TECLEA EL AÑO] INTEGER;

Es decir, la palabra PARAMETERS, entre corchetes el texto que le quieras dar al parámetro (el que te pedirá) y el tipo de dato, en este caso un número entero (el año). Asegúrate de terminar con un punto y coma (;)

Te quedará algo de este estilo:

PARAMETERS [Teclea Año] Long;
TRANSFORM Count([1B1-AUDITORIA_PROGRAMADA].ACTIVIDAD) AS CuentaDeACTIVIDAD
SELECT [1B1-AUDITORIA_PROGRAMADA].CODIGO_RNOS, Count([1B1-AUDITORIA_PROGRAMADA].ACTIVIDAD) AS [Total de ACTIVIDAD]
FROM [1B1-AUDITORIA_PROGRAMADA]
WHERE (((Year([FECHA_CUDAP]))=[Teclea Año]))
GROUP BY [1B1-AUDITORIA_PROGRAMADA].CODIGO_RNOS
PIVOT "Trimestre " & Format([FECHA_AUDITORIA],"q");

3º/ Vuelve a la vista diseño de la consulta, y en una columna nueva, añades el filtro que vas a aplicar, de la siguiente manera:

a) En la fila correspondiente a Campo, pones Año(CampoFecha)

b) En la correspondiente a Total, pones Dónde

c) En la correspondiente a Criterios, le pones exáctamente lo que pusiste a continuación del PARAMETERS.

4º/ Guardas la consulta y listo.

Hola, digamos que no me da ningún error, pero ahora me aparece en el nombre de la columna la palabra "Semestre q" y me cuenta exactamente lo mismo que todo el año. Es decir, me muestra una columna con el Total y otra con el Semestre, pero los números son los mismos, es decir, no está contando como lo hacía antes discriminando los números del semestre.

Por otro lado, cuando voy a la vista diseño, ya está armado el campo que describes en el punto 3.

Tiene en cuenta que yo cambié la palabra "Trimestre " por "Semestre " en PIVOT, ya que hice la consulta para el semestre, supongo que para el trimestre es lo mismo, pero poniéndolo como tu me lo escribes.

En la consulta en el encabezado de columna sigue estando la columna con "Semestre " & SiInm(Mes([FECHA_CUDAP]),"q")

Te paso el código adaptado a mis campos y mi consulta a ver que escribí mal:

PARAMETERS [INGRESE EL AÑO QUE DESEA CONSULTAR] Long;

TRANSFORM Count([1B2-AUDITORIAS INDUCIDA].Nro_CUDAP) AS CuentaDeNro_CUDAP

SELECT [1B2-AUDITORIAS INDUCIDA].CODIGO_RNOS, Count([1B2-AUDITORIAS INDUCIDA].Nro_CUDAP) AS [Total de Nro_CUDAP]

FROM [1B2-AUDITORIAS INDUCIDA]

WHERE (((Year([FECHA_CUDAP]))=[INGRESE EL AÑO QUE DESEA CONSULTAR]))

GROUP BY [1B2-AUDITORIAS INDUCIDA].CODIGO_RNOS

PIVOT "Semestre " & IIf(Month([FECHA_CUDAP]),"q");

MUCHAS GRACIAS

La SQL que te puse era sólo un ejemplo, para que vieras cómo quedaba la parte del PARAMETERS, no era la solución a tu problema, obviamente, pues no sé cómo es tu consulta... :)

Por lo que veo, la consulta funciona correctamente, hace lo que le pides, pero no te agrupa por semestre porque ésta: IIf(Month([FECHA_CUDAP]),"q"), no es la expresión que devuelve el semestre, sino que devuelve sólo la letra q. La expresión del semestre la tienes en la primera respuesta, y lo único que has de hacer es seguir los pasos que te indicaba ayer sobre la consulta original.

Hola, yo seguí los pasos, pero no encuentro la expresión para la consulta del semestre. Guiándome con tu respuesta que me dices en la respuesta del semestre de ayer, fui a buscar tu respuesta anterior e ingresé esto: "Semestre " & SiInm(Mes([FECHA_CUDAP])<7;1;2) pero me dice que hay un Error de sintáxis.

Con mucha vergüenza te pido, podrás ponerme el código????

Estuve mirando la consulta y veo que solo me muestra la columna del 1º semestre y no la del 2º. Tal vez esté allí el error?

La consulta tienes que hacerla como de la otra vez (dices que te funcionaba) así que no entiendo que ahora te de un error de sintaxis...

Esta es la SQL que necesitas (cópiala y pégala en la vista SQL de tu consulta):

PARAMETERS [INGRESE EL AÑO QUE DESEA CONSULTAR] Long;
TRANSFORM Count([1B2-AUDITORIAS INDUCIDA].Nro_CUDAP) AS CuentaDeNro_CUDAP
SELECT [1B2-AUDITORIAS INDUCIDA].CODIGO_RNOS, Count([1B2-AUDITORIAS INDUCIDA].Nro_CUDAP) AS [Total de Nro_CUDAP]
FROM [1B2-AUDITORIAS INDUCIDA]
WHERE (((Year([FECHA_CUDAP]))=[INGRESE EL AÑO QUE DESEA CONSULTAR]))
GROUP BY [1B2-AUDITORIAS INDUCIDA].CODIGO_RNOS
PIVOT "Semestre " & IIf(Month([FECHA_CUDAP])<7,1,2);

El error de sintaxis está en que los separadores de la función SiInm (o IIF) es la coma y no es punto y coma si lo escribes en SQL, y si lo escribes en la vista diseño dela consulta, depende de la configuración de tu versión de Access.

En cuanto a que sólo te sale el primer semestre seguro al 100% que es porque no tienes datos para el segundo..., compruébalo y verás, je je

¡Gracias! Ya no sé de que manera darte las gracias, funciona perfectamente, ahora me falta solo resolver lo del título en los diferentes informes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas