Suma condicional en informe

Tengo una base de datos access en el que tengo una tabla llamada "3 Repostajes" en la que tengo varios campos pero los que me interesan son [unidades] y [s/n], una consulta llamada "Cálculos" en los que aparecen estos campos también y un informe llamado "Operario/mes/vehículo" en los que también aparecen estos campos. Bien el informe se crea con los datos de la consulta "Cálculos", dicho informe esta agrupado por operario, fecha y vehículo, y tengo:

1. Una formula en PIE DE VEHÍCULO =Suma([UNIDADES]) es decir me suma las unidades que ha gastado un vehículo en concreto.

2. Una formula en PIE DE FECHA =Suma([UNIDADES]) es decir me suma las unidades gastadas por mes el vehículo referenciado

3. Una formula en PIE DE OPERARIO =Suma([UNIDADES]) es decir me suma las unidades gastadas por el operario.

Bien pues yo necesito que aparezcan todas las unidades pero a la hora de sumar que solo me sume las que en el campo [s/n] tenga una "s".

1 respuesta

Respuesta
2

Te explico una manera de hacerlo:

En tu consulta añades un campo calculado en una columna vacía y le escribes la siguiente expresión:

SeCuenta: Iif([es/n]="s";1;0)

En tu informe, en vista diseño, añades, en la sección detalle ese nuevo campo. Puedes borrarle la etiqueta y lo sitúas en un rincón donde no moleste. Sacas sus propiedades y te vas a la Pestaña Formato -> Visible, y le fijas esa propiedad en NO.

A continuación, donde lo necesites del informe (menos en el pie de página, que no acepta campos de suma) añades un cuadro de texto y en su interior escribes:

=suma([SeCuenta])

En teoría debería funcionarte sin problemas. De todas maneras te aconsejo que, si lo consideras conveniente, hagas primero la prueba en una copia de tu BD.

Ya me dirás qué tal te ha ido.

Hola mira con esta fórmula =DSuma("Unidades";"cálculos";"[s/n]='s'") me suma el total de todas las unidades de mi consulta "CÁLCULOS" que en la columna S/N tienen una S pero....
en el informe tengo
ENCABEZADO OPERARIO
ENCABEZADO FECHA =Format$([FECHA];"mmmm aaaa";0;0)
ENCABEZADO VEHÍCULO
DETALLE: [FECHA] [UNIDADES] [S/N]
PIE VEHÍCULO aquí me suma las unidades por vehículo
PIE FECHA aquí me suma las unidades por fecha mes del vehículo anterior
PIE OPERARIO aquí me suma las unidades por operario
es decir que los resultados que me saldrían son
JUAN
Enero
0000BZY 119,02 unidades
Febrero
0000GJV 57,73 unidades
TOTAL JUAN 176,75 unidades
MARÍA
Enero
0000GJV 57,73 unidades
Febrero
0000BZY 50,80 unidades
TOTAL MARÍA 108,53 unidades
PEDRO
Enero
0000BZY 109,30 unidades
Febrero
0000BZY 60,52 unidades
TOTAL PEDRO 169,82 unidades

¿Y el problema está en?

Le estoy dando vueltas pero no acabo de entender cuál es el problema. ¿Me lo podrías clarificar un poco más.

Creo que se ha hecho la luz... (espero).

Entiendo que tu informe está basado en una consulta. Pues en esa consulta, que te debe dar (imagino) el detalle de todos los movimientos, en una columna vacía escribes:

SeCuenta: Iif([s/n]="s";[UNIDADES];0)

Ahora, en el informe en vista diseño, añades a la sección detalle el nuevo campo [SeCuenta]. Pruébalo primero siendo ese textbox visible y después poniendo su propiedad VISIBLE=NO.

Y ahora, en los pies de las diferentes agrupaciones del informe, añades un textbox con la fórmula:

=Suma([SeCuenta])

De esta manera el propio informe debería calcular por suma, en función de cada nivel de agrupación, los datos que te arroje individualmente cada registro de la sección Detalle.

Ya me dirás si te ha funcionado.

Pongo esto que me dices Iif([s/n]="s";[UNIDADES];0) y cuando abro la consulta me dice "la función lif no esta definida en la expresión

Échale un vistazo a esta miniBD y compara lo que yo he hecho en la consulta que hay con lo que tú estás intentando hacer: <a>http://www.filebig.net/files/iFx4mNRdGp</a>

Ya me comentarás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas