.EOF causando travamento do programa
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?
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;
begin
if(FMForm.produtoQuery['codigobarras']) <> edt_codbarras.Text then
FMForm.produtoQuery.Next;
end;
Vitor Ferreira
Curtidas 0
Respostas
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.
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