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]Arredondamento de preço

    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty [Resolvido]Arredondamento de preço

    Mensagem  Krauss 17/11/2020, 19:32

    Boa tarde Srs!

    Será que poderiam me ajudar nessa?

    Preciso que, ao informar o precoCusto, o sistema me informe no campo precoSugerido o preço de custo x4 (vezes 4) e caso o resultado dê um valor picado, ele arredonde para cima ou para baixo, sempre com final 90 centavos. Por exemplo, comprei um produto por 9,90, que multiplicado por 4 dá 39,60, mas preciso que retorne 39,90 e se caso desse 39,49, arredondasse para baixo em 38,90.

    Uso uma fórmula no excel que dá certinho, mas não consegui converter isso em VBA no access. Segue abaixo a fórmula que uso no Excel..

    =SE(Soma([precoCusto]-Int([precoCusto]))<=0,5;(Int([precoCusto]*4))-0,1;(Int([precoCusto]*4))+0,9)


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7222
    Registrado : 15/03/2013

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  ahteixeira 18/11/2020, 11:17

    Olá Bruno Krauss,

    Troque o SE por IIF e teste:

    =IIF(Soma([precoCusto]-Int([precoCusto]))<=0,5;(Int([precoCusto]*4))-0,1;(Int([precoCusto]*4))+0,9)

    ou assim
    =IIF(([precoCusto]-Int([precoCusto]))<=0,5;(Int([precoCusto]*4))-0,1;(Int([precoCusto]*4))+0,9)

    Abraço
    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Krauss 18/11/2020, 18:38

    Salve ahteixeira!!

    Então cara, eu já havia tentado assim, mas a nomenclatura e os critérios do Access possuem algumas diferenças do Excel. Na parte do "<=0,5" ele diz que "Erro de compilação. Era esperado: )". Detalhe, no Excel eu uso essa fórmula no campo "precoSugerido", já no Access eu preciso que fique no evento "Após atualizar" do campo "precoCusto".


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7222
    Registrado : 15/03/2013

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  ahteixeira 19/11/2020, 12:57

    Olá Bruno Krauss,

    Teste assim:
    Código:
    IIf(([precoCusto] - Int([precoCusto])) <= 0.5, (Int([precoCusto] * 4)) - 0.1, (Int([precoCusto] * 4)) + 0.9)

    Se não funcionar partilhe a base de dados com pequeno exemplo para se testar.

    Abraco
    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Krauss 19/11/2020, 18:02

    Olá, infelizmente não funfou.

    Segue BD resumido. Gostaria que, após informar o "Preço Custo", o sistema atualizasse o campo "Preço Sugerido" com base nos critérios do código que passei.

    Obg!
    Anexos
    [Resolvido]Arredondamento de preço AttachmentBD_1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (360 Kb) Baixado 4 vez(es)


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7222
    Registrado : 15/03/2013

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  ahteixeira 19/11/2020, 19:15

    Olá Bruno Krauss,

    Alterei o nome dos campos no formulario, coloquei um "x" no ínicio.
    Depois o seguinte código no evento "depois de atualizar":
    Código:
    Private Sub xprecoCusto_AfterUpdate()
        Me.xprecoSugerido = IIf(([xprecoCusto] - Int([xprecoCusto])) <= 0.5, (Int([xprecoCusto] * 4)) - 0.1, (Int([xprecoCusto] * 4)) + 0.9)
    End Sub

    Verifique se é o pretendido, segue o meu teste:
    cld.pt/dl/download/938edc63-b1ba-4ac3-b82d-c1dc69f33fe4/BD_1_rev.zip

    Abraço
    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Krauss 19/11/2020, 22:01

    Cara deu certinho. Muito obrigado pela ajuda!!!


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7222
    Registrado : 15/03/2013

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  ahteixeira 23/11/2020, 17:44

    Olá Bruno Krauss,

    Obrigado pelo retorno, o fórum agradece.

    Abraço
    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Krauss 28/11/2020, 21:19

    Boa tarde!

    Reabri esse tópico porque surgiu um probleminha no código abaixo:

    Código:
    Me.precoSugerido = IIf((([precoCusto] * 4) - (Int([precoCusto]) * 4)) < 0.5, (Int([precoCusto]) * 4) - 0.1, (Int([precoCusto] * 4)) + 0.9)

    Se eu informar o custo de 1,20, ele multiplica por 4 (1,20 * 4 = 4,80) e retorna 4,90. Se informo 1,12 (1,12 * 4 = 4,48) ele retorna 3,90. Se informo 10,00 (10,00 * 4 = 40,00) ele retorna 39,90. Até aí tudo bem. Mas se eu informar 1,25 (1,25 * 4 = 5,00) ele deveria retornar 4,90 mas está retornando 5,90.

    Já mexi de tudo quanto é jeito e não sei qual critério aplicar. Da forma abaixo também não funcionou.

    Código:
    Me.precoSugerido = IIf((([precoCusto] * 4) - (Int([precoCusto]) * 4)) < 0.5 Or (([precoCusto] * 4) - (Int([precoCusto]) * 4)) = 0, (Int([precoCusto]) * 4) - 0.1, (Int([precoCusto] * 4)) + 0.9)

    Alguém sabe como solucionar?


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    FranklinJSP
    FranklinJSP
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 440
    Registrado : 25/02/2016

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  FranklinJSP 29/11/2020, 01:08

    Boa noite Krauss

    Em anexo

    Saludos


    .................................................................................
    Meu Português não é muito bom,
    mas eu gosto de colaborar... em qualquer idioma
    Smile "Access... minha paixão"
    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Krauss 16/12/2020, 19:22

    Opa, blz Franklin!

    Hoje que vi seu exemplo aqui, dei uma olhada por cima e jajá vou testar e te retorno. Aparentemente ficou muito interessante vc ter criado uma função em um módulo.



    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1395
    Registrado : 13/12/2016

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Alexandre Fim 16/12/2020, 19:44

    Use a função "Round" para arredondar valores.
    Ex.:

    Format(Round("1250,36",1),"#,##0.#0")
    Resultado: 1.250,40

    Boa sorte!!


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.

    Krauss gosta desta mensagem

    Krauss
    Krauss
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 247
    Registrado : 23/12/2011

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Krauss 17/12/2020, 05:15

    Franklin, funfou perfeitamente!!! Muito obrigado a todos pelas ajudas prestadas!

    Eu ainda incrementei o código para que em casos onde por exemplo o custo informado for R$ 20,10 - multiplicando por 4 (que é o padrão) ficaria 80,40 e o sistema arredondaria para 80,90. Com meu incremento ele arredonda para 79,90 deixando o preço mais "bonito". Sempre que o primeiro número antes da vírgula for zero, ele subtrai 1 real e em seguida arredonda os centavos.

    Eis como ficou o código do módulo - declarei a string "Inteiro" e acrescentei um "If":

    Código:
    Public Function DecOk(Num As Double)
      
       Dim Inteiro As String
       Dim Decimais As String
       Dim Devolver As Double

       Inteiro = Int(Num)
       Decimais = Num - Int(Num)
       Decimais = Mid$(Format(Decimais, "0.00"), 2, 2)

       If Val(Right(Inteiro, 1)) = 0 Then
          Devolver = (Int(Num) - 1) + 0.9
          
       ElseIf Decimais = "" Then 'Se o valor dos centavos for vazio
          Devolver = Int(Num) + 0.9 'Devolve o número inteiro + 0,90 (noventa centavos)
       Else
          If Val(Right(Decimais, 1)) > 1 Then 'Se a última casa decimal for maior ou igual a 1
             Devolver = Int(Num) + 0.9 'Devolve o número inteiro + 0,90 (noventa centavos)
          Else
             Devolver = (Int(Num) - 1) + 0.9 'Devolve o número inteiro - 1,00 (um real) + 0,90 (noventa centavos)
          End If
       End If

       DecOk = Devolver

    End Function


    .................................................................................
    Trabalho com Access 2013

    "A dúvida é o princípio da sabedoria"
    FranklinJSP
    FranklinJSP
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 440
    Registrado : 25/02/2016

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  FranklinJSP 17/12/2020, 19:48

    Que bom Bruno!!!

    lol! lol! lol!


    .................................................................................
    Meu Português não é muito bom,
    mas eu gosto de colaborar... em qualquer idioma
    Smile "Access... minha paixão"

    Krauss gosta desta mensagem


    Conteúdo patrocinado

    [Resolvido]Arredondamento de preço Empty Re: [Resolvido]Arredondamento de preço

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 14/5/2021, 11:41