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

    Selecionar valor mais próximo.

    avatar
    cristiansouza
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 12/01/2021

    Selecionar valor mais próximo. Empty Selecionar valor mais próximo.

    Mensagem  cristiansouza 5/4/2022, 13:31

    Olá senhores, muito bom dia! Very Happy

    Tenho uma tabela chamada "Tab_CadFator", e nessa tabela tenho as colunas "Fator" e "Aproveitamento".

    Acessando o formulário, posso selecionar os registro da tabela "Tab_CadFator" através de uma combo box, onde ao selecionar o fator desejado, ele me traz automaticamente o Aproveitamento.

    Neste mesmo formulário, além destes dois campos derivados da tabela, tenho um campo não associado que realizada o cálculo do fator de acordo com os dados do produto.

    A intenção é que o valor mais próximo da combo box seja selecionado de acordo com o resultado do campo não associado.

    Exemplo:

    Ao preencher os campos Chave_A com o valor "99" e Chave_B com o valor "42", o campo não associado realiza o cálculo (Chave_A / Chave_B), exemplo:

    99 / 42 --> Fator = 2,357142857

    Na minha combobox, o valor mais próximo seria "2,357598425", então o mesmo deveria ser selecionado automaticamente por ser o valor mais próximo.

    Alguém teria ideia de como resolver este problema?

    Grato a todos!
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3606
    Registrado : 21/04/2011

    Selecionar valor mais próximo. Empty Re: Selecionar valor mais próximo.

    Mensagem  Marcelo David 12/4/2022, 12:26

    Bom dia,
    para facilitar, poderia nos preparar um arquivo para tentarmos algo.
    Gostaria ainda de saber se os dados da combo vem de alguma tabela e se atende algum critério.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Selecionar valor mais próximo. Marcel11
    avatar
    cristiansouza
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 12/01/2021

    Selecionar valor mais próximo. Empty Re: Selecionar valor mais próximo.

    Mensagem  cristiansouza 12/4/2022, 13:43

    Olá Marcelo.

    Ao preencher o campo Chave(A) e Chave (B), deve-se clicar em calcular.

    Ao clicar em calcular, o campo "Fator" é atualizado com o cálculo definido por mim, porém o resultado deste calculo deve ser igual a um registro da combo box.

    Recomenda-se utilizar os seguintes dados:

    Chave (A) = 99
    Chave (B) = 42

    Resultado: 2,35714285714286
    Selecionar Registro da Combo box mais próximo: 2,35759842519684
    Anexos
    Selecionar valor mais próximo. AttachmentMassa.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (71 Kb) Baixado 3 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3606
    Registrado : 21/04/2011

    Selecionar valor mais próximo. Empty Re: Selecionar valor mais próximo.

    Mensagem  Marcelo David 12/4/2022, 20:25

    O Resultado: 2,35714285714286 e o que deve ir para a combo é 2,35759842519684?
    E o valor é mais próximo para cima ou para baixo?

    Não consegui testar, pois seu VBA está com senha.



    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Selecionar valor mais próximo. Marcel11
    avatar
    cristiansouza
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 12/01/2021

    Selecionar valor mais próximo. Empty Re: Selecionar valor mais próximo.

    Mensagem  cristiansouza 12/4/2022, 20:36

    Desculpe amigo, segue novamente arquivo desbloqueado.. rsrs

    Sim, isso mesmo, o que deve ir para a combo box é um valor que esteja na tabela TabCad_Fator.

    Não há critério de proximidade pro arredondamento, apenas arredondar para o valor mais próximo.

    Cumprimentos.
    Anexos
    Selecionar valor mais próximo. AttachmentMassa.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (71 Kb) Baixado 2 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3606
    Registrado : 21/04/2011

    Selecionar valor mais próximo. Empty Re: Selecionar valor mais próximo.

    Mensagem  Marcelo David 18/4/2022, 18:07

    Boa tarde,

    Crie uma consulta e dê o seguinte nome: qryConvert
    A sql da consulta é a seguinte:

    Código:
    SELECT Cdbl(Fator) AS dblFator FROM Tab_CadFator;

    Substitua o código do evento ao clicar do botão Btn_Calcular, por código abaixo:

    Código:
       Dim dblRes As Double 'Variável para receber o valor calculado para comparação
        Dim dblVM As Double 'Variável para receber o valor mais proximo acima
        Dim dblVN As Double 'Variável áta receber o valor mais próximo abaixo
        'Variáveis para receberem a subtração
        Dim dblDVM As Double
        Dim dblDVN As Double
        
        'Calculando o fator
        dblRes = CDbl(Me.Chave) / CDbl(Me.Chave2)
        
        'Buscando valor mais próximo acima:
        dblVM = DMax("dblFator", "qryConvert", "dblFator >= " & Replace(dblRes, ",", "."))

        'Buscando o valor mais próximo abaixo
        dblVN = DMax("dblFator", "qryConvert", "dblFator <= " & Replace(dblRes, ",", "."))
         '*O Replace é devido as casas decimais serem separadas por ponto (.) e não por vígula (,) no VBA
        
        'Como já tenho o maior e o menor valor, farei uma subtração para determinar quais dos dois valores mais se aproximam
        'irei realizar a subtração para ver quais resultados efetivamente é o mais próximo
        dblDVM = dblVM - dblRes
        dblDVN = dblRes - dbldnv
        
        'Agora iremos determinar o valor mais próximo
        If dblDVM = dblDVM Then
            'Como os valores são iguais, o valor mais próximo pode ser qualquer variável
            Me.Fator = dblVM
        Else
            'Como os valores são diferentes, iremos determinar qual é o menor valor, que será o mais próximo
            If dblDVM < dblDVN Then
                Me.Fator = dblVM
            Else
                Me.Fator = dblVN
            End If
        End If

    O código está comentado com as explicações de cada passo.

    A consulta (qryConvert) foi necessária para converter na tabela o tipo de dados string para double (e diminuir a quantidade de códigos do botão)

    Teste par ver se é isso.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    Selecionar valor mais próximo. Marcel11
    avatar
    cristiansouza
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 12/01/2021

    Selecionar valor mais próximo. Empty Re: Selecionar valor mais próximo.

    Mensagem  cristiansouza 10/5/2022, 15:48

    Bom dia amigo Marcelo!
    Acho que estamos quase lá.

    Realizei um teste utilizando os seguintes dados:

    Chave(A) = 60
    Chave(B) = 30

    , onde o resultado do fator é 2.

    Ao clicar em calcular, ele selecionou o valor 2,367....
    Este valor (2,367...) realmente faz parte de um registro da combobox, porém não é o mais próximo, pois temos um registro com valor 2,007.

    Segue em anexo arquivo para novos testes.
    Anexos
    Selecionar valor mais próximo. AttachmentFatorOval.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (76 Kb) Baixado 0 vez(es)

      Data/hora atual: 6/10/2022, 08:06