.EOF causando travamento do programa

MySQL

Delphi

07/06/2016

Olá a todos!

Estou utilizando a seguinte sintaxe para verificar se o código de barras digitado no Edit existe no banco de dados, porém quando ela é acionada o programa trava, alguem saberia dizer porque?

while not FMForm.produtoQuery.Eof do
begin
if(FMForm.produtoQuery['codigobarras']) <> edt_codbarras.Text then
FMForm.produtoQuery.Next;
end;
Vitor Ferreira

Vitor Ferreira

Curtidas 0

Respostas

Luiz Menin

Luiz Menin

07/06/2016

A lógica está errada.
Quando ele encontra o dado (codigobarras = edt_codbarras) simplesmente não é tomada nenhuma ação, ou seja, ele não dá Next e retorna o while e entra em loop infinito, travando a aplicação.
Utilize a função Locate ao invés do while, ou, uma opção ainda melhor é consultar direto ao banco de dados via Query.
GOSTEI 0
POSTAR