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


    [Resolvido]Numeração por Extenso em tabela ?

    Leonardo Favale
    Leonardo Favale
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 109
    Registrado : 05/04/2018

    [Resolvido]Numeração por Extenso em tabela ? Empty [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  Leonardo Favale em 13/7/2018, 19:39

    Olá boa tarde, sou novo aqui e leigo em acess, mas estou desenvolvendo um sistema com muita dificuldade mas fluindo relativamente bem, com base em pesquisas e estudos que tenho visto aqui e entre outros videos. Porém não estou conseguindo solucionar uma dúvida, criei um banco de dados (tabela) para contratos, trabalho com locações de imóveis, e uma consulta (modulo) funcionando perfeitamente nos formulários quanto a relação do valor numérico aparecer por extenso, porém estou precisando que este valor numérico seja salvo e apareça na minha tabela de origem e não somente na consulta criada, ou relatórios, pois para geração do contrato eu estou usando o layout do Word, ou seja o meu contrato é usando mala direta com a tabela do acess para geração no Word, só que como para exportar os dados, ele pega da tabela de origem não consigo selecionar a "consulta" e essa informação de preenchimento automático do valor numérico para extenso não está aparecendo nessa tabela, estou quebrando a cuca para resolver essa pendência.

    Se alguém poder me ajudar agradeço e desculpem qualquer coisa.

    Outra dúvida que tenho é em relação se existe um código VBA ou outra solução, para que eu consiga ao clicar em um botão tipo "gerar contrato" ele fazer automaticamente o processo de mala direta (mesclar já o registro no caso), e depois imprimir, mesmo que abra o Word antes ou que faça isso direto sem abrir o programa ai tanto faz. Só estou conseguindo fazer ele abrir o arquivo do Word.. mas preciso manualmente gerar esse contrato ou seja realizar o processo de mescla de registro.

    Desde já, obrigado !
    avatar
    Carlos Cruz
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    Registrado : 26/02/2014

    [Resolvido]Numeração por Extenso em tabela ? Empty Numeração por Extenso em tabela ?

    Mensagem  Carlos Cruz em 14/7/2018, 01:57

    O valor por extenso aparece no seu formulário e na consulta? É automatizado para fazer o extenso ou você digita?
    Voce quer fazer o valor por extenso aparecer na tabela?
    Se você postar um banco de dados bem resumido, apenas com a tabela, formulário e consulta contendo apenas os campos necessários, acho que posso ajudá-lo!
    Abraço
    Carlos
    tauron
    tauron
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1090
    Registrado : 07/12/2011

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  tauron em 14/7/2018, 13:20

    Se não existir, crie um campo "txtExtenso" na tabela e no formulario. no modulo do formulario cole esta funcao:
    Código:

    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


    depois no evento apos atualizar do seucampovalor coloque
    me.txtExtenso=Extenso95(seucampovalor)
    Leonardo Favale
    Leonardo Favale
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 109
    Registrado : 05/04/2018

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  Leonardo Favale em 16/7/2018, 15:40

    Olá ! Bem assim já foi criado o modulo "Extenso95" e na tabela no caso já possuo o campo "Aluguel por extenso" que é o nome do campo que seria e apareceria o valor numérico transformado em extenso, porém esse valor está funcionando no formulário normal, a unica coisa é que ele não armazena na minha tabela essa informação, ou seja, eu abro o formulário digito o valor do Aluguel numérico (campo formatado como moeda), no caso que é o que trabalho e no meu campo "Aluguel por extenso", aparece o valor correto automaticamente já por extenso, porém isso só funciona no formulário, na tabela vou olhar o que está salvo no banco de dados e está em branco, ai não consigo transpor essa informação depois para o Word onde está formatado o meu contrato.

    Obs. Já criei também uma consulta do modulo Extenso, ali aparece o valor armazenado porém, como trabalho com o contrato no Word, ele não seleciona "Consultas" Apenas "Tabela" por isso o meu problema.

    Fiz o procedimento no campo após atualizar, pois não havia feito antes mas não adiantou continua sem armazenar o valor preenchido automaticamente por extenso na Tabela, fiz assim::

    Private Sub Aluguel_Por_Extenso_AfterUpdate()
    Me.Aluguel_Por_Extenso = Extenso95(Aluguel_Por_Extenso)
    End Sub

    E quanto a minha outra dúvida ref. a se existe algum código VBA para executar a mala direta e mesclar diretamente sem entrar no word no caso, não sei se seria aqui neste fórum também, mas alguém saberia me ajudar ?

    Desde já, obrigado por enquanto.
    tauron
    tauron
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1090
    Registrado : 07/12/2011

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  tauron em 16/7/2018, 20:01

    Seu formulario é vinculado ou não? Caso seja vinculado basta determinar a Fonte de controle. O Ideal seria se postasse o bd.
    Leonardo Favale
    Leonardo Favale
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 109
    Registrado : 05/04/2018

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  Leonardo Favale em 17/7/2018, 15:19

    Bom dia !

    Consegui resolver o meu problema, estava certo o que o Tauron me passou e que coloquei desta forma:

    Private Sub Aluguel_Por_Extenso_AfterUpdate()
    Me.Aluguel_Por_Extenso = Extenso95(Aluguel_Por_Extenso)
    End Sub

    Porém não havia funcionado porque na verdade
    = Extenso95(Aluguel_Por_Extenso)

    Não se refere ao campo aluguel por extenso e sim ao valor numérico, havia entendido mal e que no meu campo então ficou o código assim:

    Private Sub Aluguel_Por_Extenso_AfterUpdate()
    Me.Aluguel_Por_Extenso = Extenso95(Valor_de_Aluguel)
    End Sub

    Ai resolveu o problema ! Muito obrigado pessoal !

    Irei encerrar o tópico e colocar a postagem do código VBA em outra sessão do fórum aqui. Obrigado.
    Leonardo Favale
    Leonardo Favale
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 109
    Registrado : 05/04/2018

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  Leonardo Favale em 17/7/2018, 15:20

    Encerrando então !

    Valeu !
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  ahteixeira em 17/7/2018, 15:47

    Olá a todos,

    Para outros membros com a mesma dúvida, não falta exemplos no forum!
    http://www.maximoaccess.com/t21827-euros_extenso
    http://www.maximoaccess.com/t23414-valor-por-extenso-em-euros-eur-sem-dll

    É só saber fazer a Pesquisa (Busca), ver no link abaixo como fazer:
    http://www.maximoaccess.com/t1115-busca-no-forum-search

    Abraço e bons estudos

    Conteúdo patrocinado

    [Resolvido]Numeração por Extenso em tabela ? Empty Re: [Resolvido]Numeração por Extenso em tabela ?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/7/2019, 02:11