bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Valor de data por extenso
Valor de data por extenso

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

Desenvolvi uma função que transforma uma data por extenso. Exemplo: 23/11/2016 ::> Vinte e três de novembro de dois mil e dezesseis.

A função analisa datas entre 01/01/1001 e 31/12/2999. 

Public Function fncDataExtenso(Dta As Date)
Dim u, d, c, l, m, dia, ano
Const strUni = "um,dois,três,quatro,cinco,seis,sete,oito,nove"
 
Const strDez = "dez,onze,doze,treze,quatorze,quinze,dezesseis, _
dezessete,dezoito,dezenove,vinte,trinta,quarenta,cinquenta, _
sessenta,setenta,oitenta,noventa"
 
Const strCen = "cem,duzentos,trezentos,quatrocentos,quinhentos, _
seiscentos,setecentos,oitocentos,novecentos"
 
Const strMil = "mil,dois mil"
 
Const strMes = "janeiro,fevereiro,março,abril,maio,junho,julho, _
agosto,setembro,outubro,novembro,dezembro"

u = Split(strUni, ",")
d = Split(strDez, ",")
c = Split(strCen, ",")
l = Split(strMil, ",")
m = Split(strMes, ",")
'----------------
'montagem do dia
'----------------
Select Case Day(Dta)
    Case Is < 10
        dia = u(Day(Dta) - 1)
    Case 10 To 19
        dia = d(Day(Dta) - 10)
    Case 20, 30
        dia = d(Left(Day(Dta), 1) + 8)
    Case 21 To 29, 31
        dia = d(Left(Day(Dta), 1) + 8) & " e " & u(Right(Day(Dta), 1) - 1)
End Select

'----------------
'montagem do ano
'----------------
If Year(Dta) < 1000 Or Year(Dta) > 2999 Then Exit Function
ano = l(Left(Year(Dta), 1) - 1)
If Mid(Year(Dta), 2, 1) > 0 Then
    If Right(Year(Dta), 2) = 0 Then
        ano = ano & " e " & c(Mid(Year(Dta), 2, 1) - 1)
    Else
        ano = ano & " " & IIf(c(Mid(Year(Dta), 2, 1) - 1) = "cem", "cento", _ 
        c(Mid(Year(Dta), 2, 1) - 1))
    End If
End If
Select Case Right(Year(Dta), 2)
    Case 0
        ano = ano
    Case 1 To 10
        ano = ano & " e " & u(Right(Year(Dta), 2) - 1)
    Case 10 To 19
        ano = ano & " e " & d(Right(Year(Dta), 2) - 10)
    Case 20 To 99
        ano = ano & " e " & d(Mid(Year(Dta), 3, 1) + 8)
        If Right(Year(Dta), 1) > 0 Then 
           ano = ano & " e " & u(Right(Year(Dta), 1) - 1)
        end if
End Select

'----------------------
'montagem por extenso
'----------------------
fncDataExtenso = dia & " de " & m(Month(Dta) - 1) & " de " & ano
End Function

Baixe o arquivo:

Clique aqui e baixe o arquivo exemplo.

Abra a consulta do arquivo exemplo e veja o retorno dos nomes por extenso.

Usando Access - Data por extenso

Veja como foi aplicada a função na consulta:

SELECT DataArquivo, fncDataExtenso([dataArquivo]) AS Extenso
FROM tblTeste;

Agora, abra o formulário frmTeste, escolha uma data qualquer e clique no botão Visualizar o relatório.  Observe a data por extenso no relatório.

Usando Access - Data por extenso

O relatório apresenta o seguinte código no evento Ao carregar:

Private Sub Report_Load()
Me!Texto0 = "[div]Avelino Sampaio nasceu em [font color=red]" _ 
& fncDataExtenso(Me.OpenArgs) & "[/font][/div]"
End Sub

Bom estudo!


 

 


4 comentário(s)

Leonardo Marques   08/06/2023 07:28:48

Parabens pelo código! Muito bom mesmo.
Mas acho que encontrei um bug no codigo para data do ano de 2010.
Na parte do codigo:

Select Case Right(Year(Dta), 2)
Case 0
ano = ano
Case 1 To 10 <------ Aqui o certo seria 9 no lugar do 10.
ano = ano & " e " & u(Right(Year(Dta), 2) - 1)
Case 10 To 19
ano = ano & " e " & d(Right(Year(Dta), 2) - 10)

Espero ter contribuído.
Mais uma vez parabens pelo grande trabalho.

James Resplandes   04/03/2021 05:59:46

Voce poderia explicar esse Case 21 To 29, 31?
Ficou muito top, parabéns novamente.

elseias gouveia silva   05/03/2019 06:02:20

Muito boa essa dica!

Parabéns!

Hernani   04/03/2019 11:32:52

Excelente trabalho! Como eu não consegui trabalhar com Access desde que eu comecei o curso por motivos pessoais, acabei inclusive me descadastrando da lista, mas vou retornar para ver mais dicas como esta!
Por se tratar de VBA eu poderia utilizar esta função em qualquer documento do Office, certo? Só precisaria fazer algum ajuste para se adequar a minha solução.

Parabéns pelo seu trabalho, conheço o seu curso e acompanho suas publicações há vários anos!


Envie seu comentário: