Lentidão na Hora de Gravar Arquivo - Interbase 6

Delphi

08/03/2005

Eae Filhotes...

Estou trabalhando com Delphi 6 Interbase 6. No meu sistema de ´contas a receber´ quando um cliente paga a conta, automaticamente o é geradas estas entradas de registro; um ´Recibo´, um ´Lançamento no caixa´, um ´Novo Cupom´, uns ´Novos Itens do Cupom´,as entradas de registro são feitas assim:

//exemplo do ´Lançamento do Caixa´
With Dm1.TbItCaixa do
begin
Append;
FieldbyName(´CODCAIXA´).AsString := Label19.Caption;

With IBSQL5 do
begin
Close;
SQL.Clear;
SQL.Add(´SELECT MAX(NUMITCAIXA)AS CODIGO FROM ITCAIXA´);
SQL.Add(´WHERE CODCAIXA = ´´´ +Label19.Caption + ´´´´);
ExecQuery;

Dm1.TbItCaixa.FieldbyName(´NUMITCAIXA´).AsInteger :=
IBSQL5.FieldbyName(´CODIGO´).AsInteger + 1;

Close;
end;

FieldbyName(´DATAITCAIXA´).AsDateTime := Date;
FieldbyName(´HORAITCAIXA´).AsDateTime := Time;
FieldbyName(´TIPOITCAIXA´).AsString := ´RECTO´;
FieldbyName(´HISTORICOCAIXA´).AsString:=´RECTO - RECIBO N. ´+
Dm1.TbRecibo.FieldbyName(´NUMRECIBO´).AsString+´ DO CLIENTE ´+
Edit2.Text;
FieldbyName(´SAIDAITCAIXA´).AsFloat := 0.00;
FieldbyName(´ENTRADAITCAIXA´).AsFloat := Dm1.TbRecibo.FieldbyName(´VRRECIBO´).AsFloat;

With IBSQL3 do
begin
Close;
SQL.Clear;
SQL.Add(´SELECT SUM(ENTRADAITCAIXA), SUM(SAIDAITCAIXA) FROM ITCAIXA´);
SQL.Add(´WHERE CODCAIXA = ´´´ +Label19.Caption+ ´´´´);
ExecQuery;

saldo := Fields[0].AsFloat-Fields[1].AsFloat;

Close;
end;

FieldbyName(´SALDOITCAIXA´).AsFloat := saldo + Dm1.TbRecibo.FieldbyName(´VRRECIBO´).AsFloat;

Post;
Refresh;
end;

... fora a impressão do recibo e do novo cupom com ..Whileln..

Este processamento esta muito LENTO.
Gostaria de saber...

>>> O QUE ESTOU FAZENDO DE ERRADO!!! <<<<

douglas-altonia

Valeu!


Douglasaltonia

Douglasaltonia

Curtidas 0

Respostas

Ricardo.vano

Ricardo.vano

08/03/2005

Você está usando Table? Query?

Experimente substituí-los pelo componente IBDataSet


GOSTEI 0
Faelcavalcanti

Faelcavalcanti

08/03/2005

Cara tu tais fazendo muita coisa, tipow fechando e abrindo muitas tabelas, salvando, utilizando refresh.

Para ficar mais fácil, era bom agente saber quantos registros totais têm nesta tabela independente de filtro. Sei que possa até não fazer sentido, mas tentasse depurar também que parte do código é que deixa mais lento. Outra pergunta também é sobre o componente que estais utilizando é o ´TIBQuery´ ?


GOSTEI 0
POSTAR