Lentidão na Hora de Gravar Arquivo - Interbase 6
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!
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
Curtidas 0
Respostas
Ricardo.vano
08/03/2005
Você está usando Table? Query?
Experimente substituí-los pelo componente IBDataSet
Experimente substituí-los pelo componente IBDataSet
GOSTEI 0
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´ ?
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