Access - Suma en informe condicionando varios campos

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Suma en informe condicionando varios campos

Publicado por Fernando (10 intervenciones) el 19/02/2024 13:48:20
Buenos días,

Tengo un access hecho en el que relleno en un formulario los campos de mi trabajo y compañeros para tener un informe detallado.

Tengo un campo llamado formador, el cual es el nombre de cada uno. Y tengo otro campo de los días en los que se realiza ese trabajo (1, 2 o 3).

Quiero un condicional que mire cual es el nombre del formador y lo compare con los días y me diga cuantas son las formaciones que ha realizado dependiendo de la cantidad de día, que irían en casillas distintas.

Os mando ejemplos de lo que tengo en la cabeza para que me podáis decir como hacerlo para que lo entienda access:

=SiInm([formador]="pepe")y([duracion]="1");suma([duracion]="1";"")
=SiInm([formador]="pepe")y([duracion]="2");suma([duracion]="2";"")
=SiInm([formador]="pepe")y([duracion]="3");suma([duracion]="3";"")

Gracias.
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

Suma en informe condicionando varios campos

Publicado por Anonimo (3316 intervenciones) el 19/02/2024 22:01:58
Se puede hacer, pero Access lo hace mas rápido con una consulta en lugar de tantas condiciones.

En una tabla(Formaciones) con formadores (texto) y días (numero, pero puede ser texto o el día de la semana).

Una consulta de agrupación, en la que se agrupa por formador y día, se cuentan los registros (contar = sumar unidades), la SQL quedaría así

1
2
3
SELECT Formador, Dia, Count(Formador) AS Suma
FROM Formaciones
GROUP BY Formador, Dia;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Suma en informe condicionando varios campos

Publicado por Fernando (10 intervenciones) el 21/02/2024 09:26:37
Gracias, pero perdona me pierdo en lo que me dices respecto en donde añado ese código.

Ya que en el campo que quiero que me haga la operación, que es un cuadro de texto, no me deja añadir código. Sólo me deja añadir expresión con su función.
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

Suma en informe condicionando varios campos

Publicado por Anonimo (3316 intervenciones) el 21/02/2024 13:29:25
Ese código es una SQL (una consulta) y para apreciar como funciona hay que seguir estos pasos:

