Fórum Barra de Progresso em uma Query #369225

21/03/2009

0

Pessoal,

Tenho a rotina abaixo:
ibquery49.close;
ibquery49.open;
ibquery49.first;
while not ibquery49.Eof do
begin
preco:= IBQuery49PV.AsString;
preco:= floattostr(strtofloat(preco) + strtofloat(preco) * strtofloat(edit2.text) / 100);
valor:= strtofloat(preco);
casas:= 2;
result:= floattostrf(valor,ffFixed,18,casas);
preco:= result;

If not frmprincipal.IBSQL.Transaction.InTransaction then
frmprincipal.IBSQL.Transaction.StartTransaction;
frmprincipal.IBSQL.Close;
frmprincipal.IBSQL.SQL.Clear;
frmprincipal.IBSQL.SQL.Add(´UPDATE PRODUTO SET´);
frmprincipal.IBSQL.SQL.Add(´PRECOPROMO = :p1´);
frmprincipal.IBSQL.SQL.Add(´Where BARRAS = ´+QuotedStr(IBQuery49BARRAS.AsString));
frmprincipal.IBSQL.Prepare;
frmprincipal.IBSQL.ParamByName(´p1´).Asstring:= preco;
frmprincipal.IBSQL.ExecQuery;
frmprincipal.IBSQL.Transaction.CommitRetaining;
ibquery49.next;
end;

E gostaria que enquanto fosse lendo esta query49, fosse mostrado uma barra de progresso...Poderiam me dar alguma dica de como fazer isso?
Grato.

Rogerio.


Lrbusch

Lrbusch

Responder

Posts

21/03/2009

Otto

Olá Jovem, depois da facilidade dos novos delphi´s, nao sei bem qual a paleta que ele fica, mas, existe o Gauge e o ProgressBar, voce poderá utilizado enquando esta fazendo seu while not EoF.
após o Open nao precisa da um first, ele ja posiciona o cursor no inicio.

tipo, digamos que seu TProgressBar seja chamado de pb
ai voce faz:

pb.Min := 0;
pb.Max := Query.RecordCount;
while not Query.EoF do
begin
  // seu código
  pb.Progress := pb.Progress + 1;
  QUery.Next;
  Application.ProcessMessage;
end;


o proccess messages é pra a barra aparecer enquanto ta rolando o tratamento.
espero que seja isso, abraço


Responder

Gostei + 0

21/03/2009

Otto

Correção

pb.Min := 0;
pb.Max := Query.RecordCount;
pb.Position := 0;
while not Query.EoF do
begin
  // seu código
  pb.Position := pb.Position + 1;
  QUery.Next;
  Application.ProcessMessage;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar