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]Valor por extenso mas com Primeira letra maiúscula

    Nogaro513
    Nogaro513
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 482
    Registrado : 12/08/2013

    [Resolvido]Valor por extenso mas com Primeira letra maiúscula Empty [Resolvido]Valor por extenso mas com Primeira letra maiúscula

    Mensagem  Nogaro513 3/1/2021, 19:15

    mais um pedido de ajuda aos amigos do Forum, tenho um modulo Extenso 95 funciona certinho mas preciso de que seja a primeira letra maiúscula não consegui resolver agradeço quem puder me ajudar. !
    FranklinJSP
    FranklinJSP
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Valor por extenso mas com Primeira letra maiúscula Empty Re: [Resolvido]Valor por extenso mas com Primeira letra maiúscula

    Mensagem  FranklinJSP 3/1/2021, 20:32

    Olá Nogaro!

    Da uma olhada

    Saludos


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

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Valor por extenso mas com Primeira letra maiúscula Empty Re: [Resolvido]Valor por extenso mas com Primeira letra maiúscula

    Mensagem  Noobezinho 4/1/2021, 00:21

    Olá Carlos

    Função Extenso retornando o valor com a primeira letra maiúscula:

    Código:

    Function Extenso(nValor As String) As String

    'Faz a validação do argumento
    If IsNull(nValor) Or nValor > 999999999.99 Then Exit Function

    'Declara as variáveis da função
    Dim intContador As Integer
    Dim intTamanho As Integer
    Dim strValor As String
    Dim strParte As String
    Dim strFinal As String
    Dim strGrupo(4) As String
    Dim strTexto(4) As String

    'Define matrizes com extensos parciais
    Dim strUnid(19) As String
    strUnid(1) = "um ": strUnid(2) = "dois ": strUnid(3) = "três ": strUnid(4) = "quatro ": strUnid(5) = "cinco ": strUnid(6) = "seis ": strUnid(7) = "sete ": strUnid(Cool = "oito ": strUnid(9) = "nove ": strUnid(10) = "dez ": strUnid(11) = "onze ": strUnid(12) = "doze ": strUnid(13) = "treze ": strUnid(14) = "quatorze ": strUnid(15) = "quinze ": strUnid(16) = "dezesseis ": strUnid(17) = "dezessete ": strUnid(18) = "dezoito ": strUnid(19) = "dezenove "
    Dim strDezena(9) As String
    strDezena(1) = "dez ": strDezena(2) = "vinte ": strDezena(3) = "trinta ": strDezena(4) = "quarenta ": strDezena(5) = "cinqüenta ": strDezena(6) = "sessenta ": strDezena(7) = "setenta ": strDezena(Cool = "oitenta ": strDezena(9) = "noventa "
    Dim strCentena(9) As String
    strCentena(1) = "cento ": strCentena(2) = "duzentos ": strCentena(3) = "trezentos ": strCentena(4) = "quatrocentos ": strCentena(5) = "quinhentos ": strCentena(6) = "seiscentos ": strCentena(7) = "setecentos ": strCentena(Cool = "oitocentos ": strCentena(9) = "novecentos "

    'Divide o valor em vários grupos
    strValor = Format$(nValor, "0000000000.00")
    strGrupo(1) = Mid$(strValor, 2, 3) 'Milhão
    strGrupo(2) = Mid$(strValor, 5, 3) 'Milhar
    strGrupo(3) = Mid$(strValor, 8, 3) 'Centena
    strGrupo(4) = "0" + Mid$(strValor, 12, 2) 'Centavo

    'Processa cada grupo
    For intContador = 1 To 4
        strParte = strGrupo(intContador)

        intTamanho = Switch(Val(strParte) < 10, 1, Val(strParte) < 100, 2, Val(strParte) < 1000, 3)
        If intTamanho = 3 Then
           If Right$(strParte, 2) <> "00" Then
              strTexto(intContador) = strTexto(intContador) + strCentena(Left(strParte, 1)) + "e "
              intTamanho = 2
           Else
              strTexto(intContador) = strTexto(intContador) + IIf(Left$(strParte, 1) = "1", "cem ", strCentena(Left(strParte, 1)))
           End If
        End If

        If intTamanho = 2 Then
           If Val(Right(strParte, 2)) < 20 Then
              strTexto(intContador) = strTexto(intContador) + strUnid(Right(strParte, 2))
           Else
              strTexto(intContador) = strTexto(intContador) + strDezena(Mid(strParte, 2, 1))
              If Right$(strParte, 1) <> "0" Then
                 strTexto(intContador) = strTexto(intContador) + "e "
                 intTamanho = 1
              End If
           End If
        End If

        If intTamanho = 1 Then
           strTexto(intContador) = strTexto(intContador) + strUnid(Right(strParte, 1))
        End If
    Next intContador

    'Gera o formato final do texto
    If Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 0 And Val(strGrupo(4)) <> 0 Then
       strFinal = strTexto(4) + IIf(Val(strGrupo(4)) = 1, "centavo de real", "centavos de reais")
    Else
       strFinal = ""
       If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) = 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões de ", "milhão de "), "")
       End If
       If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) = 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões e ", "milhão e "), "")
       End If
       If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) = 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões e ", "milhão e "), "")
       End If
       If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) = 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "")
       End If
       If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) <> 0 Then
           strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "")
       End If
       If Val(strGrupo(2)) <> 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) <> 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "")
       End If
       If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) = 0 And Val(strGrupo(4)) <> 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões de ", "milhão de "), "")
       End If
       If Val(strGrupo(2)) = 0 And Val(strGrupo(3)) <> 0 And Val(strGrupo(4)) <> 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(1)) <> 0, strTexto(1) + IIf(Val(strGrupo(1)) > 1, "milhões, ", "milhão, "), "")
       End If
       If Val(strGrupo(3)) = 0 Then
          strFinal = strFinal + IIf(Val(strGrupo(2)) <> 0, strTexto(2) + "mil ", "")
       Else
          If Val(strGrupo(4)) = 0 Then
             strFinal = strFinal + IIf(Val(strGrupo(2)) <> 0, strTexto(2) + "mil e ", "")
          Else
             strFinal = strFinal + IIf(Val(strGrupo(2)) <> 0, strTexto(2) + "mil, ", "")
          End If
       End If
       If Val(strGrupo(4)) = 0 Then
          strFinal = strFinal + strTexto(3) + IIf(Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 1, "real ", "reais ")
       Else
          strFinal = strFinal + strTexto(3) + IIf(Val(strGrupo(3)) <> 1, IIf(Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 1, "real ", "reais "), "real ")
       End If
       strFinal = strFinal + IIf(Val(strGrupo(4)) <> 0, "e " + strTexto(4) + IIf(Val(strGrupo(4)) = 1, "centavo", "centavos"), "")
    End If
    If Left(strFinal, 1) = "u" Then
       Extenso = "H" & Mid$(strFinal, 1)
    Else
       Extenso = UCase(Mid$(strFinal, 1, 1)) & Mid$(strFinal, 2)
    End If
    End Function


    Uso:

    UCase(Left(Extenso(NomeDaCaixaDeTexto),1)) & Mid(Extenso(NomeDaCaixaDeTexto),2)

    { }'s


    Balem
    Nogaro513
    Nogaro513
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 482
    Registrado : 12/08/2013

    [Resolvido]Valor por extenso mas com Primeira letra maiúscula Empty Valor por extenso mas com Primeira letra maiúscula

    Mensagem  Nogaro513 4/1/2021, 15:21

    obrigado Balem pela ajuda mas não consegui adaptar o código de uso e onde colocar  !

    o exemplo do amigo  Franklin primeira letra em maiúscula mas sem valor por extenso  exemplo R$ 120,00 = Cento e Vinte Reais.
    Nogaro513
    Nogaro513
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 482
    Registrado : 12/08/2013

    [Resolvido]Valor por extenso mas com Primeira letra maiúscula Empty Resolvido Valor por Extenso Primeira letra em maiúscula

    Mensagem  Nogaro513 4/1/2021, 17:52

    coloquei em um campo da consulta txtextenso ([txtValor])

    obrigado Balem e Franklin
    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Valor por extenso mas com Primeira letra maiúscula Empty Re: [Resolvido]Valor por extenso mas com Primeira letra maiúscula

    Mensagem  Noobezinho 4/1/2021, 19:55

    Ótimo!
    Que bom que deu certo Carlos

    Boa sorte!

    Balem

      Data/hora atual: 16/4/2021, 21:10