.............................................................................
En una base de datos Access:
.- Menú superior, pestaña CREAR
.- En sus opciones DISEÑO DE CONSULTA
.- Cerrar la ventana para seleccionar origen (selección de una tabla)
.- En la esquina superior izquierda de la ventana aparece la opción SQL, bajo ella VER (click en el selector)
.- Aparecen dos opciones (VISTA SQL // VISTA DISEÑO) seleccionar VISTA SQL

En la ventana que se abre aparece SELECT; ===> borrarlo (o sobrescribirlo), pues en su lugar ha de ir el texto (las tres líneas publicadas pero sin los números).

Se copian las tres líneas (vale control +C) y pegarlas (control + v) y se modifica el nombre de la tabla (en mi ejemplo FORMACIONES) y los campos (en mi ejemplo FORMADORES y DIAS)
....................................................................................

Solo queda ejecutarla (en el menu superior el icono EJECUTAR) se mostraran los resultados en forma de tabla, agrupados por formador y día y en cada línea la cuenta/suma correspondiente.

Se puede utilizar como origen de datos para el informe y (en el informe) se puede recrear el orden de presentación de los datos o se puede exportar a Excel ....

No se necesita ningún calculo como origen en los cuadros de texto, y (posiblemente) ni informe haría falta (excepto para darle un aspecto mas atractivo y añadir datos como periodo, fechas .... a gusto del usuario final)

Las SQL se pueden ver en modo diseño y cualquier otra consulta guardada se puede ver en formato VISTA SQL (es una de las utilidades del generador grafico de consultas).

Se la puede guardar (solicitara un nombre) o para evitar que se borre por error o se la manipule, copiar el texto como origen de datos del informe/formulario o subinforme/subformulario (en la misma ubicación que normalmente ocupa el nombre de la tabla o consulta).

Otra forma de utilizar esa consulta (tras crearla) y deseando generar código en los cuadros de texto:

Para obtener los resultados parciales de cada combinación formador/día se utiliza una función de dominio (DLookup), en base al ejemplo:

1
=DLookup("Suma"; "[nombre de la consulta]"; "Formador = 'Pepe' AND Dia = 1")

Cambiando a Pepe por cada formador y 1 por cada tipo de cuenta a efectuar, Nota: si el concepto 'DIA' es numérico se escribe el numero, si es un texto se le añaden comillas simples (como se le añaden a 'Pepe').

La consulta puede ser mas completa, por ejemplo (en base a un campo de fecha) condicionarlo a que solo muestre un periodo semana, mes, año ...... o cualquier periodo libre econ clásico: (entre AA y BB) o (Mayor/igual que AA y Menor /igual a BB). pudiendo ser AA y BB datos de/en un formulario.

No es exactamente lo que has solicitado, es otra forma de hacer lo que se solicito que permite (en una sola ubicación) modificar los parámetros en lugar de hacerlo en todos y cada uno de los cuadros de texto y (además) hacer los cálculos con mayor eficiencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Suma en informe condicionando varios campos

Publicado por Fernando (10 intervenciones) el 21/02/2024 13:58:46
Muchas gracias.

Pero ya tengo una consulta creada para que me pregunte fecha de inicio simplemente con Como "*" & [Escribir Fecha: Año (aaaa) Mes (mm/aaaa) Día (dd/mm/aaaa) O todas las fechas (dejar en blanco)] & "*". De una base e datos que ví en internet. Y asi me ide en el informe.

Así que como inserto la SQL. He intentado varias formas pero da errores.
Te la muestro:

SELECT formaciones.[Fecha Inicio], formaciones.[Fecha 2], formaciones.[Fecha 3], formaciones.Formador, formaciones.Ubicación, formaciones.Duración, formaciones.Kilometraje, formaciones.Partes
FROM formaciones
WHERE (((formaciones.[Fecha Inicio]) Like "*" & [Escribir Fecha: Año (aaaa) Mes (mm/aaaa) Día (dd/mm/aaaa) O todas las fechas (dejar en blanco)] & "*"))
ORDER BY formaciones.[Fecha Inicio];
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

Suma en informe condicionando varios campos

Publicado por Anonimo (3316 intervenciones) el 21/02/2024 15:18:35
Comenzaremos por el principio.

Las SQLs o consultas pueden ser de varios tipos, de selección (como la que muestras) o mas avanzadas de agrupación (la que he planteado).

Las de selección admiten casi de todo, las de agrupación solo elementos que puedan ser agrupados (considerando 'agrupables' aquellos que sean comunes) y los necesarios para definir el conjunto a obtener (normalmente condiciones).

En ese conjunto de datos que planteas, creo que hay algunos 'no agrupables' o que de intentar agruparlos desvirtuarían las agrupaciones.

Si se añade la fecha de inicio/final (con la excepción de ser un condicional) se mostrarían todas la fechas y contará (fecha a fecha + formador a formador + tipo a tipo) su cuenta/suma.

La 'agrupación' se dispersaría si las ubicaciones fueran diversas (por cada agrupación, una nueva cuenta/suma) y al añadir el kilometraje y los partes ... en fin que poco quedaría por/para agrupar (comenzando por los días no repetidos).

Aun así la consulta de agrupación es valida, pero como información independiente o resumen del conjunto:

Suponiendo un informe 'agrupado' por formador, en cada grupo (formador) se visualizarán los días, localizaciones ... etc (esto es: la actual consulta) y en el pie de la agrupación los resultados (obtenidos con DLookup) de cada día (o el dato diferencial, por ejemplo: la ubicación....) y su suma/cuenta.

Para que ambas consultas se adaptasen al mismo periodo lo idóneo es que se utilice un formulario para obtener las fechas (se escribirían una sola vez) y un botón para lanzar (desde el formulario de toma de datos) el informe.

A la SQL de agrupación (tras modificarla con el nombre de la tabla y campos que corresponda) en su 'vista Diseño' se añade el campo de fecha, se modifica la opción 'Agrupar por' por 'Donde' y se hace referencia a los cuadros de texto del formulario de toma de datos (o se vuelve a escribir los mismos datos que en la otra), solo se ha de cambiar en el desplegable, el uso que se hace de ese campo/dato.

Un consejo, Los espacios en los nombres de los objetos (no en sus títulos o descripciones) no son acertados (exigirán los corchetes) si el espacio se sustituye por un guion bajo se obtendrá el mismo resultado (informa de para que se utiliza y es un 'nombre sin espacios ni corchetes').

Los informes son muy poderosos (no son dinámicos, esto es: son 'una foto' de los datos del instante en que se ejecuta) pero tiene cosa útiles de las que carecen los formularios, por ejemplo la suma continua (que probablemente se adecuaría al actual diseño).

Considerando que lo que se precisa es un 'resumen' del conjunto (además de los datos pormenorizados), quizás un subinforme basado en la consulta de agrupación (tras el pie de informe actual o en el pie de pagina) seria una opción asumible en lugar de utilizar la función de dominio DLookup).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Suma en informe condicionando varios campos

Publicado por Fernando (10 intervenciones) el 23/02/2024 11:59:02
Muchísimas gracias.

Pues iré estudiando para sacarle la información correcta aunque tenga que modificar la base de datos y/o plantearla de nuevo.
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
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Suma en informe condicionando varios campos

Publicado por Fernando (10 intervenciones) el 23/02/2024 13:36:10
Cuando tenga un poco de tiempo haré la base de datos correctamente como me indicas poco a poco.

De momento he utilizado la fórmula sumar sin condicional y para salir del paso me funciona en casillas distintas claro.
La curioso es que la tengo que multiplicar por -1 para que me cambio el valor a positivo.

=Suma(([Duración]="1") Y ([Formador]="pepe"))*"-1"
=Suma(([Duración]="2") Y ([Formador]="pepe"))*"-1"
=Suma(([Duración]="3") Y ([Formador]="pepe"))*"-1"


Gracias.
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

Suma en informe condicionando varios campos

Publicado por Anonimo (3316 intervenciones) el 23/02/2024 16:09:45
Una alternativa a esa multiplicación es utilizar la función ABS que devuelve el valor absoluto (sin signo)

ABS(1000) = 1000
ABS(-1000) = 1000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar