MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

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


    Valor de vendas por extenso 4 casas decimais

    avatar
    beto.calculadora
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 11/01/2018

    Valor de vendas por extenso 4 casas decimais Empty Valor de vendas por extenso 4 casas decimais

    Mensagem  beto.calculadora em 11/1/2018, 18:24

    Boa tarde,

    Tenho um bom tempo que utilizo access, mas sempre para soluções simples, como agenda, etc. No momento estou desenvolvendo um sistema de vendas, e tenho a necessidade que o recibo de vendas contenha o valor vendido exibido por extenso, meu problema é que preciso que ele consiga "ler" o valor com 4 casas decimais. Utilizei exemplos aqui do forum e funcionaram muito bem, mas todos q vi limitavam-se à 2 casas decimais. Como sou "barbeiro" em VBA, até q tentei completar o código, mas sem sucesso. Então se puderem me ajudar, agradeço!
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  Noobezinho em 12/1/2018, 17:55

    Olá Beto

    Que dureza, Isso heim?

    Valor moeda com 4 casas decimais nunca vi.

    veja um número decimal com 4 casas por extenso:

    45,4321
    Quarenta e cinco inteiros e quatro mil, trezentos e vinte e um décimos de milésimo (forma convencional, utilizada em textos legislativos);

    Como seria em moeda: R$ 45,4321

    Quarenta e cinco reais, quatro mil, trezentos e vinte e um décimos de milésimo de centavos.

    Para utilizar esse tipo de moeda no Access, você terá que desenvolver uma função.

    Posso saber onde irá utilizar isso?

    [ ]'s
    avatar
    beto.calculadora
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 11/01/2018

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  beto.calculadora em 12/1/2018, 18:32

    Boa tarde,

    A necessidade é para um sistema de registro de preços que será alimentado de plataformas que gerenciam pregões de compra de materiais diversos. Atualmente não há padrão, a depender da plataforma, são utilizadas duas, três ou quatro casa decimais.
    avatar
    beto.calculadora
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 11/01/2018

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  beto.calculadora em 12/1/2018, 18:35

    Consegui esse código aqui no MaximoAccess, ta funcionando perfeitamente, mas ele só reconhece até duas casas decimais.
    segue o código:

    Código:
    Option Compare Database

    Function Extenso95(nValor)
    If IsNull(nValor) Or nValor <= 0 Or nValor > 9999999.99 Then
    Exit Function
    End If
    Dim nContador, nTamanho As Integer
    Dim cValor, cParte, cFinal As String
    ReDim aGrupo(4), aTexto(4) As String
    ReDim aUnid(19) As String
    aUnid(1) = "UM ": aUnid(2) = "DOIS ": aUnid(3) = "TRES "
    aUnid(4) = "QUATRO ": aUnid(5) = "CINCO ": aUnid(6) = "SEIS "
    aUnid(7) = "SETE ": aUnid(8) = "OITO ": aUnid(9) = "NOVE "
    aUnid(10) = "DEZ ": aUnid(11) = "ONZE ": aUnid(12) = "DOZE "
    aUnid(13) = "TREZE ": aUnid(14) = "QUATORZE ": aUnid(15) = "QUINZE "
    aUnid(16) = "DEZESSEIS ": aUnid(17) = "DEZESSETE ": aUnid(18) = "DEZOITO "
    aUnid(19) = "DEZENOVE "
    ReDim aDezena(9) As String
    aDezena(1) = "DEZ ": aDezena(2) = "VINTE ": aDezena(3) = "TRINTA "
    aDezena(4) = "QUARENTA ": aDezena(5) = "CINQUENTA "
    aDezena(6) = "SESSENTA ": aDezena(7) = "SETENTA ": aDezena(8) = "OITENTA "
    aDezena(9) = "NOVENTA "
    ReDim aCentena(9) As String
    aCentena(1) = "CENTO ": aCentena(2) = "DUZENTOS "
    aCentena(3) = "TREZENTOS ": aCentena(4) = "QUATROCENTOS "
    aCentena(5) = "QUINHENTOS ": aCentena(6) = "SEISCENTOS "
    aCentena(7) = "SETECENTOS ": aCentena(8) = "OITOCENTOS "
    aCentena(9) = "NOVECENTOS "
    cValor = Format$(nValor, "0000000000.00")
    aGrupo(1) = Mid$(cValor, 2, 3)
    aGrupo(2) = Mid$(cValor, 5, 3)
    aGrupo(3) = Mid$(cValor, 8, 3)
    aGrupo(4) = "0" + Mid$(cValor, 12, 2)
    For nContador = 1 To 4
    cParte = aGrupo(nContador)
    nTamanho = Switch(Val(cParte) < 10, 1, Val(cParte) < 100, 2, Val(cParte) < 1000, 3)
    If nTamanho = 3 Then
    If Right$(cParte, 2) <> "00" Then
    aTexto(nContador) = aTexto(nContador) + aCentena(Left(cParte, 1)) + "E "
    nTamanho = 2
    Else
    aTexto(nContador) = aTexto(nContador) + IIf(Left$(cParte, 1) = "1", "CEM ", aCentena(Left(cParte, 1)))
    End If
    End If
    If nTamanho = 2 Then
    If Val(Right(cParte, 2)) < 20 Then
    aTexto(nContador) = aTexto(nContador) + aUnid(Right(cParte, 2))
    Else
    aTexto(nContador) = aTexto(nContador) + aDezena(Mid(cParte, 2, 1))
    If Right$(cParte, 1) <> "0" Then
    aTexto(nContador) = aTexto(nContador) + "E "
    nTamanho = 1
    End If
    End If
    End If
    If nTamanho = 1 Then
    aTexto(nContador) = aTexto(nContador) + aUnid(Right(cParte, 1))
    End If
    Next
    If Val(aGrupo(1) + aGrupo(2) + aGrupo(3)) = 0 And Val(aGrupo(4)) <> 0 Then
    cFinal = aTexto(4) + IIf(Val(aGrupo(4)) = 1, "CENTAVO", "CENTAVOS")
    Else
    cFinal = ""
    cFinal = cFinal + IIf(Val(aGrupo(1)) <> 0, aTexto(1) + IIf(Val(aGrupo(1)) > 1, IIf(aGrupo(2) Mod 100 = 0, "MILHÕES ", "MILHÕES, "), IIf(aGrupo(2) Mod 100 = 0, "MILHÃO E ", IIf(aGrupo(2) = 0 And aGrupo(3) = 0, "MILHÃO ", "MILHÃO, "))), "")
    If Val(aGrupo(2) + aGrupo(3)) = 0 Then
    cFinal = cFinal + "DE "
    Else
    If Val(aGrupo(3)) = 0 Then
    cFinal = cFinal + IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL ", "")
    Else
    cFinal = cFinal + IIf(Val(aGrupo(3)) Mod 100 = 0 And aGrupo(4) = 0, IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL E ", ""), IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "MIL, ", ""))
    End If
    End If
    cFinal = cFinal + aTexto(3) + IIf(Val(aGrupo(1) + aGrupo(2) + aGrupo(3)) = 1, "REAL ", "REAIS ")
    cFinal = cFinal + IIf(Val(aGrupo(4)) <> 0, "E " + aTexto(4) + IIf(Val(aGrupo(4)) = 1, "CENTAVO", "CENTAVOS"), "")
    End If
    Extenso95 = cFinal
    End Function
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  Noobezinho em 12/1/2018, 18:59

    exato

    Para 2 casa decimais, tem em toda internet.

    Baseando-se nesse código, você pode fazer para 3 e 4 casas decimais

    avatar
    beto.calculadora
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 11/01/2018

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  beto.calculadora em 12/1/2018, 19:40

    Como disse na mensagem, até tentei montar, mas sou muito verde em Vba, fiz varias tentativas mas sempre dá algum erro. Se alguem tiver sugestão de video explicando como faz c duas casas, talvez eu pegue o gancho e consiga completar. Falei do video pq o código simplesmente copiei e colei.
    avatar
    beto.calculadora
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 11/01/2018

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  beto.calculadora em 15/1/2018, 17:59

    Boa tarde,

    Continuo tentando acrescentar o restante do código, mas sem sucesso. Alguns dos nobres colegas não poderia me ajudar completando esse código, de modo que ele possa colocar por extenso até 4 casas decimais?

    Obrigado
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  ahteixeira em 19/1/2018, 14:53

    Olá a todos

    Adalberto Canuto, é como o colega Noob referiu é só por a "mão na massa".

    No entanto, fiz uma adatação de um extenso que já cá está no fórum, veja link abaixo se é o que pretende:
    http://www.maximoaccess.com/t23414-valor-por-extenso-em-euros-eur-sem-dll

    Abraço a todos
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  ahteixeira em 12/2/2018, 17:10

    Olá a todos

    Adalberto Canuto como ficou a situação?
    Os membros do fórum merecem e agradecem o retorno.

    Caso a dúvida esteja esclarecida, não se esqueça de dar o tópico como Resolvido, veja como fazer:
    http://www.maximoaccess.com/t860-resolucao-de-topicos

    Abraço a todos


    Conteúdo patrocinado

    Valor de vendas por extenso 4 casas decimais Empty Re: Valor de vendas por extenso 4 casas decimais

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/7/2019, 01:57