joaomarcosferlinibento 20/8/2014, 15:47
Então, no meu caso, não pode ser formulário contínuo, pois tenho dois subformulários que tem dados que são atualizados conforme muda o produto e para que o cálculo do preço médio seja efetuado. Mas escrevendo este post, CONSEGUI RESOLVER, corrigindo a lógica e assim ele calcula o preço médio.
- Código:
If MsgBox("Deseja Cálcular o Preço Médio de todos os Produtos? (Esta Ação não poderá ser revertida!)", vbYesNo, "Cálculo de Preço Médio para Todos os Produtos!") = vbYes Then
For Contador = bytIni To Val(QtdTotalProd)
'Vaipara o primeiro Registro
If Contador = 1 Then
DoCmd.RunMacro "IrParaPrimeiroRegisro"
'Cálcula o Preço Médio
Me.PreçoMédio = Me.PreçoMédioAtual
'Conta a quantidade de produtos atualizados
Totalprodatual = Totalprodatual + 1
'DoCmd.RunMacro "PararMacro"
DoCmd.RunMacro "IrParaPróximoRegistro"
DoCmd.RunMacro "SalvarRegistro"
Else
'Cálcula o Preço Médio
Me.PreçoMédio = Me.PreçoMédioAtual
'Conta a quantidade de produtos atualizados
Totalprodatual = Totalprodatual + 1
'DoCmd.RunMacro "PararMacro"
DoCmd.RunMacro "IrParaPróximoRegistro"
DoCmd.RunMacro "SalvarRegistro"
End If
Next 'Contador
MsgBox "Foram atualizados " & Totalprodatual & " produtos!", vbInformation, "Ops!"
Else
MsgBox "Nenhum produto foi atualizado!", vbInformation, "Cálculo de Preço Médio para Todos os Produtos!"
End If
End Sub
A explicação para código, é a seguinte:
Ao iniciar a execução do código, no formulário existe um campo chamado "QtdProd" que conta a quantidade de produtos que existem cadastrados. A validação do Loop, inicia do 1 até a o valor do campo "QtdProd". (Ex.: "Se tiver 100 produtos cadastrados, ele executará o código 100 vezes!")
Ao passar pelo "For" (Laço de repetição), temos então os cálculos.
1º - Confere a quantidade de compras do produto selecionado.
2º - Soma o preço unitário do produto selecionado.
3º - Calcula o preço unitário (Soma total do preço unitário DIVIDIDO pela quantidade comprada).
A cada nova repetição, o código de repete, formando o preço médio do produto.
As MACROS: IrParaPrimeiroRegistro, IrParaPróximoRegistro e SalvarRegistro, é para começar no primeiro produto, e avançar conforme for atualizando os preços médios dos produtos.