Delphi : Erro ao tentar realizar buscar por uma ZQuery

Algoritmo

Delphi

10/01/2018

Galera estou criando uma tela de vendas em delphi, tenho tudo quase pronto mais ao tentar criar uma busca por nome atraves de uma ZQUERY, ou seja da um select na minha tabela e busca pelo nome todas as vendas realizadas por um determinado cliente e me lista tudo em um dbgrid, ate ai tudo bem, mais ao digitar um nome que não existe cadastrado da um erro: "E ListError with message 'List index out of bounds (8)' ", queria um ajuda, desde já agradeço
Codigo de busca no evento onchange do meu edit:

begin

if dbedit5.Text <> ('')then


begin
try
DBEdit11.Text := Edit1.Text;
Dm_bomboniere.ZQuery1.Close;

Dm_bomboniere.ZQuery1.Params.ParamByName('pnome').Value := Edit1.Text +'%';

Dm_bomboniere.ZQuery1.Open;

Dm_bomboniere.ZT_saida_p.Locate('saida_p_nome',Edit1.Text,[loPartialKey,loCaseInsensitive]);

except

on E :Exception do
ShowMessage('Erro');


end;


end;
Paulo

Paulo

Curtidas 0

Respostas

Luiz Vichiatto

Luiz Vichiatto

10/01/2018

Paulo, você fez a consulta retornar e faz a busca em outra.
Esta linha no teu código:
Dm_bomboniere.ZT_saida_p.Locate('saida_p_nome',Edit1.Text,[loPartialKey,loCaseInsensitive]);

begin

if dbedit5.Text <> ('')then


begin
try
DBEdit11.Text := Edit1.Text;
Dm_bomboniere.ZQuery1.Close;

Dm_bomboniere.ZQuery1.Params.ParamByName('pnome').Value := Edit1.Text +'%';

Dm_bomboniere.ZQuery1.Open;

Dm_bomboniere.ZQuery1.Locate('saida_p_nome',Edit1.Text,[loPartialKey,loCaseInsensitive]);

except

on E :Exception do
ShowMessage('Erro');


end;


end;
GOSTEI 0
Paulo

Paulo

10/01/2018

Opa Luiz muito obrigado pela resposta, eu já tinha realizado essa alteração mais o erro continua, tipo ao pesquisar um cliente cadastrado tudo bem roda legal, mais se eu buscar um nome de uma pessoa que não esta cadastrado ele da esse erro citado no meu post.
GOSTEI 0
Paulo

Paulo

10/01/2018

Consegui , fiz uma condição que elimina a possibilidade de erro na busca segue em baixo o código atualizado:

begin
Dm_bomboniere.ZT_saida_p.Locate('saida_p_nome',Edit1.Text,[loPartialKey,loCaseInsensitive]);

Dm_bomboniere.ZT_Parcelas.Locate('Nome_Cliente',Edit1.Text,[loPartialKey,loCaseInsensitive]);

if (dbedit5.Text <> ('')) and (Edit1.Text = Dm_bomboniere.ZT_saida_psaida_p_nome.Text) then


begin
try
Dm_bomboniere.ZQuery1.Close;

Dm_bomboniere.ZQuery1.Params.ParamByName('pnome').Value := Edit1.Text +'%';

Dm_bomboniere.ZQuery1.Open;


Dm_bomboniere.ZQuery1.Refresh;


Dm_bomboniere.ZQuery1.Refresh;


Dm_bomboniere.ZT_saida_p.Locate('saida_p_nome',Edit1.Text,[loPartialKey,loCaseInsensitive]);

Dm_bomboniere.ZT_Parcelas.Locate('Nome_Cliente',Edit1.Text,[loPartialKey,loCaseInsensitive]);


except

on E :Exception do
ShowMessage('Erro');


end;


end;

end;
GOSTEI 0
POSTAR