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

    Código em VBA que seleciona o menor valor

    Compartilhe

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qua 22 Jul 2015, 19:58

    Olá pessoa, tudo bom?

    Possuo um código onde ele seleciona o menor valor de 3 campos diferentes, más ele também está selecionando valores iguais a ZERO, teria como adicionar alguma função que ele ignore valores iguais a ZERO e também que ignore caso não haja nenhum valor?

    O código é o seguinte:

    Public Function fncMenorValor(c1, c2, c3)
    Dim k
    If c1 < c2 Then If c1 < c3 Then k = c1
    If c2 < c1 Then If c2 < c3 Then k = c2
    If c3 < c1 Then If c3 < c2 Then k = c3

    fncMenorValor = k
    End Function

    Obrigado e desde já agradeço a ajuda dos senhores

    biligo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 10/04/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  biligo em Qua 22 Jul 2015, 20:38

    Amigo utilize "And" " Or" "&" sempre que quiser adicionar mais criterios:
    "<>" é diferente e utilize " " para enquadrar valores ou não depende as vezes.


    IF c2< c1 And > c3<> Null And "0"Then
    k = c1
    ElseIf c2< c1 And >c3 And <> "" And "0" Then
    k=c2
    ElseIf c3 C2<> "" And "0" Then
    k=c3
    Else
    MsgBox "algo esta errado"
    End If

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qua 22 Jul 2015, 20:46

    Amigo, desculpe más não entendi muito bem...

    também tentei colocar este código que você me informou e o mesmo também não funcionou Sad

    biligo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 10/04/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  biligo em Qua 22 Jul 2015, 20:55

    faz o seguinte,
    me envia as tabelas e o formulario relacionado que fica mais facil.

    mas é bem simples, <> Null And <> "0" Then ''é diferente de nulo E diferente de zero tente adicionar esta parte nas suas já feitas
    caso não consiga retorte com o bd

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qua 22 Jul 2015, 21:17

    Olá amigo, estou colocando o BD para que você possa dar uma olhada...

    Realmente não consegui realizar o mesmo...

    A consulta que está a funcão seria Consulta_menorvalor
    e o módulo seria, Mod_geral

    caso queira fazer alguma alteração nos valores, seria o FRM_comprasrequery, digitando o número das requisições, 12,14 e 15
    Obrigado desde já

    Hospedado no dropbox:
    [Você precisa estar registrado e conectado para ver este link.]

    biligo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 10/04/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  biligo em Qua 22 Jul 2015, 21:52

    Boas amigo,

    é achei que se tratava de um formulario XD.
    faça o seguinte substitua seu campo MenorValor por este:

    MenorValor: SeImed([SomaDeTforn1]<[SomaDeTforn2] E [SomaDeTforn1]<[SomaDeTforn3] E [SomaDeTforn1] É Negado Nulo Ou "0";[SomaDeTforn1];SeImed([SomaDeTforn2]<[SomaDeTforn1] E [SomaDeTforn2]<[SomaDeTforn3] É Negado Nulo Ou "0";[SomaDeTforn2];SeImed([SomaDeTforn3]<[SomaDeTforn1] E [SomaDeTforn3]<[SomaDeTforn2] E [SomaDeTforn3] É Negado Nulo Ou "0";[SomaDeTforn3];0)))

    é realmente bem grande e feio XD mais em consultas é assim que fica, talvez alguém mais experiente que eu saiba como
    facilitar e deixar isto mais bonito mas deste jeito funciona

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qua 22 Jul 2015, 22:00

    Amigo, não sei se vc testou, más ele ainda me retorna o valor 0 como menor valor, eu gostaria que ele ignorasse Smile

    más mesmo assim, muito obrigado pelo sua ajuda até o momento

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Código em VBA que seleciona o menor valor

    Mensagem  Alexandre Neves em Qua 22 Jul 2015, 22:15

    Boa noite,
    Código:
    Public Function fncMenorValor(c1, c2, c3)
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If c1 > 0 Then fncMenorValor = c1
        If c2 > 0 And c2 > fncMenorValor Then fncMenorValor = c2
        If c3 > 0 And c3 > fncMenorValor Then fncMenorValor = c3
    End Function


    .................................................................................
    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

    biligo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 181
    Registrado : 10/04/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  biligo em Qua 22 Jul 2015, 22:21

    Man testei sim, tanto que no codigo 15 existe e me retorna o 435.
    estou mandando pra você : teste

    caso não funfe tente pela função mesmo, mas pessoalmente prefiro não utilizar funções quando não necessario
    "acho" que diminui o stress do bd

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qui 23 Jul 2015, 12:33

    biligo, os dois código caso o fornecedor 1 seja Zero ele me retorna 0 como menor valor
    más agradeço o auxilio de todos!

    alexandre, o seu código está retornando o maior valor e eu acabei trocando as bocas dos jacares < e acabou não funcionando Sad
    kkkkk

    não teria como colocar alguma coisa no código para que se for = 0 ele passa para a próxima linha ou ignora aquela linha e passa para próxima

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Código em VBA que seleciona o menor valor

    Mensagem  Alexandre Neves em Qui 23 Jul 2015, 17:36

    Boa tarde,
    Lapso meu, agora deve dar o menor
    Código:
    Public Function fncMenorValor(c1, c2, c3)
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If c1 > 0 Then fncMenorValor = c1
        If c2 > 0 And c2 < fncMenorValor Then fncMenorValor = c2
        If c3 > 0 And c3 < fncMenorValor Then fncMenorValor = c3
    End Function


    .................................................................................
    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

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qui 23 Jul 2015, 18:16

    Perfeito amigo! o único problema que encontrei foi que se o fornecedor 1 ficar zerado, ele não retorna nenhum valor, más sem problema, pelo menos uma cotação eu terei que fazer Smile

    Só mais um pedido, como eu coloco este módulo como Moeda R$?

    Obrigado!

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Código em VBA que seleciona o menor valor

    Mensagem  Alexandre Neves em Qui 23 Jul 2015, 18:37

    Eu só crie código para a sua ideia. Veja que pediu que fosse maior que zero. Veja, ainda, que os argumentos ficaram por definir, o que corresponde a variável do tipo Variant
    Se pretende que seja moeda, formate onde vai utilizar a função
    Código:
    Public Function fncMenorValor(c1 As Currency, c2 As Currency, c3 As Currency) As Currency
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ' devolve o menor dos 3 valores, desde que maior que zero
       
        If fncMenorValor = 0 And c1 > 0 Then fncMenorValor = c1
       
        If fncMenorValor = 0 And c2 > 0 Then
            fncMenorValor = c2
        ElseIf c2 > 0 And c2 < fncMenorValor Then
            fncMenorValor = c2
        End If
        If fncMenorValor = 0 And c3 > 0 Then
            fncMenorValor = c3
        ElseIf c3 > 0 And c3 < fncMenorValor Then
            fncMenorValor = c3
        End If
    End Function


    .................................................................................
    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

    bernardweger
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 22/12/2014

    Re: Código em VBA que seleciona o menor valor

    Mensagem  bernardweger em Qui 23 Jul 2015, 18:40

    Amigo, perfeito! agradeço demais a sua ajuda! que Deus o abençoe grandemente!

    você poderia me dar uma força neste tópico?
    [Você precisa estar registrado e conectado para ver este link.]
    Obrigado!

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