Delphi : Erro ao tentar realizar buscar por uma ZQuery
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;
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
Curtidas 0
Respostas
Luiz Vichiatto
10/01/2018
Paulo, você fez a consulta retornar e faz a busca em outra.
Esta linha no teu código:
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
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
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;
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