... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Selecionar uma data entre vários campos com datas

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/2018 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!


Envie seu comentário: