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]Numeração por Extenso em tabela ?

    Leonardo Favale
    Leonardo Favale
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Leonardo Favale Sex Jul 13, 2018 3:39 pm

    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
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    Registrado : 25/02/2014

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

    Mensagem  Carlos Cruz Sex Jul 13, 2018 9:57 pm

    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 : Respeito às Regras 100%

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

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

    Mensagem  tauron Sab Jul 14, 2018 9:20 am

    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 : Respeito às Regras 100%

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

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

    Mensagem  Leonardo Favale Seg Jul 16, 2018 11:40 am

    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 : Respeito às Regras 100%

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

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

    Mensagem  tauron Seg Jul 16, 2018 4:01 pm

    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 : Respeito às Regras 100%

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

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

    Mensagem  Leonardo Favale Ter Jul 17, 2018 11:19 am

    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 : Respeito às Regras 100%

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

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

    Mensagem  Leonardo Favale Ter Jul 17, 2018 11:20 am

    Encerrando então !

    Valeu !
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ahteixeira Ter Jul 17, 2018 11:47 am

    Olá a todos,

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

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

    Abraço e bons estudos

      Data/hora atual: Sab Jan 22, 2022 2:15 pm