Loop while not eof não está funcionando.

Delphi

05/06/2023

Boa tarde, tenho uma tabela que armazena vendas de mercadorias, criei um campo nessa tabela chamado itemCod (numérico) para armazenar os
itens referentes a cada venda ex: produto A item 1, produto B item 2 assim por diante, queria criar um botão no formulário que ao clicar
preenchesse automaticamente esse campo das vendas anteriores. Estou tentando criar um laço (loop) com o while not eof, mas não estou conseguindo. Obrigado.
Numero de item para cada produto no formulário de vendas
Adão Silva

Adão Silva

Curtidas 0

Respostas

Paulo

Paulo

05/06/2023

Boa tarde, tenho uma tabela que armazena vendas de mercadorias, criei um campo nessa tabela chamado itemCod (numérico) para armazenar os
itens referentes a cada venda ex: produto A item 1, produto B item 2 assim por diante, queria criar um botão no formulário que ao clicar
preenchesse automaticamente esse campo das vendas anteriores. Estou tentando criar um laço (loop) com o while not eof, mas não estou conseguindo. Obrigado.
Numero de item para cada produto no formulário de vendas


Posta o código
GOSTEI 0
Adão Silva

Adão Silva

05/06/2023

Obrigado,segue,,,,, código...
var
x, lista: integer;
begin
lista:=form1.ADOTable2.FieldByName('codigoVendas').Value;
x:=0;
form1.ADOTable2.Edit;
while Not form1.ADOTable2.Eof do
begin
x:=x+1;
if lista <> 0 then

form1.ADOTable2codItem.value:= x;
form1.ADOTable2.Next;
form1.ADOTable2.Edit;
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

05/06/2023

Talvez a chamada do método Edit, de dentro do loop esteja prejudicando a execução.

Você pode tentar uma pequena mudança:

var
  x, lista: integer;
begin
  x:=0;
  while Not form1.ADOTable2.Eof do
  begin
    lista:=form1.ADOTable2.FieldByName('codigoVendas').Value;
    if lista <> 0 then
      begin
        x:=x+1;
        form1.ADOTable2.Edit;
        form1.ADOTable2codItem.value:= x;
      end;
    form1.ADOTable2.Next;
  end;
end;


Porém, a lógica da numeração talvez precise ser revista.
GOSTEI 0
Adão Silva

Adão Silva

05/06/2023

Boa tarde, era exatamente isso, agora deu certo muito obrigado......
GOSTEI 0
POSTAR