Fórum SQL - Consultar Datas de Aniversário e Coloar em Ordem #228127
27/04/2004
0
Tenho uma tabela com uma porrada de registro, é um cadastro de funcionários, agora tenho que fazer uma listagem dos aniversariantes do mes, só que eles querem que eu coloque por ordem do DIA do aniversário. Se eu colocar ORDER BY DataNasc, ele não vai colocar nesta maneira, tenho como fazer isto sem ter que criar um novo campo na tabela ???
Aguardo a colaboração da galera.
Shaolin
Curtir tópico
+ 0Post mais votado
27/04/2004
Shaolin
Gostei + 1
Mais Posts
27/04/2004
Marco Salles
function IrFinalMes(Mes:word):Word; begin if (mes=1)or(mes=3)or(mes=5)or(mes=7)or(mes=8)or(mes=10)or(mes=12) then begin result:=31; exit; end; if (mes=4)or(mes=6)or(mes=9)or(mes=11) then begin result:=30; exit; end; if mes=2 then result:=28; end;
obs:Que eu não estou preocupando com o ano bissesto...Porque quem nasce em anos bissestos comemoram a data de nascimento ou no dia 28 ou no dia 01...[b:f309e241e9]Mas atenção [/b:f309e241e9]...Na hora de fazer o cadastro com a data de nascimento deve colocar no banco a data de aniversário...Isto nao e um erro no processo Atual que eu estou te passando , [b:f309e241e9]isto independe do método[/b:f309e241e9] e é um alerta....Para resolver isto deforma exata precissa de mais códigos, que não estou colocando aqui
[b:f309e241e9]Finalmente nossa pesquisa sql :[/b:f309e241e9]
var
InicioMes,FinalMes:TDate;
begin
DecodeDate(Date,ano,mes,dia); dia:=IrFinalMes(mes); InicioMes:=Encodedate(ano,mes,01); Finalmes:=EncodeDate(Ano,mes,dia); query1.close; query1.sql.clear; query1.sql.add(´Select *From NomeDaTabela´); query1.sql.add(´Where DataNasc>=:DataInicial´) query1.ParamByName(´DataInicil´).AsDateTime:=Iniciomes; query1.sql.add(´and DataNasc<=:DataFinal´) query1.ParamByName(´DataFinal´).AsDateTime:=FinalMes; query1.sql.Add(´order by DataNasc,Nome´); query1.Prepare; query1.open;
Se Não entendeu Poste Para gente...A gente com maior prazer perde um tempinho nas colocações e o minimo que a gente que saber se a pessoa entendeu,não entendeu, não concorda, deu certo , deu errado etcc...Sem estas colocações como poderemos ajudar as outras pessoas :P
Gostei + 1
27/04/2004
Marco Salles
Gostei + 0
27/04/2004
Shaolin
SELECT * FROM Cadastro WHERE EXTRACT(Month From DataNasc)=´+IntToStr(CB_Mes.Tag)
Estava revisando o teu código, acabei não testando, mas notei que ele vai parametrizar duas datas, terei que informar o ano em todas as pesquisas. Mas de qualquer forma, valeu a dica. Tentei outra vez fazer assim:
SELECT * FROM Cadastro WHERE EXTRACT(Month From DataNasc)=8 ORDER BY EXTRACT(Day From DataNasc)
Mas ai não deu certo.
Gostei + 0
27/04/2004
Marco Salles
99,99¬ eu acho que o Extract Month não é suportado pelo Paradox...
Não...A Consulta sql que lhe passei fornece os [b:99eaf3ef9a]aniversariantes do mes atual....Date[/b:99eaf3ef9a].e não todos os aniversariantes agrupados mes a mes...Porque veja bem , Parece que voce pediu aniversariantes do mes:
Agora:
Gostei + 0
29/04/2004
Shaolin
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)