MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Função VerificaMultiplo

    Compartilhe

    textandu
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 19
    Registrado : 05/08/2013

    [Resolvido]Função VerificaMultiplo

    Mensagem  textandu em Sab 09 Abr 2016, 17:28

    Olá pessoal, sempre que fiquei preso em algum código encontrei a solução por aqui, mas eis meu primeiro tópico estou tendo problema com o VB para verificar se o número é múltiplo mas a função não está funcionando como deveria. Trabalho com Access 2003 o sistema roda em windows server 2008 mas acredito que não é o SO pois estou programando num windows 10. No código abaixo eu já coloquei os valores fixos para melhor entendimento essa função deveria cair na 1ª condição do "IF" e a função retornar "false". Mas o VB tá doido diz que 7 não é igual a 7, e o resto da divisão de 14,7 por 2,1 não é 0.

    Help-me?  Neutral

    Public Function VerificaMultiplo()
    Dim X As Double
    Dim Y As Double
    Dim Z As Double

       X = CDbl((14.7 / 2.1))
       Y = CDbl(CInt(14.7 / 2.1))
       Z = 14.7 Mod 2.1

       If Z = 0 Or (X = Y) = True Then
           VerificaMultiplo = False
       Else
           VerificaMultiplo = True
       End If

    End Function

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3350
    Registrado : 04/04/2010

    Re: [Resolvido]Função VerificaMultiplo

    Mensagem  Avelino Sampaio em Sab 09 Abr 2016, 18:19

    Olá!

    use fórmulas mais precisas quando estiver lhe dando com ponto flutuante

    X= CDec((14.7 / 2.1))
    y= CDec(CInt(14.7 / 2.1))

    x=y ::: Verdadeiro

    substitua o MOD pela fórmula:

    Dividendo - INT(Dividendo/divisor)*Divisor

    13.7 - Int(13.7/6.5)*6.5 :::> 0

    Sucesso!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    textandu
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 19
    Registrado : 05/08/2013

    RESOLVIDO

    Mensagem  textandu em Sab 09 Abr 2016, 18:48

    boa meu amigo não conhecia o CDec vlw mesmo Resolvido!! cheers

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2328
    Registrado : 14/08/2013

    Re: [Resolvido]Função VerificaMultiplo

    Mensagem  FabioPaes em Sab 09 Abr 2016, 20:51

    Amigo textandu, poderia montar um exemplo pra nos com essa Função em um Modulo?

    textandu
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 19
    Registrado : 05/08/2013

    Re: [Resolvido]Função VerificaMultiplo

    Mensagem  textandu em Dom 10 Abr 2016, 01:51

    Segue abaixo. A variável Mult recebe a coluna 5 de uma caixa de combinação que é o múltiplo cadastrado em um determinado produto. E a variável Quant recebe a quantidade digitada em uma venda, então essa função fica no evento "antes de atualizar" do campo quantidade retornando false a quantidade está correta e segue a venda, se retornar true dá a mensagem e chama um form solicitando senha para permitir vender mesmo com múltiplo estando errado.

    Public Function VerificaMultiplo()
    Dim Quant As Double
    Dim Mult As Double
    Dim X As Double
    Dim Y As Double

    Mult = Forms!Vendas![VendasItens].Form![Código da Mercadoria].Column(5)
    Quant = Forms!Vendas![VendasItens].Form![QUANTIDADE]
    X = CDec((Quant / Mult))
    Y = CDec(CInt(Quant / Mult))

    If (Mult <> 0) Then
    If X = Y Then
    VerificaMultiplo = False
    Else
    menss = MsgBox("Você digitou uma quantidade inválida. Esta mercadoria só aceita múltiplos de " & Mult & " !", vbExclamation, "Aviso")
    VerificaMultiplo = True
    End If
    End If

    End Function

      Data/hora atual: Sex 09 Dez 2016, 07:39