Select para pesquisa com a opção do usuário buscar por um ou varios campos

Delphi

08/05/2017

Olá! Sou iniciante em delphi e estou com uma dúvida. No meu projeto tenho 4 edit como campo de pesquisa. Um editnome, que busca por nome do paciente, um editprontgrad que busca pelo numero do prontuario da graduação, um editprontpos, que busca pelo numero do prontuário da pós e um editemerg, que busca pelo numero do prontuario da emergencia. No sql da query coloquei o seguinte código:

select * from pacientes
where UPPER (nome_paciente) like UPPER (:NomePaciente)
and pront_grad like :ProntGrad
and pront_pos like :ProntPos
and pront_emerg like :ProntEmerg

No código fiz assim para cada campo:
if EditGrad.Text <> ' ' then
begin
QueryPacientes.ParamByName('ProntGrad').AsString := EditGrad.Text;
end
else
begin
QueryPacientes.ParamByName('ProntGrad').AsString := '%%';

Mas não consigo trazer nenhum dado. Algúem poderia me ajudar na solução??
Deise Souza

Deise Souza

Curtidas 0

Melhor post

Gutierry Pereira

Gutierry Pereira

08/05/2017

Bom dia,
O que deve se fazer e montar esse select dinamicamente conforme os campos estejam preenchidos. Como sua clausula é um and da formda que esta fazendo o registro deve conter todas as condições para ser retornado. Então faça algo assim:

  minhaQuery.sql.add('Select * from suaTabela');
  minhaQuery.sql.add('Where <Condição_1>');

  if (EdtProntPos.text.empty) then 
     minhaQuery.add.('and campoProntPos =' + quotToStr(EdtProntPos.text));

  if (EdtProntGrad.text.empty) then 
     minhaQuery.add.('and campoProntGrad =' + quotToStr(EdtProntGrad.text));

  minhaQuery.open();

GOSTEI 1
POSTAR