DBgrid de aniversariante

15/10/2019

11

Olá! montei um DBgrid no Delphi, para listar aniversariantes do dia. Ao entrar no sistema, o DBGRID lista as pessoas cadastradas que estão fazendo aniversario no dia.
porem, só consegui verificar a data do computador, ou seja se eu alterar o ano, já não da certo.

No SQL da Query coloquei isso:
SELECT CONTATO_NOME, CONTATO_NASC, CONTATO_TELEFONE1 FROM CONTATO
WHERE CONTATO_NASC = :PASSA_DATA

E no FormShow:
cdsniver.close;
qryniver.paramByName('PASSA_DATA').AsDate := Date;
cdsniver.Open;

No caso teria que verificar o dia e o mês, para assim trazer o nome da pessoa e a data cadastrada.

Grato!
Responder

Post mais votado

18/10/2019

no Firebird
extract(month from campo)
extract(day from campo)
SELECT
	CONTATO_NOME, CONTATO_NASC, CONTATO_TELEFONE1
FROM
	CONTATO
WHERE
	extract(month from CONTATO_NASC) = extract(month from :PASSA_DATA)
	and extract(day from CONTATO_NASC) = extract(day from :PASSA_DATA)
Responder

Mais Posts

16/10/2019

Luiz Vichiatto

Olá Carlos.

Já passei por esta situação, e resolvi assim.

SELECT CONTATO_NOME, CONTATO_NASC, CONTATO_TELEFONE1 FROM CONTATO
WHERE month(CONTATO_NASC) = month(:PASSA_DATA) and day(CONTATO_NASC) = day(:PASSA_DATA) 

Claro que tem que verificar se as funções do banco para mês (month) e dia (day) são estas, foi assim que resolvi.

Sucesso e bons códigos!
Responder

18/10/2019

Carlos

Obrigado! só deu erro mesmo nessa questão do "month", eu não conseguir ver como é parametrizado no banco de Dados. E por ser firebird, em todo os lugares fala que realmente é "MONTH", fiquei um pouco perdido agora rsrs.
Responder

21/10/2019

Carlos

Obrigado pela ajuda.
Mas esta dando o seguinte erro: specified extract part does not exist in inpit datatype.

Vi que já aconteceu com algumas pessoas, mas ninguém soube resolver. Caso saiba poderia me ajudar?
Talvez seja por conta da versão no firebird, não sei.
estou usando o firebird 2.5
Responder

22/10/2019

Carlos

Consegui utilizando o currente_date ao invés de passa_data

Obrigado!
Responder