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


2 participantes

    [Resolvido]Erro divisão por Zero VBA

    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 21/2/2013, 14:25

    Ôla amigos,

    Estou precisando de uma força.

    Tenho um formulário de nome (frmEst_Custos) que ao informar o ano e o mes e clicar no butão consultar,
    desejo que os valores sejam atualizados e mostre o percentual de custo.

    O erro apresentado é o seguinte:

    Ao informar um Ano e um Mês onde existem valores, por exemplo ano 2012 e mês 12 o erro apresentado é Divisão por ZERO.

    Ao informar um Ano e um Mês onde não existem valores, por exemplo ano 2010 e mês 12 o erro apresentado é Uso de 'Null' inválido.

    Veja o código utilizado no evento ao clicar do butão:

    Private Sub btFiltrar_Click()
    Dim dblTotalCusto As Double
    Dim dblTotalCarga As Double
    Dim j As Boolean, Filtro As String
    If IsNull(Me!txAno) Then j = True
    If IsNull(Me!txMes) Then j = True
    If j = True Then
    MsgBox "Preencha todos os campos...", vbInformation, "Aviso"
    Me!txAno.SetFocus
    Exit Sub
    End If
    Me.Form.Requery
    Me.sfrmEstatisticas_Custos_Cargas.Requery
    dblTotalCarga = Me!txTotalCargas
    Me!txSomaCarga = dblTotalCarga
    dblTotalCusto = Nz((Me!txTotalCusto) + (Me!txOperVeiculos) + (Me!txOperMotoristas), 0)
    Me!txSomaCusto = dblTotalCusto
    Me!txPercentual = Nz((Me!txSomaCusto) / (Me!txSomaCarga), 0)
    End Sub

    Estou anexando o BDExemplo para que possam entender melhor minha necessidade.

    Desde de já agradeço a todos.


    Última edição por isaias_sc em 22/2/2013, 20:48, editado 1 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  Alexandre Neves 21/2/2013, 18:49

    Boa tarde, isaias
    Na linha antes do End Sub, coloque
    if isnull(Me!txSomaCarga) or Me!txSomaCarga=0 then
    Me!txPercentual=null
    else
    Me!txPercentual = Nz((Me!txSomaCusto) / (Me!txSomaCarga), 0)
    end if


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 21/2/2013, 20:42

    Alexandre, boa tarde!

    Muito obrigado por sua atenção.

    Continua dando erro:

    Divisão por zero.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  Alexandre Neves 21/2/2013, 20:44

    Em qual linha do código dá erro?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 21/2/2013, 21:00

    Na última linha antes do end sub

    Me!txPercentual = Nz((Me!txSomaCusto) / (Me!txSomaCarga), 0)
    End Sub

    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 21/2/2013, 21:07

    Amigo Alexandre,

    Se possivél, dê uma olhada no anexo.

    Desde de já agradeço!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  Alexandre Neves 21/2/2013, 21:49

    Veja se resolve
    if Me!txSomaCusto=0 then
    Me!txPercentual=0
    elseif isnull(Me!txSomaCusto) or isnull(Me!txSomaCarga) or Me!txSomaCarga=0 then
    Me!txPercentual=null
    else
    Me!txPercentual = Nz((Me!txSomaCusto) / (Me!txSomaCarga), 0)
    end if


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 21/2/2013, 22:12

    Resolveu o erro divisão por ZERO.

    Continua o erro apresentado é Uso de 'Null' inválido, quando informamos um periodo que não houve movimento.

    Exemplo ano 2014 e Mês 12

    O compo txPercentual não está trazendo valor.

    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 22/2/2013, 13:23

    Ops!! ???
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  Alexandre Neves 22/2/2013, 17:08

    Quando dá erro, qual o valor de cada controlo envolvido no cálculo?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 22/2/2013, 17:30

    Me tira essa dúvida, no formPrincipál existe um subform que só é alimentado com seus valores ao clicar no btConsultar
    Ao alimentar o subform, alimenta-se também as caixas de texto do rodapé do formPrincipal.

    O calculo da porcentagem é com base nas caixas de texto que estão no rodapé do formPrincipal, o que não estou conseguindo entender é mesmo quando existem valores nas caixas de texto do rodapé
    Acusa divisão por zero, o que está parecendo é que o calculo da porcentagem é feito antes de atualizar as caixas de texto.

    Parece que o Access precisa de alguns segundos para entender que já existem valor nas caixas de texto.

    Quando eu coloco o código para calculo do percentual no evento ao perder o foco do Butão btConsultar

    Não dá erro de divisão por zero
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 22/2/2013, 19:11

    Ops!??
    isaias_sc
    isaias_sc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 23/07/2012

    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  isaias_sc 22/2/2013, 20:19

    Alexandre,

    Fui obrigado a criar um butão para calcular, ficando 2 butões (Consultar e Calcular)

    No evento ao clicar do btConsultar coloquei o seguinte código:

    Private Sub btFiltrar_Click()
    Dim j As Boolean, Filtro As String
    Dim dblTotalCusto As Double
    Dim dblPercentual As Double
    If IsNull(Me!txAno) Then j = True
    If IsNull(Me!txMes) Then j = True
    If j = True Then
    MsgBox "Preencha todos os campos...", vbInformation, "Aviso"
    Me!txAno.SetFocus
    Exit Sub
    End If
    Me.Form.Requery
    Me.sfrmEstatisticas_Custos_Cargas.Requery
    End Sub

    *********************************************************

    E no evento ao clicar do btCalcular coloquei o seguite código:

    Private Sub btCalcular_Click()
    Dim dblTotalCusto As Double
    dblTotalCusto = Nz((Me!txTotalCusto) + (Me!txOperVeiculos) + (Me!txOperMotoristas), 0)
    If IsNull(Me!txTotalCargas) Or (Me!txTotalCusto) = 0 Then
    Me!txPercentual = Null
    Else
    Me!txPercentual = Nz((dblTotalCusto) / (Me!txTotalCargas), 0)
    End If
    End Sub

    *******************************************************

    Dessa forma o access faz a colsulta e com as informações obtidas na consulta lhe é permitido calcular, evitando erro divisão por ZERO.



    A minha intenção era que todo o código ficasse apenas no btColsultar, porém, dá erro divisão por zero.

    Me parece que o código em um só butão é execultado muito rapido ates de atualizar as caixas de texto com os valores da consulta.

    O que gera o erro de divisão por ZERO.



    Conteúdo patrocinado


    [Resolvido]Erro divisão por Zero VBA Empty Re: [Resolvido]Erro divisão por Zero VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 17:07