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


2 participantes

    Valor por Extenso - Access 2007

    avatar
    ktm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 04/06/2013

    Valor por Extenso - Access 2007 Empty Valor por Extenso - Access 2007

    Mensagem  ktm 4/6/2013, 15:39

    Oi tudo bem?
    Sou novo no fórum.

    Gostaria de uma ajuda com formatação de valor por extenso no Access 2007.

    Tenho um formulário que se baseá em uma consulta de uma tabela, neste formulário tem uma opção para imprimir relatório.
    Neste relatório gostaria que um campo pegasse o valor da duplicata e transformasse em extenso.

    Ex.: valoDupli = 200,00
    extenso = duzentos reais

    Alguém pode me ajudar, já tentei todos os tópicos do fórum mas não consegui.

    Tentei dessa forma:

    1.Criei um modulo chamado Extenso com o conteúdo:

    Option Compare Database
    Option Explicit

    'Função para conversão de Número para seu respectivo valor em Extenso
    Function Extenso(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) = "Três "
    aUnid(4) = "Quatro ": aUnid(5) = "Cinco ": aUnid(6) = "Seis "
    aUnid(7) = "Sete ": aUnid(Cool = "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) = "Sententa ": aDezena(Cool = "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(Cool = "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, "Milhões ", "Milhão "), "")
    If Val(aGrupo(2) + aGrupo(3)) = 0 Then
    cFinal = cFinal + "de "
    Else
    cFinal = cFinal + IIf(Val(aGrupo(2)) <> 0, aTexto(2) + "Mil ", "")
    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
    Extenso = cFinal
    End Function


    2.No campo do relatório onde quero q o valor apareça em extenso coloquei isso em Fonte do Controle:

    ="(" & Extenso([valoDupli]) & ")" onde [valoDupli] é o campo que contem o valor

    Como resultado apos executar o relatório antes que seja aberto aparece um parametro na tela pedindo um conteudo para Extenso.

    Alguem ai pode me ajudar por favor.


    Obrigado
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    Valor por Extenso - Access 2007 Empty Re: Valor por Extenso - Access 2007

    Mensagem  JPaulo 4/6/2013, 16:15

    Tópico movido para a sala correta.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Valor por Extenso - Access 2007 Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Valor por Extenso - Access 2007 Folder_announce_new 102 Códigos VBA Gratuitos...
    Valor por Extenso - Access 2007 Folder_announce_new Instruções SQL como utilizar...

      Data/hora atual: 8/11/2024, 08:48