Série da semana: Seja um mestre SQL, padawan!

Veja mais

Delphi : Erro ao tentar realizar buscar por uma ZQuery

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;

Respostas

11/01/2018

Luiz Vichiatto Currículo

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 Citar

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 Citar

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 Citar