MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Dentro de um formulário fazer um cálculo em massa

    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 3/3/2021, 18:48

    Boa tarde Srs!

    Tenho esse código abaixo, que fica exclusivamente quando abro um item da lista. porém eu tenho vários itens nesta Lista, e tenho uma variação no L.M.E de forma mensal, semanal ou outro período.
    Depois de fazer tudo isso, preciso saber como posso fazer um comando pra recalcular todas as cartas, devo usar RecordSet?



    Function mpcalc()

    ' indices
    Me.sncus.Value = Me.snind * Me.estrskg
    Me.cucus.Value = Me.cuind * Me.cobrskg
    Me.agcus.Value = Me.agind * Me.pratrskg
    Me.pbcus.Value = Me.pbind * Me.churskg
    Me.sbcus.Value = Me.sbind * Me.antrskg
    ' total
    Me.mpva.Value = sncus + cucus + agcus + pbcus + sbcus

    End Function

    Function comumcalc()

    ' mao de obra
    Me.mdova.Value = mdocus + embva

    ' markup
    Me.markcus.Value = markind * mdova
    Me.markva.Value = markcus + mdova

    ' despesas financeiras
    Me.despcus.Value = despind * markva
    Me.despva.Value = despcus + markva

    ' impostos
    Me.impcus.Value = (despva / (1 - impind)) - despva
    Me.impva.Value = impcus + despva

    ' encargos financeiros
    Me.finacus.Value = finaind * impva
    Me.finava.Value = finacus + impva

    ' frete
    Me.freva.Value = frecus + finava

    ' preço de venda
    Me.preçova.Value = freva

    End Function

    ' CALCULADORA DE CUSTOS
    ' ==================================
    Private Sub btn_calcular_Click()

    If IsNull(Me.tipocalc) = True Then
    MsgBox "Produto sem Tipo de Cálculo definido." & vbCrLf & vbCrLf & "Administração do Sistema > Produtos", vbCritical, "Sistema"
    Exit Sub

    ' SOLDA EM BARRA

    ElseIf Me.tipocalc.Value = 1 Then

    ' esvaziar campos
    Me.fluind.Value = Empty
    Me.flucus.Value = Empty
    Me.fluva.Value = Empty
    Me.flupc.Value = Empty

    Me.fioind.Value = Empty
    Me.fiocus.Value = Empty
    Me.fiova.Value = Empty
    Me.fiopc.Value = Empty

    Me.mfluxind.Value = Empty
    Me.mfluxcus.Value = Empty
    Me.mfluxva.Value = Empty
    Me.mfluxpc.Value = Empty

    Me.ligaind.Value = Empty
    Me.ligava.Value = Empty

    Me.embconv.Value = Empty
    Me.cmpva.Value = Empty

    ' chamar fução para calcular materia prima
    Call mpcalc

    ' embalage
    Me.embva.Value = embcus + mpva

    ' chamar função de calculos comuns
    Call comumcalc

    ' calcular % de custo
    On Error Resume Next
    Me.mppc.Value = mpva / preçova
    Me.embpc.Value = embcus / preçova
    Me.mdopc.Value = mdocus / preçova
    Me.markpc.Value = markcus / preçova
    Me.desppc.Value = despcus / preçova
    Me.imppc.Value = impcus / preçova
    Me.finapc.Value = finacus / preçova
    Me.frepc.Value = frecus / preçova
    Me.preçopc.Value = mppc + embpc + mdopc + markpc + desppc + imppc + finapc + frepc

    ' SOLDA EM FIO

    ElseIf Me.tipocalc.Value = 2 Then

    ' esvaziar campos
    Me.mfluxind.Value = Empty
    Me.mfluxcus.Value = Empty
    Me.mfluxva.Value = Empty
    Me.mfluxpc.Value = Empty

    Me.ligaind.Value = Empty
    Me.ligava.Value = Empty

    Me.embconv.Value = Empty
    Me.cmpva.Value = Empty

    Me.mppc.Value = Empty

    ' chamar fução para calcular materia prima
    Call mpcalc

    ' fluxo
    Me.fluva.Value = mpva + flucus

    ' fio
    Me.fiocus.Value = fioind * fluva
    Me.fiova.Value = fiocus + fluva

    ' embalagem
    Me.embva.Value = embcus + fiova

    ' chamar função de calculos comuns
    Call comumcalc

    ' calcular % de custo
    On Error Resume Next
    Me.fiopc.Value = fiova / preçova
    Me.embpc.Value = embcus / preçova
    Me.mdopc.Value = mdocus / preçova
    Me.markpc.Value = markcus / preçova
    Me.desppc.Value = despcus / preçova
    Me.imppc.Value = impcus / preçova
    Me.finapc.Value = finacus / preçova
    Me.frepc.Value = frecus / preçova
    Me.preçopc.Value = fiopc + embpc + mdopc + markpc + desppc + imppc + finapc + frepc

    ' SOLDA EM PASTA

    ElseIf Me.tipocalc.Value = 3 Then

    ' esvaziar campos
    Me.fluind.Value = Empty
    Me.flucus.Value = Empty
    Me.fluva.Value = Empty
    Me.flupc.Value = Empty

    Me.fioind.Value = Empty
    Me.fiocus.Value = Empty
    Me.fiova.Value = Empty
    Me.fiopc.Value = Empty

    Me.mppc.Value = Empty

    ' chamar fução para calcular materia prima
    Call mpcalc

    ' mflux %
    Me.mfluxcus.Value = mfluxind * dolar * 45

    ' liga lme
    Me.ligava.Value = mfluxcus + mpva

    ' industrial powder
    Me.powcus.Value = powind * dolar
    Me.powva.Value = powcus + ligava

    ' embalage
    Me.embcus.Value = embconv * dolar
    Me.embva.Value = powva + embcus

    ' CMP Embalagem USD
    Me.cmpva.Value = embva / dolar

    ' chamar função de calculos comuns
    Call comumcalc

    ' calcular % de custo
    On Error Resume Next
    Me.powpc.Value = powva / preçova
    Me.embpc.Value = embcus / preçova
    Me.mdopc.Value = mdocus / preçova
    Me.markpc.Value = markcus / preçova
    Me.desppc.Value = despcus / preçova
    Me.imppc.Value = impcus / preçova
    Me.finapc.Value = finacus / preçova
    Me.frepc.Value = frecus / preçova
    Me.preçopc.Value = powpc + embpc + mdopc + markpc + desppc + imppc + finapc + frepc

    End If

    MsgBox "Cálculo realizado com sucesso.", vbInformation, "Sistema"
    End Sub
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 4/3/2021, 20:16

    up!
    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 875
    Registrado : 11/11/2009

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  scandinavo 5/3/2021, 14:33

    Não encontrei este código no banco que você já disponibilizou
    Em qual formulário está?
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 5/3/2021, 19:23

    scandinavo, vou te mandar a outra parte do projeto.

    coloque a explicação dentro do formulário principal.
    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 875
    Registrado : 11/11/2009

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  scandinavo 8/3/2021, 12:19

    Duvidas.

    1"eu preciso alterar o LME das cartas, e recalcular os valores de todos os itens daquele período."

    qual o nome da tabela que você quer alterar os preços

    2"Tenho a tabela LME que lanço conforme a alteração da moeda dolar ou dos valores das materias primas.

    A cada nova atualização do LME eu preciso recalcular os itens das cartas, porém pra eu ter um histórico dos valores eu faço o seguinte

    primeiro eu crio um período na tabela períodos, depois eu copio as cartas para esse novo período."

    qual o frm que você utiliza para isto.

    3 Você já tem um form para fazer a alteração do LME das cartas


    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 8/3/2021, 12:53

    Duvidas.

    1"eu preciso alterar o LME das cartas, e recalcular os valores de todos os itens daquele período."

    qual o nome da tabela que você quer alterar os preços

    R= Na tela Frm_CBD_Alt_Item_Alt que é onde recalcula itens manualmente, a Fonte de Registro é uma consulta, onde eu pego o LME da Tabela Tbl_LME, e os outros campos é da tabela tbl_gerarcbd_corpo onde fica os valores que necessitam ser recalculados.

    scandinavo, lembrando que isso é apenas 1 dos 4 tipos de calculos que terei que fazer, por isso inventei esse negócio de Job, tipo pra fazer um IF

    If job.name Then
    Calculo1
    ElseIf job.name Then
    calculo 2
    e assim por diante... pra não tá criando caixa de seleção ou outra coisa do tipo


    2"Tenho a tabela LME que lanço conforme a alteração da moeda dolar ou dos valores das materias primas.

    A cada nova atualização do LME eu preciso recalcular os itens das cartas, porém pra eu ter um histórico dos valores eu faço o seguinte

    primeiro eu crio um período na tabela períodos, depois eu copio as cartas para esse novo período."

    qual o frm que você utiliza para isto.

    Eu tenho um form mas ainda não conseguir acertar o INSERT INTO que é apenas pra ele pegar os valores da tbl_gerarcbd_corpo é jogar nela mesma porém alterando o campo para o período selecionado...

    3 Você já tem um form para fazer a alteração do LME das cartas

    esse não tenho =/ mas a tela de alteração é basicamente a mesma de copias, só que será um UPDATE, apenas do campo LME.

    acredito que é essa hora que deveria ser recalculado ou algo assim....
    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 875
    Registrado : 11/11/2009

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  scandinavo 8/3/2021, 14:25

    Está um pouco mais complicado do que imaginei kkkkkkk, mas tem solução só basta a gente se entender.
    Me envie no privado seu e-mail vai ser mais fácil a comunicação.

    mfmaiafilho gosta desta mensagem

    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 8/3/2021, 16:52

    boa tarde scandinavo ^^ eu sou um aprendiz em access, as vezes posto alguma coisa aqui pq realmente já tentei fazer de todas as formas dentro das minhas possibilidades e não consegui.

    te enviei no privado.
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 11/3/2021, 19:25

    consegui utilizando recordset

    Obrigado Scandinavo
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2774
    Registrado : 22/11/2016

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  DamascenoJr. 12/3/2021, 01:10

    No fim, seria bom expor a forma como foi resolvido.

    Já pensou se todos os tópicos fossem resolvidos apenas no privado? Pois é...


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    mfmaiafilho
    mfmaiafilho
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 370
    Registrado : 02/08/2018

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  mfmaiafilho 16/3/2021, 14:54

    claro mestre aqui está

    ' RECALCULAR TODAS AS CARTAS

    Private Sub btn_recalcular_Click()
    Dim rs As Recordset
    Dim rst As Recordset
    Dim rt As Recordset

    ' RECORD SET PARA SOLDA EM BARRAS
    'On Error GoTo Trata_Err
    Set rs = CurrentDb.OpenRecordset("QryMain_Adm_AlterarLME_Recalcular")
    rs.MoveFirst
    Do While Not rs.EOF
    With rs
    rs.Edit
    If rs!jobs.Value = 1 Then
    ' indices
    rs!sncus.Value = rs!snind * rs!estrskg
    rs!cucus.Value = rs!cuind * rs!cobrskg
    rs!agcus.Value = rs!agind * rs!pratrskg
    rs!pbcus.Value = rs!pbind * rs!churskg
    rs!sbcus.Value = rs!sbind * rs!antrskg
    rs!mpva.Value = rs!sncus + rs!cucus + rs!agcus + rs!pbcus + rs!sbcus
    ' meio do calculo
    rs!embva.Value = rs!embcus + rs!mpva
    ' fim do calculo
    rs!mdova.Value = rs!mdocus + rs!embva
    rs!markcus.Value = rs!markind * rs!mdova
    rs!markva.Value = rs!markcus + rs!mdova
    rs!despcus.Value = rs!despind * rs!markva
    rs!despva.Value = rs!despcus + rs!markva
    rs!impcus.Value = (rs!despva / (1 - rs!impind)) - rs!despva
    rs!impva.Value = rs!impcus + rs!despva
    rs!finacus.Value = rs!finaind * rs!impva
    rs!finava.Value = rs!finacus + rs!impva
    rs!freva.Value = rs!frecus + rs!finava
    rs!preçova.Value = rs!freva

    'On Error Resume Next
    rs!mppc.Value = rs!mpva / rs!preçova
    rs!embpc.Value = rs!embcus / rs!preçova
    rs!mdopc.Value = rs!mdocus / rs!preçova
    rs!markpc.Value = rs!markcus / rs!preçova
    rs!desppc.Value = rs!despcus / rs!preçova
    rs!imppc.Value = rs!impcus / rs!preçova
    rs!finapc.Value = rs!finacus / rs!preçova
    rs!frepc.Value = rs!frecus / rs!preçova
    rs!preçopc.Value = rs!mppc + rs!embpc + rs!mdopc + rs!markpc + rs!desppc + rs!imppc + rs!finapc + rs!frepc
    End If
    rs.Update
    rs.MoveNext
    End With
    Loop
    Set rs = Nothing

    ' RECORD SET PARA SOLDA EM FIOS
    'On Error GoTo Trata_Err
    Set rst = CurrentDb.OpenRecordset("QryMain_Adm_AlterarLME_Recalcular")
    rst.MoveFirst
    Do While Not rst.EOF
    With rst
    rst.Edit
    If rst!jobs.Value = 2 Then
    ' indices
    rst!sncus.Value = rst!snind * rst!estrskg
    rst!cucus.Value = rst!cuind * rst!cobrskg
    rst!agcus.Value = rst!agind * rst!pratrskg
    rst!pbcus.Value = rst!pbind * rst!churskg
    rst!sbcus.Value = rst!sbind * rst!antrskg
    rst!mpva.Value = rst!sncus + rst!cucus + rst!agcus + rst!pbcus + rst!sbcus
    ' meio do calculo
    rst!fluva.Value = rst!mpva + rst!flucus
    rst!fiocus.Value = rst!fioind * rst!fluva
    rst!fiova.Value = rst!fiocus + rst!fluva
    rst!embva.Value = rst!embcus + rst!fiova
    ' fim do calculo
    rst!mdova.Value = rst!mdocus + rst!embva
    rst!markcus.Value = rst!markind * rst!mdova
    rst!markva.Value = rst!markcus + rst!mdova
    rst!despcus.Value = rst!despind * rst!markva
    rst!despva.Value = rst!despcus + rst!markva
    rst!impcus.Value = (rst!despva / (1 - rst!impind)) - rst!despva
    rst!impva.Value = rst!impcus + rst!despva
    rst!finacus.Value = rst!finaind * rst!impva
    rst!finava.Value = rst!finacus + rst!impva
    rst!freva.Value = rst!frecus + rst!finava
    rst!preçova.Value = rst!freva

    'On Error Resume Next
    rst!fiopc.Value = rst!fiova / rst!preçova
    rst!embpc.Value = rst!embcus / rst!preçova
    rst!mdopc.Value = rst!mdocus / rst!preçova
    rst!markpc.Value = rst!markcus / rst!preçova
    rst!desppc.Value = rst!despcus / rst!preçova
    rst!imppc.Value = rst!impcus / rst!preçova
    rst!finapc.Value = rst!finacus / rst!preçova
    rst!frepc.Value = rst!frecus / rst!preçova
    rst!preçopc.Value = rst!fiopc + rst!embpc + rst!mdopc + rst!markpc + rst!desppc + rst!imppc + rst!finapc + rst!frepc
    End If
    rst.Update
    rst.MoveNext
    End With
    Loop
    Set rst = Nothing

    ' RECORDSET PARA SOLDA EM PASTSA
    'On Error GoTo Trata_Err
    Set rt = CurrentDb.OpenRecordset("QryMain_Adm_AlterarLME_Recalcular")
    rt.MoveFirst
    Do While Not rt.EOF
    With rt
    rt.Edit
    If rt!jobs.Value = 3 Then
    ' indices
    rt!sncus.Value = rt!snind * rt!estrskg
    rt!cucus.Value = rt!cuind * rt!cobrskg
    rt!agcus.Value = rt!agind * rt!pratrskg
    rt!pbcus.Value = rt!pbind * rt!churskg
    rt!sbcus.Value = rt!sbind * rt!antrskg
    rt!mpva.Value = rt!sncus + rt!cucus + rt!agcus + rt!pbcus + rt!sbcus
    ' meio do calculo
    rt!mfluxcus.Value = rt!mfluxind * rt!dolar * 45
    rt!ligava.Value = rt!mfluxcus + rt!mpva
    rt!powcus.Value = rt!powind * rt!dolar
    rt!powva.Value = rt!powcus + rt!ligava
    rt!embcus.Value = rt!embconv * rt!dolar
    rt!embva.Value = rt!powva + rt!embcus
    rt!cmpva.Value = rt!embva / rt!dolar
    ' fim do calculo
    rt!mdova.Value = rt!mdocus + rt!embva
    rt!markcus.Value = rt!markind * rt!mdova
    rt!markva.Value = rt!markcus + rt!mdova
    rt!despcus.Value = rt!despind * rt!markva
    rt!despva.Value = rt!despcus + rt!markva
    rt!impcus.Value = (rt!despva / (1 - rt!impind)) - rt!despva
    rt!impva.Value = rt!impcus + rt!despva
    rt!finacus.Value = rt!finaind * rt!impva
    rt!finava.Value = rt!finacus + rt!impva
    rt!freva.Value = rt!frecus + rt!finava
    rt!preçova.Value = rt!freva

    On Error Resume Next
    rt!powpc.Value = rt!powva / rt!preçova
    rt!embpc.Value = rt!embcus / rt!preçova
    rt!mdopc.Value = rt!mdocus / rt!preçova
    rt!markpc.Value = rt!markcus / rt!preçova
    rt!desppc.Value = rt!despcus / rt!preçova
    rt!imppc.Value = rt!impcus / rt!preçova
    rt!finapc.Value = rt!finacus / rt!preçova
    rt!frepc.Value = rt!frecus / rt!preçova
    rt!preçopc.Value = rt!powpc + rt!embpc + rt!mdopc + rt!markpc + rt!desppc + rt!imppc + rt!finapc + rt!frepc
    End If
    rt.Update
    rt.MoveNext
    End With
    Loop
    Set rt = Nothing
    Me.FrmSubMain.Requery
    MsgBox "Cálculos realizados com sucesso.", vbInformation, "SQL"
    Exit Sub

    Trata_Err:
    Call ErrSQL
    Exit Sub
    End Sub

    Conteúdo patrocinado

    [Resolvido]Dentro de um formulário fazer um cálculo em massa Empty Re: [Resolvido]Dentro de um formulário fazer um cálculo em massa

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 17/5/2021, 14:09