Valor de data por extenso
Adquira a assinatura vitalícia do site e passe a ter acesso aos arquivos exemplos, vídeos, revistas, livros e ao kit de montagem de ribbons. Você terá suporte por e-mail, caso necessite tirar dúvidas pontuais. Clique AQUI e veja como obter um dos nossos planos. Clique AQUI e faça uma visita a seção Downloads do site e verifique as centenas de arquivos que estará à sua disposição. Clique AQUI e faça uma visita a seção Vídeos do site e veja a lista que estará disponível ao se tornar o nosso assinante vitalício. Clique AQUI e saiba mais detalhes sobre o kit de montagem de ribbons (deixe seus aplicativos com aspecto profissional).
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.
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.
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!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Segurança máxima, usando o OPEN
Vídeo - Aprenda sobre filtragens
Uma ajuda para quem está começando um negócio ou um projeto
Vídeo - Programação de relatórios - Parte 1
Desabilitando a faixa(ribbon) superior do Access
Adquira o kit UsandoAccess e aprenda em alta velocidade
Integrando o Access com Servidor MySQL - Introdução
Como carregar o seu menu sem que ele vá para lista de suplementos
3 comentário(s) 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! James Resplandes 04/03/2019 05:59:46 Voce poderia explicar esse Case 21 To 29, 31? Ficou muito top, parabéns novamente. |