Delphi : Erro ao tentar realizar buscar por uma ZQuery

10/01/2018

0

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

Responder

Posts

11/01/2018

Luiz Vichiatto

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;
Responder

12/01/2018

Paulo

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.
Responder

12/01/2018

Paulo

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;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar