Fórum Select para pesquisa com a opção do usuário buscar por um ou varios campos #581062
08/05/2017
0
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??
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
Curtir tópico
+ 0
Responder
Post mais votado
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:
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();
Gutierry Pereira
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)