erro quot;Too many open Tablesquot;

31/03/2006

erro ´Too many open Tables´

o que é isso?
estou com o mesmo problema.... :(

Texto editado por Massuda



Garciabhale

Respostas

02/04/2006

Techsoft

Tive um problema muito parecido, o que aconteceu no meu caso foi que neste form q deu problema eu não havia tirado da memória qdo fechava ele... então chegava um momento que ele me acusava este erro.

coloquei então no onClose do form:

Action := caFree;
nome_form := nil


Como faço em todos os forms... com isso resolvi o problema, vejam se não é o mesmo que acontece com vcs.

[]´s


Responder Citar

03/04/2006

Garciabhale

Obrigado, Fernando!

tentei aqui:
mas ele dá o too many tables do mesmo jeito no Open ali em baixo, após ter aberto umas 50 vezes a tabela

Alguem tem outra ideia??? Please!!!

var 
  qry : TQuery;

dentro dos repeats que abre e fecha a tabela toda hora:

  qry := TQuery.Create(nil);
  with qry do begin
    Active := False;
    DatabaseName := ´DBprocreareDB´;
    qry.SQL.Add(´select * from pesagens´);
    try
      Open;
      RegistroPesagem := qry.FieldByName(´Registro´).AsInteger;
    finally
      Free;
    end;
  end;



Responder Citar

03/04/2006

Techsoft

Tente adicionar o close antes do free.

var 
  qry : TQuery; 

dentro dos repeats que abre e fecha a tabela toda hora: 

  qry := TQuery.Create(nil); 
  with qry do begin 
    Active := False; 
    DatabaseName := ´DBprocreareDB´; 
    qry.SQL.Add(´select * from pesagens´); 
    try 
      Open; 
      RegistroPesagem := qry.FieldByName(´Registro´).AsInteger; 
    finally 
      Close;
      Free; 
    end; 
  end;



Responder Citar

03/04/2006

Garciabhale

ainda continuou...
essa tá osso


Responder Citar

03/04/2006

Joni Nunes

Isso é a limitação do número de Cursores aberto no banco, como o colega anterior respondeu, verifique se vc nao utiliza cursores e deixa aberto, tipo assim, executa uma query para uma determinada validacao e boa, nao faz mais nada com o cursor, isso é errado todo cursor nao utilizado deve ser fechado e quando instanciado deve ser liberado.


Responder Citar

03/04/2006

Techsoft

Bom, este problema esta realmente relacionado com o seu query estar ficando ´aberto´...

Me responde uma coisa, este trecho de código que você colocou logo acima está dentro de um repeat é isso? ele não fecha o form e abre novamente, ele simplesmente fica rodando um repeat e em um determinado momento o erro ocorre?

vou postar como eu utilizo queries dinâmicas e nunca tive problemas, é bem parecido com o q vc faz, mas vai saber, as vezes um pequeno detalhe pode gerar algum problemão.

  with TQuery.Create(nil) do 
  try 
    DatabaseName := ´DBprocreareDB´; 
    SQL.Add(´select * from pesagens´); 
    Open; 
    RegistroPesagem := FieldByName(´Registro´).AsInteger; 
  finally 
    Close; 
    Free; 
  end; 


Outra coisa, notei que não está usando nenhuma sessão, pode ser que não mas na dúvida, se o que passei acima não funcionar tente usar algumas sessão e ver se o problema continua.


Responder Citar

10/04/2011

Ubiratan Melo

Show de bola, no meu resolveu. Meu repeat sempre é composto de aproximadamente 1000 vezes quando chegava em 253 dava o erro: too many open tables. Acho q esse fato de liberar da memoria, Free deve resolver.
Responder Citar