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

Adquira a assinatura vitalícia do site e passe a ter acesso aos arquivos exemplos, vídeos, revistas, livros e ao kit de montagem de ribbons. Você terá suporte por e-mail, caso necessite tirar dúvidas pontuais. Clique AQUI e veja como obter um dos nossos planos. Clique AQUI e faça uma visita a seção Downloads do site e verifique as centenas de arquivos que estará à sua disposição. Clique AQUI e faça uma visita a seção Vídeos do site e veja a lista que estará disponível ao se tornar o nosso assinante vitalício. Clique AQUI e saiba mais detalhes sobre o kit de montagem de ribbons (deixe seus aplicativos com aspecto profissional).

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: