bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Formula na Consulta - Curva ABC

Fórmula na Consulta - Curva ABC

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

Usuário Rafael:

Boa Tarde.

Você pode me ajudar a encontrar o erro, pois quando rodo essa fórmula, o Microsoft Access trava!

Expr1: DSoma("Acumulado";"Ruptura consulta";[Acumulado] & ''<=[Acumulado])

O intuito desse cálculo é realizar a curva ABC, porém estou travado nessa soma acumulada.  A fórmula em questão fica executando e continua travando!  Estou lhe fornecendo um exemplo.

Suporte:

Rafael, segue o exemplo com a proposta de solução.  A idéia foi a de gerar uma tabela temporária, com base na consulta qryRuptura.  Usei a programação para calcular os campos Percentual e Acumulado, na tabela temporária.

Segue a programação completa utilizada:

Private Sub Comando0_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, "ruptura_tmp"

'Soma total de vendas
dblTotal = DSum("SomaDeVenda", "qryRuptura")

'Cria a tabela temporaria, com base na consulta qryRuptura
strSql = "SELECT * INTO ruptura_tmp FROM qryRuptura;"
CurrentDb.Execute strSql

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

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

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

A programação está no botão do formulário frmTeste.

Deixei para você inserir a classificação (A, B ou C) na tabela, através da programação proposta.

Usuário Rafael:

Bom dia Avelino,

Perfeito! Obrigado pela ajuda! Ficou excelente!

Download

 


 

 


1 comentário(s)

MARCIO MELO - RJ   19/03/2018 19:37:48

Formidável! Adorei a forma prática e rápida do código, ficou super didático e de fácil adaptação a filtros de datas para limitar os dados que desejamos. Fiquei surpreso com a quantidade de dados de exemplos que foram processados. Muita das vezes precisamos manipular as consultas em designer pelo VBA e sem ideia de como proceder, eis aqui mais um trabalho de amplo emprego.u

Sou mais Brasil!

Grato por compartilhar seu modelo, sua lógica didática...

Forte abraço! sempre acompanho suas listas...


Envie seu comentário: