Fórum Lista de Aniversariantes não elimina falecidos #598765
22/11/2018
0
Olá amigos, estou com um probleminha para eliminar da lista de aniversariantes da semana os registros de pessoas já falecidas. Na tabela de cadastro tenho um campo "status", com as opções ativo, inativo, ausente, impossibilitado, desligado e falecido. Quando alguém morre, mudamos o status para "falecido".
Mas quando consulto os aniversariantes da semana, ele retorna também os falecidos. Meu código tá assim:
O que pode estar errado?
Mas quando consulto os aniversariantes da semana, ele retorna também os falecidos. Meu código tá assim:
if monthOf(Datetimepicker1.DateTime) <= monthOf(Datetimepicker2.DateTime) then
begin
//Realiza a consulta
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('SELECT * FROM CadPessoas');
AdoQuery1.SQL.Add('WHERE ((Month(DtNasc) * 100) + Day(DtNasc)) between :pinicial and :pfinal');
ADOQuery1.SQL.add(' and Status <> (' + QuotedStr('Falecido') +')');
AdoQuery1.SQL.Add('Order by DtNasc');
AdoQuery1.Parameters.ParamByName('pinicial').Value := MonthOf(datetimepicker1.Date) * 100 + DayOf(datetimepicker1.Date);
AdoQuery1.Parameters.ParamByName('pfinal').Value := MonthOf(datetimepicker2.Date) * 100 + DayOf(datetimepicker2.Date);
Adoquery1.Open;
end
else
begin
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('SELECT * FROM CadPessoas');
AdoQuery1.SQL.Add('WHERE ((Month(DtNasc) * 100) + Day(DtNasc)) between :pinicial and :pfinal');
AdoQuery1.SQL.Add('or ((Month(DtNasc) * 100) + Day(DtNasc)) between :pinicial2 and :pfinal2');
ADOQuery1.SQL.add(' and Status <> (' + QuotedStr('Falecido') +')');
AdoQuery1.SQL.Add('Order by DtNasc');
AdoQuery1.Parameters.ParamByName('pinicial').Value := MonthOf(datetimepicker1.Date) * 100 + DayOf(datetimepicker1.Date);
AdoQuery1.Parameters.ParamByName('pfinal').Value := 1231;
AdoQuery1.Parameters.ParamByName('pinicial2').Value := 101;
AdoQuery1.Parameters.ParamByName('pfinal2').Value := MonthOf(datetimepicker2.Date) * 100 + DayOf(datetimepicker2.Date);
Adoquery1.Open;
end;
O que pode estar errado?
Edilson Santiago
Curtir tópico
+ 0
Responder
Posts
23/11/2018
Alex William
O filtro de data com BETWEEN tem que ser o ultimo parametro do WHERE.
Qualquer parametro depois do BETWEEN o SQL interpreta como parte dele.
Varias queries que eu fiz ja deram esse problema.
Espero ter ajudado. :D
Qualquer parametro depois do BETWEEN o SQL interpreta como parte dele.
Varias queries que eu fiz ja deram esse problema.
Espero ter ajudado. :D
Responder
Gostei + 0
23/11/2018
Emerson Nascimento
Qual é o banco de dados utilizado? A query, transcrita exatamente como está no código Delphi, funciona diretamente no banco de dados?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)