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]
 
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

 



Responder a