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


4 participantes

    [Resolvido]Número por extenso em dias e não em reais

    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 14:09

    Prezados Amigos:

    Preciso da ajuda dos nobres amigos.

    Quero que uma caixa de texto me retorne o valor por extenso de um determinado campo em dias e não em moeda (real).
    Ex.: 12 - retorne: 12 Dias e não 12 Reais.
    Alguém pode me ajudar?
    avatar
    Atrefh
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 09/02/2017

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Atrefh 26/12/2017, 16:05

    pode se fazer essa gambiarra rsrs

    Código:

    Private Sub Texto0_Change()
    Texto2.Value = Texto0.Text + " Dias"
    End Sub

    Espero ter ajudado.

    Att.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Alvaro Teixeira 26/12/2017, 17:47

    Olá a todos,

    Alexnilto, estou no tablet e adaptei do repositorio de exemplos, um código que faz valor para dias como pretende.

    Não testado

    Código:
    Option Compare Database
    Option Explicit

    Function ExtensoDias(nValor)
    'Autoria..: Eng. Cesar Costa e Dalicio Guiguer Filho
    'Linguagem: Access Basic
    'Data.....: Fevereiro/1994

    'Modificada: Wintceas Villaça Godois Jr.
    'Linguagem.: VBA
    'Data......: Outubro/1997

    'Modificada: César Rocha
    'Linguagem.: VBA
    'Data......: Novembro/1997

    'Modificada: Alvaro Teixeira
    'Linguagem.: VBA
    'Data......: Maio/2000 e Janeiro/2005 e Dezembro 2017


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


    '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(8) = "oito ": strUnid(9) = "nove ": strUnid(10) = "dez ": strUnid(11) = "onze ": strUnid(12) = "doze ": strUnid(13) = "treze ": strUnid(14) = "catorze ": strUnid(15) = "quinze ": strUnid(16) = "dezasseis ": strUnid(17) = "dezassete ": strUnid(18) = "dezoito ": strUnid(19) = "dezanove "
    Dim strDezena(9) As String
    strDezena(1) = "dez ": strDezena(2) = "vinte ": strDezena(3) = "trinta ": strDezena(4) = "quarenta ": strDezena(5) = "cinquenta ": strDezena(6) = "sessenta ": strDezena(7) = "setenta ": strDezena(8) = "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(8) = "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) 'cêntimo

        '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
            
            'If Right$(strParte, 1) = "1" And intContador = "2" Then
            If Right$(strParte, 1) = "1" And intContador = "2" And nValor >= 1000 And nValor < 2000 Then
                    strTexto(intContador) = strTexto(intContador)
                Else
                    strTexto(intContador) = strTexto(intContador) + strUnid(Right(strParte, 1))
                End If
            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, "cêntimo", "cêntimos")
        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 e ", "")
                End If
            End If
        
            If Val(strGrupo(4)) = 0 Then
                strFinal = strFinal + strTexto(3) + IIf(Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 1, "dia", "dias")
            Else
                strFinal = strFinal + strTexto(3) + IIf(Val(strGrupo(3)) <> 1, IIf(Val(strGrupo(1) + strGrupo(2) + strGrupo(3)) = 1, "dia ", "dias "), "dias ")
            End If
            
            'strFinal = strFinal + IIf(Val(strGrupo(4)) <> 0, "e " + strTexto(4) + IIf(Val(strGrupo(4)) = 1, "cêntimo", "cêntimos"), "")
        End If

        ExtensoDias = UCase(Mid$(strFinal, 1, 1)) + Mid$(strFinal, 2)

    End Function

    Para chamar:
    =ExtensoDias([nomeCampoComNrDias])

    Abraço


    Última edição por ahteixeira em 26/12/2017, 22:21, editado 1 vez(es)
    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 18:04

    Infelizmente não.
    Usei a seguinte função =Extenso([CampoValorNumero]), e o resultado foi :

    CampoValorNumero= 12
    CampoValorExtenso= 12 reais

    O que quero é que no CampoValorExtenso o resultado seja 12 dias e não 12 reais)

    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 18:11

    ahteixeira, infelizmente não funcionou
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Assis 26/12/2017, 18:31

    alexnilto

    Quer postar a BD ou só essa parte ?

    Se sim, detalhes o formulário e a tabela.


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 19:00

    Maximo Vip

    frmCadastro (quatro campos)

    nome (Campo tabela)
    promissoria (campo tabela)
    DiasAtraso (campo tabela)
    DiasAtrasoExtenso (caixa de texto) - nesta caixa de texto eu quero que apareça por extenso o valor do campo Dias Atraso. Eu usei a função(=Extenso([DiasAtraso]) só que o resultado foi o valor por extenso seguido da expressão reais (tipo doze reais), o que quero sem sem a expressão reais (tipo doze dias).
    Fico grato se puder me ajudar.
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Assis 26/12/2017, 19:17

    alexnilto

    Poste aqui só essa tabela e o frm cadastro.
    Esse "Extenso" deve ser de um módulo para converter valores de Reais para extenso.
    Aguardo


    .................................................................................
    *** Só sei que nada sei ***
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Assis 26/12/2017, 20:01

    Teste


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 20:07

    Assis
    é exatamente isso o que quero. Agora como você fez? Quero jogar no meu formulário exatamente isso.

    Muito legal
    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 20:09

    Desculpe Assis.
    Não prestei atenção. Fiquei muito empolgado. kkkkk. Na realidade o 12 teria que ser em extenso e não em numeral.
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Assis 26/12/2017, 20:56

    Então assim ?


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 21:42

    Assis.

    Muito obrigado meu caro. Você foi 10. Me ajudou bastante. Muito agradecido mesmo. Show de bola.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Alvaro Teixeira 26/12/2017, 22:23

    Olá a todos,

    Alexnilto, que bom que conseguiu resolver com ajuda do colega Assis.

    Foi no metro, no tablet, não é fácil, ainda tinha uns erros que ajustei.
    No entanto não podia dar Reais, mas sim Euros, foi de onde copiei a função e alterei.

    Abraço


    Última edição por ahteixeira em 27/12/2017, 09:26, editado 1 vez(es)
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Assis 26/12/2017, 22:33

    Alexnilto Sousa

    Obrigado pelo retorno o fórum agradece.

    PS - Mas sabe uma coisa é muito + fácil trabalhar na tabela, e com o formulário de quem quer ajuda.

    mas como é altura de  santa  abri uma exceção


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    alexnilto
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 27/08/2016

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  alexnilto 26/12/2017, 22:57

    É só posso te agradecer e muito pela ajuda e por ter feito essa exceção. Valeu Capitão!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Alvaro Teixeira 27/12/2017, 09:51

    cheers

    Conteúdo patrocinado


    extenso - [Resolvido]Número por extenso em dias e não em reais Empty Re: [Resolvido]Número por extenso em dias e não em reais

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 14:40