Fórum Pesquisa com vários campos de busca #581208
10/05/2017
0
select * from pacientes
where UPPER (nome_paciente) like UPPER (:NomePaciente)
or pront_grad = :ProntGrad
or pront_pos = :ProntPos
or pront_emerg = :ProntEmerg
No código fiz o seguinte:
ClientPacientes.Close;
QueryPacientes.Close;
// Edit Nome
if EditPaciente.Text <> ' ' then
begin
QueryPacientes.ParamByName('NomePaciente').AsString
:= '%' + EditPaciente.Text + '%';
end
else
begin
QueryPacientes.ParamByName('NomePaciente').AsString := '%%';
end;
//Edit Pront Grad
if EditGrad.Text <> ' ' then
begin
QueryPacientes.ParamByName('ProntGrad').AsString := EditGrad.Text;
end;
// Edit Pront Pos
if EditPos.Text <> ' ' then
begin
QueryPacientes.ParamByName('ProntPos').AsString := EditPos.Text;
end;
if EditEmerg.Text <> ' ' then
begin
QueryPacientes.ParamByName('ProntEmerg').AsString := EditEmerg.Text;
end;
QueryPacientes.Open;
ClientPacientes.Open;
Se o usuario digita no campo nome a pesquisa está ok, mas se digita em algum dos campos de pront a dbgrid me traz todos os dados e não somente o desejado. Alguém pode me ajudar na solução?
Deise Souza
Curtir tópico
+ 0Post mais votado
10/05/2017
Jones Granatyr
Gostei + 2
Mais Posts
11/05/2017
Natanael Ferreira
Segue exemplo:
var
SqlWhereAnd: string;
begin
ClientPacientes.Close;
with QueryPacientes do
begin
Close;
SQL.Clear;
SQL.Add('select * from pacientes');
SqlWhereAnd := 'where';
// Edit Nome
if Trim(EditPaciente.Text) <> EmptyStr then
begin
SQL.Add(SqlWhereAnd + ' UPPER(nome_paciente) like UPPER(:NomePaciente)');
ParamByName('NomePaciente').AsString := '%' + EditPaciente.Text + '%';
SqlWhereAnd := ' and ';
end;
// Edit Pront Grad
if EditGrad.Text <> EmptyStr then
begin
SQL.Add(SqlWhereAnd + ' pront_grad = :ProntGrad');
ParamByName('ProntGrad').AsString := EditGrad.Text;
SqlWhereAnd := ' and ';
end;
// Edit Pront Pos
if EditPos.Text <> EmptyStr then
begin
SQL.Add(SqlWhereAnd + ' pront_pos = :ProntPos');
ParamByName('ProntPos').AsString := EditPos.Text;
SqlWhereAnd := ' and ';
end;
if EditEmerg.Text <> EmptyStr then
begin
SQL.Add(SqlWhereAnd + ' pront_emerg = :ProntEmerg');
ParamByName('ProntEmerg').AsString := EditEmerg.Text;
SqlWhereAnd := ' and ';
end;
Open;
end;
ClientPacientes.Open;
end;Gostei + 1
12/05/2017
Deise Souza
Gostei + 0
12/05/2017
Natanael Ferreira
select * from pacientes
No exemplo que passei esta propriedade será limpada e preenchida dinamicamente quando aquele código for chamado.
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)