Hacer consulta Access con una suma acumulativa

Con1" sobre una tabla de datos de venta que tiene
como resultado las ventas de mis clientes del año por orden decreciente
(De mayor a menor venta)
Con1:
Cliente Ventas
---------------------------------
CLI0006 2000euros
CLI0013 1800euros
CLI0005 1500euros
... ...
... ...
Lo que quiero es tener en esta consulta una columna más donde tengo el acumulado de las ventas.
Con1:
Cliente Ventas acumulado
----------------------------------------------------
CLI0006 2000euros 2000euros
CLI0013 1800euros 3800euros
CLI0005 1500euros 5300euros
... ... ...
... ... ...
O hacer una segunda consulta sobre la primera para añadir dicho acumulado.

2 respuestas

Respuesta
1

Inserta un módulo en tu BD, y le pegas este código:

'----------------------------------------------------------------------'Función que calcula las ventas acumuladas'Creada por Sveinborn el 11/07/13'----------------------------------------------------------------------Public Function fncAcumulado(Cliente As String) As CurrencyDim rst As DAO.RecordsetSet rst = CurrentDb.OpenRecordset("Con1")fncAcumulado = 0If rst.RecordCount = 0 Then Exit Functionrst.MoveFirstDo Until rst.EOFfncAcumulado = fncAcumulado + rst("Ventas")If rst("Cliente") = Cliente Then Exit Dorst.MoveNextLoopEnd Function

Luego, en tu consulta con1, en vista diseño, le añades este campo:

Acumulado: fncAcumulado([Cliente])

Guardas los cambios y listo!

Una cosa: la función te deveulve un valor de tipo moneda, porque he supuesto que tu campo ventas es de tipo moneda. Si fuera de otro tipo, tendras que cambiar el encabezado de la funcion, para que el tipo de dato que devuelve coincide con el de tu campo ventas. Por ejemplo, si fuera numérico de tipo doble, te quedaría así:

Public Function fncAcumulado(Cliente As String) As Double

Respuesta
1

Disculpa la tardanza,

Según creo haber entendido creo que algo como esto te puede servir

select
    Clientes, 
    Ventas, 
    (Select sum(ventas) from con1 group by cliente ) as acumulado
from con1 order by ventas

esto vendría siendo una consulta sql anidada espero te sirva saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas