Selecionar uma data entre vários campos com datas
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Cezar:
Boa tarde.
Trabalho com convênios em uma prefeitura e estou tentando criar um Banco de Dados para me auxiliar no controle dos meus projetos. Preciso criar uma consulta que envolva várias colunas com datas, com a seguinte situação:
Inicio_Vigencia | Fim_Vigencia | 1º_termo_Adit | 2º_termo_Adit | 3º_termo_Adit | 4º_termo_Adit |
01/01/2010 | 01/01/2014 | 01/01/2011 | 01/01/2012 | 01/01/2013 | 01/01/2014 |
01/01/2015 | 01/01/2017 | 01/01/2016 | 01/01/2017 |
Preciso que a coluna Fim_Vigencia me retorne a data mais recente, no exemplo acima (01/01/2014) para o primeiro registro e (01/01/2017) no segundo registro.
Espero que possa me ajudar. Já tentei encontrar uma solução e até agora nada.
Aproveito para agradecer a você, Avelino, pelas postagens e tutoriais. Tem ajudado muitas pessoas a enriquecer conhecimentos. Obrigado!
Suporte:
Cezar, veja se o arquivo exemplo atende.
Utilizei a seguinte função para retornar a maior data entre os campos:
Public Function fncFimVigencia(dt1 As Date, dt2 As Date, dt3 As Date, dt4 As Date, dt5 As Date)
On Error Resume Next
If (dt5 > dt4) And (dt5 > dt3) And (dt5 > dt2) And (dt5 > dt1) Then fncFimVigencia = dt5
If (dt4 > dt5) And (dt4 > dt3) And (dt4 > dt2) And (dt4 > dt1) Then fncFimVigencia = dt4
If (dt3 > dt5) And (dt3 > dt4) And (dt3 > dt2) And (dt3 > dt1) Then fncFimVigencia = dt3
If (dt2 > dt5) And (dt2 > dt4) And (dt2 > dt3) And (dt2 > dt1) Then fncFimVigencia = dt2
If (dt1 > dt5) And (dt1 > dt4) And (dt1 > dt3) And (dt1 > dt2) Then fncFimVigencia = dt1
End Function
A função foi utilizada da seguinte forma, na consulta:
SELECT Data_Inicio_Vigencia, Vig_1º_Termo_Aditivo, Vig_2º_Termo_Aditivo, Vig_3º_Termo_Aditivo,
Vig_4º_Termo_Aditivo, fncFimVigencia(Nz([data_Inicio_Vigencia],0),Nz([Vig_1º_Termo_Aditivo],0),
Nz([Vig_2º_Termo_Aditivo],0),Nz([Vig_3º_Termo_Aditivo],0),Nz([Vig_4º_Termo_Aditivo],0)) AS Data_Fim_Vigência FROM tblTeste;
Usuário Cezar:
Avelino, muito obrigado!
Exatamente o que eu precisava.
Download
1 comentário(s) MARCIO MELO - RJ 27/03/2023 05:14:52 Show hein! Gosto de ver as soluções que o Mestre Avelino emprega, isso acaba me encorajando e expirando para fazer minhas tentativas. Uma solução limpa e perfeita, uma função para ser usada numa consulta e abastecer um campo com o valor sugerido. Grato! por apresentar mais uma solução... criatividade... Sou mais Brasil! Forte abraço! |