Array
(
)

erro quot;Too many open Tablesquot;

Garciabhale
   - 31 mar 2006

erro ´Too many open Tables´

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


Citação:
Texto editado por Massuda



Techsoft
   - 02 abr 2006

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:

#Código


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


Garciabhale
   - 03 abr 2006

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

#Código


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;



Techsoft
   - 03 abr 2006

Tente adicionar o close antes do free.

#Código


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;



Garciabhale
   - 03 abr 2006

ainda continuou...
essa tá osso


Joni Nunes
   - 03 abr 2006

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.


Techsoft
   - 03 abr 2006

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.

#Código


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.


Ubiratan Melo
   - 10 abr 2011

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.