Fórum consulta em dois edit's usando adoquery #402278

03/06/2011

0

Olá, esse é minha primeira vez aqui no fórum :d

Estou tentando fazer um pesquisa mas não está dando certo...

Tenho essa tela de pesquisa e esse código no adoquery...




Estou usando o seguinte código no evento OnChange dos edit's

if edtConsultar.Text <> '' then
    begin
      qryGrid.Close;
      qryGrid.Parameters.ParamByName('processo').Value := edtConsultar.Text;
      qryGrid.Open;
    end
  else
    begin
      qryGrid.Close;
    end;

O mesmo código para os dois edit's (alterando somente os nomes dos componentes, lógico)

A consulta está sendo feita, porém, quando eu pesquiso o processo primeiro ele pesquisa certinho,
aí quando eu mudo para o outro edit e digito algo para pesquisar ele me retorna um monte de dados
que eu não pesquisei (geralmente dados pesquisado no edit anterior)...
a mesma coisa acontece se eu começar a pesquisar no edit de baixo, ele dá certo, mas quando passo
para o edit de cime me retorna uma pesquisa imprecisa...

Grato...

Klaus

Klaus

Responder

Posts

06/06/2011

Nigro

Basicamente no seu exemplo você tem dois parâmetros, mas nos seus fontes o outro parâmetro não é citado.  
qryGrid.Close;

if edtConsultar.Text <> '' then
      qryGrid.Parameters.ParamByName('processo').Value := edtConsultar.Text;

if edtProcesso.Text <> '' then
     qryGrid.Parameters.ParamByName('processo').Value := edtConsultar.Text;
 
qryGrid.Open;
 

 
Responder

Gostei + 0

06/06/2011

Emerson Nascimento

os dois campos de pesquisa podem ser usados simultaneamente?

se puderem ser usados simultaneamente:

cSQL := 'select * from controle';
cCondicao := '';

if edtConsultar.Text <> '' then
  cCondicao := cCondicao + 'processo like '+QuotedStr('%'+edtConsultar.Text+'%');

if edtExecutado.Text <> '' then
begin
  if cCondicao <> '' then cCondicao := cCondicao + ' and ';
  cCondicao := cCondicao + 'executado like '+QuotedStr('%'+edtExecutado.Text+'%');
end;

if cCondicao <> '' then
  cSQL := cSQL + ' where ' + cCondicao;

qryGrid.Close;
qryGrid.SQL.Text := cSQL;
qryGrid.Open;



se puder ser pesquisado somente um dos campos:

cSQL := 'select * from controle';

if edtConsultar.Text <> '' then
  cSQL := cSQL + ' where processo like '+QuotedStr('%'+edtConsultar.Text+'%');
else
if edtExecutado.Text <> '' then
  cSQL := cSQL + ' where executado like '+QuotedStr('%'+edtExecutado.Text+'%');

qryGrid.Close;
qryGrid.SQL.Text := cSQL;
qryGrid.Open;


Responder

Gostei + 0

09/06/2011

Klaus

Obrigado Emerson, deu certinho cara!! :D
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar