Desculpe faltou o database.StartTransaction
if liQtdRegs >= 50 then
begin
Database.Commit;
DataBase.StartTransaction;
liQtdRegs := 0;
end;
Bit
--- Em [EMAIL PROTECTED], "sandrobit2000"
<[EMAIL PROTECTED]> escreveu
>
> Ola,
>
> Vc pode fazer commit apos uma quantidade de inserts, se apos 100
ele
> nao esta suportando o cache, vc commita a cada 50, nao commit a
cada
> insert pois ficara lenta a rotina. Embora eu ache q esta operacao
tem
> q ser efetuada completamente, verifique algo do tipo tamanho de
cache
> ou coisa parecida!
>
> // Inicia uma Transacao
> Database.StartTransaction;
> tbNotaItem.DisableControls;
> tbNotaItem.First;
> liQtdRegs := 0;
> while not tbNotaItem.Eof do
> begin
> // Atualiza Estoque
> with tQry do
> begin
> SQL.Clear;
> SQL.Add('Update Produtos ');
> SQL.Add('Set Estoque = Estoque
> + :Qtde ');
> SQL.Add('Where Codigo
= :Codigo');
> ParamByName('Qtde').AsFloat :=
> tbNotaItem.FieldByName('Qtde').AsInteger;
> ParamByName('Codigo').AsString :=
> tbNotaItem.FieldByName('Produto').AsString;
> ExecSQL;
> end;
> inc(liQtdRegs);
> //verifica se ja pode commitar
> if liQtdRegs >= 50 then
> begin
> Database.Commit;
> liQtdRegs := 0;
> end;
>
> tbNotaItem.Next;
> end;
>
>
> Espero ter ajudado
>
> Bit
>
> --- Em [EMAIL PROTECTED], "Sergio Toshio Kawahara"
> <[EMAIL PROTECTED]> escreveu
> > Olá, Alexandre
> >
> > Agradeço a sua atenção para o meu problema, fiz o teste mas deu o
> mesmo erro, então resolvi o problema tirando a transação, acho que
> vou mudar a forma de atualização ao inves de atualizar no final vou
> atualizar item a item direto na inclusão, de qualquer forma valeu.
> >
> > []'s
> > ----- Original Message -----
> > From: Alexandre Oliveira
> > To: [EMAIL PROTECTED]
> > Sent: Tuesday, October 26, 2004 7:25 AM
> > Subject: Re: [delphi-br] Problemas na Atualização do Estoque
> >
> >
> > Olá,
> >
> > Porque você não tenta assim:
> >
> > procedure TForm1.bConfirmarClick(Sender: TObject);
> > var
> > tQry : TQuery;
> > begin
> > try
> > tQry := tQuery.Create(nil); // Cria Query temporaria
> > tQry.DatabaseName := 'dbTeste'; //Alias
> > try
> > // Inicia uma Transacao
> > Database.StartTransaction;
> > tbNotaItem.DisableControls;
> > tbNotaItem.First;
> > while not tbNotaItem.Eof do
> > begin
> > // Atualiza Estoque
> > with tQry do
> > begin
> > SQL.Clear;
> > SQL.Add('Update Produtos ');
> > SQL.Add('Set Estoque = Estoque
> + :Qtde ');
> > SQL.Add('Where Codigo
= :Codigo');
> > ParamByName
('Qtde').AsFloat :=
> > tbNotaItem.FieldByName('Qtde').AsInteger;
> > ParamByName
('Codigo').AsString :=
> > tbNotaItem.FieldByName('Produto').AsString;
> > ExecSQL;
> > end;
> > tbNotaItem.Next;
> > end;
> > tbNotaItem.EnableControls;
> > Database.Commit;
> > except
> > Database.Rollback;
> > raise;
> > end;
> > finally
> > FreeAndNil(tQry);
> > end;
> > end;
> >
> >
> >
> > ----- Original Message -----
> > From: "Sergio Toshio Kawahara" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Monday, October 25, 2004 10:43 PM
> > Subject: [delphi-br] Problemas na Atualização do Estoque
> >
> >
> >
> > DELPHI 6, PARADOX
> >
> > Pessoal estou com o seguinte problema na atualização do estoque
> quando mando
> > rodar a rotina abaixo com mais de 100 itens da a seguinte
> mensagem:
> > "Operation not Applicate too many open tables", alguem já
passou
> por isso?
> >
> > Rotina para atualizar o estoque:
> >
> > procedure TForm1.bConfirmarClick(Sender: TObject);
> > var
> > tQry : TQuery;
> > begin
> > // Inicia uma Transacao
> > Database.StartTransaction;
> > try
> > tQry := tQuery.Create(Application); // Cria
Query
> > temporaria
> > tQry.DatabaseName := 'dbTeste'; //Alias
> >
> > tbNotaItem.First;
> > while not tbNotaItem.Eof do
> > begin
> > // Atualiza Estoque
> > with tQry do
> > begin
> > SQL.Clear;
> > SQL.Add('Update Produtos ');
> > SQL.Add('Set Estoque = Estoque
> + :Qtde ');
> > SQL.Add('Where Codigo
= :Codigo');
> >
> > ParamByName
('Qtde').AsFloat :=
> > tbNotaItem.FieldByName('Qtde').AsInteger;
> > ParamByName
('Codigo').AsString :=
> > tbNotaItem.FieldByName('Produto').AsString;
> > ExecSQL;
> > Free;
> > end;
> > tbNotaItem.Next;
> > end;
> >
> > tQry.Free;
> > Database.Commit;
> > except
> > tQry.Free;
> > Database.Rollback;
> > raise;
> > end;
> > end;
> >
> > Agradeço qualquer ajuda.
> >
> > [As partes desta mensagem que não continham texto foram
removidas]
> >
> >
> >
> > --
> > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> >
> > Para ver as mensagens antigas, acesse:
> > http://br.groups.yahoo.com/group/delphi-br/messages
> >
> > Para falar com o moderador, envie um e-mail para:
> > [EMAIL PROTECTED] ou [EMAIL PROTECTED]
> >
> > Links do Yahoo! Grupos
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > Este e-mail está livre de vírus.
> > Verificado por AVG Anti-Vírus (http://www.avgbrasil.com.br).
> > Versão: 7.0.280 / Banco de dados de Vírus: 264.12.2 - Data de
> Lançamento:
> > 22/10/2004
> >
> >
> >
> >
> > --
> > Mensagens enviadas estão livres de vírus.
> > Verificado por AVG Anti-Vírus (http://www.avgbrasil.com.br).
> > Versão: 7.0.280 / Banco de dados de Vírus: 264.12.2 - Data de
> Lançamento: 22/10/2004
> >
> >
> >
> > --
> > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> >
> > Para ver as mensagens antigas, acesse:
> > http://br.groups.yahoo.com/group/delphi-br/messages
> >
> > Para falar com o moderador, envie um e-mail para:
> > [EMAIL PROTECTED] ou [EMAIL PROTECTED]
> >
> >
> >
> > Yahoo! Grupos, um serviço oferecido por:
> >
> > São Paulo Rio de Janeiro Curitiba Porto
Alegre
> Belo Horizonte Brasília
> >
> >
> >
> >
> > ------------------------------------------------------------------
--
> ----------
> > Links do Yahoo! Grupos
> >
> > a.. Para visitar o site do seu grupo na web, acesse:
> > http://br.groups.yahoo.com/group/delphi-br/
> >
> > b.. Para sair deste grupo, envie um e-mail para:
> > [EMAIL PROTECTED]
> >
> > c.. O uso que você faz do Yahoo! Grupos está sujeito aos
Termos
> do Serviço do Yahoo!.
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html