Ajuda com Soma Acumulada !!!

Moderador: Avelino Sampaio

leandroandrea07
Mensagens: 97
Registrado em: 02 Mai 2016, 18:06

Ajuda com Soma Acumulada !!!

Mensagempor leandroandrea07 » 14 Mar 2017, 16:22

Boa tarde,

preciso do acumulado dos campos "Percentual" nas consultas "qryTotalQtd" e "qryTotalValor", mas não consigo uma forma de calcular via formula.
É possível fazer por formula, ou só via programação ? Como seria via programação ?

Como podem ver, criei uma função (SomaValor) com o Dsum() das colunas "Qtd" e "Valor", para poder calcular o "Percentual", mas estou com o erro anexo:

Capturar.PNG
Capturar.PNG (15.57 KiB) Visto 31 vezes


A ideia é calcular a curva ABC, usando esse acumulado.


Alguém tem alguma sugestão ?


Grato

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


leandroandrea07
Mensagens: 97
Registrado em: 02 Mai 2016, 18:06

Re: Ajuda com Soma Acumulada !!!

Mensagempor leandroandrea07 » 20 Mar 2017, 12:43

Bom dia,

Achei aqui no fórum um código do Avelino, que adaptado ao bd funcionou perfeitamente:

Código:
Private Sub btValor_Click()

Dim dblTotal As Double
Dim rs As DAO.Recordset
Dim bd As DAO.Database
Dim prp As DAO.Property
Dim strSql As String
Dim dblAcumulado As Double

On Error Resume Next

'Deleta a tabela temporaria
DoCmd.DeleteObject acTable, "CurvaValor"

'Soma total de vendas
dblTotal = DSum("Total", "qryTotalValor")

'cria a tabela temporaria com base na consulta qryRuptura
strSql = "SELECT * INTO CurvaValor FROM qryTotalValor;"
CurrentDb.Execute strSql

'Altera o formato do campo Percentual para porcentagem
Set bd = CurrentDb
Set prp = bd.TableDefs("CurvaValor").Fields("Percentual"). _
CreateProperty("Format", dbText, "Percent")
bd.TableDefs("CurvaValor").Fields("Percentual").Properties.Append prp

'Altera o formato do campo Acumulado para porcentagem
Set prp = bd.TableDefs("CurvaValor").Fields("Acumulado"). _
CreateProperty("Format", dbText, "Percent")
bd.TableDefs("CurvaValor").Fields("Acumulado").Properties.Append prp

'abra a tabela temporaria ruptura_tmp e realiza os cálculos
Set rs = CurrentDb.OpenRecordset("CurvaValor")
Do While Not rs.EOF
rs.Edit
rs!Percentual = rs!Total / dblTotal
rs!acumulado = dblAcumulado + (rs!Total / dblTotal)
rs.Update
dblAcumulado = rs!acumulado
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'Abre a tabela temporaria
DoCmd.OpenTable "CurvaValor"
End Sub



Agora tenho outro problema. Tenho em uma coluna (Classe), tenho diversas classificações de item, a teria que realizar o Acumulado de acordo com cada classificação.

Pensei em realizar uma consulta separando cada "Classe" e depois realizar o calculo de cada consulta, mas são mais de 50 Classes.

Alguem tem alguma sugestão ?

Grato


Voltar para “Consultas”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante