Access - DSum acumulado con criterios

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

DSum acumulado con criterios

Publicado por speech9 (4 intervenciones) el 18/02/2020 13:10:01
Buenos días,
Estoy intentando realizar una consulta acumulada para que vaya sumando el saldo de un material. He visto por los foros varias soluciones pero no consigo que me funcione ninguna con los criterios que necesito. Resumiendo un poco tengo las tablas Material (ID_material, descripción) y Unidades (ID_unidades, ID_material, cantidad), al realizar la consulta pretendo que me salga un campo con el saldo acumulado por cada ID de material.

ID_material, descripción, ID_unidades, Cantidad, SaldoAcumulado
1, Mat1, 1, 200, 200
2, Mat2, 2, 5, 5
1, Mat1, 3, 140, 340
2, Mat2, 4, 25, 30
1, Mat1, 5, 40, 380

Lo he conseguido resolver con una sentencia SQL dentro de la consulta pero no me admite sacarlo a informe (No se permite la cláusula GROUP BY de múltiples niveles en una subconsulta)

SaldoAcumulado: (select sum([cantidad]) from [unidades] as temp where [temp].[id]<=[ unidades].[id] And [temp].[id_unidades]=[ unidades].[id_unidades])

por lo que necesitaría hacer lo mismo con DSum o buscar una alternativa.

SaldoAcumulado: DSuma("cantidad";" unidades";" unidades.id_unidades =" & [unidades].[id_unidades])

Con esto otro obtengo el sumatorio total de cada artículo pero no el acumulado, y al agregarle otra cláusula me da la suma total de todos los artículos.
Si alguien me puede orientar por favor,

Gracias, un saludo.
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

DSum acumulado con criterios

Publicado por Anonimo (3316 intervenciones) el 18/02/2020 13:57:34
Si se dispone de una consulta que devuelve ese dato para poder utilizarlo como un total solo hay que utilizar la función DLookup utilizando como dominio la consulta,

Original:
(select sum([cantidad]) from [unidades] as temp where [temp].[id]<=[ unidades].[id] And [temp].[id_unidades]=[ unidades].[id_unidades])


Tomando como referente la consulta (y asumiendo que se llamase AXZS) seria algo como:

= DLookup("temp"; "AXZS")

Utilizar de forma recurrente las funciones de dominio puede provocar lentitud en la aplicación, los informes permiten las sumas continuas, se pueden hacer con datos invisibles y utilizarlos donde se necesiten (pies de grupo, pagina, informe …..) suele ser un método bastante efectivo y rápido cuando se puede aplicar.
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