GARANTIR DESCONTO

Fórum Erro TTable: Table is locked ou Table is busy... #353331

08/02/2008

0

Ola Pessoal,

Estou utilizando o componente TTable em uma aplicação.
Estou crio o mesmo em tempo de execução, porém toda vez que vou criar ele da mensagem de ´Table is locked´ ou ´Table is busy´...
Procurei na internet o que poderia ser e fala para excluir arquivos com extensão ´.lck´

Teria alguma outra forma de utilizar o Componente TTable sem ter que ficar excluindo esses arquivos???
Sendo que as vezes nem existe arquivo ´.lck´ e mesmo assim o erro persiste...

Se alguém puder ajudar seria muito util...

vlw


Fernando Piccini

Fernando Piccini

Responder

Posts

08/02/2008

Djjunior

Vc não pode usar as MemoryTable do RX ou o ClienteDataSet em vez de criar essas TTables em Rum Time ?


Responder

Gostei + 0

11/02/2008

Fernando Piccini

Utilizei clientdataset mas quando distribu clima aplicação em outras máquinas da erro de dll devido a declaraçãoda unit DBClient...

Acredito que deveriamos achar uma solução para TTable...
Mas não sei se é o BDE que faz o controle dos arquivos ou o Delphi...

vlw


Responder

Gostei + 0

11/02/2008

Edilcimar

provavelmente vc utilizou a tabela e depois tentou apagar, mas para conseguir apagar vc tem que fechá-la primeiro


Responder

Gostei + 0

21/02/2008

Fernando Piccini

Ola Edilcimar,

Realmente estou apenas destruindo o componente ´TabelaTeste.Destroy;´ e não estou fechando a mesma.

Vou fecha-la e depois destruir a mesma para ver se não acontece mais o erro, ok.

Grato pela Ajuda


Responder

Gostei + 0

21/02/2008

Fernando Piccini

Ola Edilcimar,

Realmente estou apenas destruindo o componente ´TabelaTeste.Destroy;´ e não estou fechando a mesma.

Vou fecha-la e depois destruir a mesma para ver se não acontece mais o erro, ok.

Grato pela Ajuda


Responder

Gostei + 0

03/03/2008

Fernando Piccini

Ola Edilcimar,

A mensagem de erro é a seguinte: ´[b:820f060e14]Directory is locked[/b:820f060e14]´.

Tentei fechar a Tabela, destruir o componente porém o erro ainda acontece. Toda vez que entro no meu programa e vou criar da esse erro.

Procurei na internet mas não achei nada que pudesse ajudar.

Ainda fico no aguardo de uma solução ou algo que possa ajudar.

Observei que existe bastante mensagens na net com este problema, mas nada que para ajudar :(

Valeu


Responder

Gostei + 0

03/03/2008

Edilcimar

você não pode destruir uma tabela em uso, tem que fechá-la primeiro, a mensagem de diretório ocupado é porque a tabela está em uso


Responder

Gostei + 0

03/03/2008

Fernando Piccini

Ola Edilcimar,

O que estou fazendo é o seguinte:

Tabela.Close;
Tabela.Destroy;

Ou seja, eu fecho a TTable e depois destruo a mesma, porém quando vou entrar continua dando a mensagem de erro.

Grato pela atenção.


Responder

Gostei + 0

04/03/2008

Edilcimar

use deletefile() em vez de destroy


Responder

Gostei + 0

04/03/2008

Fernando Piccini

Como esta minha Tabela (TTable) é criada em tempo de execução (Esta incorporada em um componente próprio), antes de efetuar a criação da mesma executo a seguinte rotina para excluir os arquivos (.DB) da máquina

...
procedure Excluir_Arquivo(FileName: String);
begin;
    if (FileExists(FileName)) then
       DeleteFile(FileName);
end;

...

...e no Destroy do meu componente eu fecho a tabela e em seguida executo um Free...Ex:

destructor TWBarras.Destroy;
begin
  Tabela_TT.Close;
  Tabela_TT.Free;
end;


Será alguma configuração do BDE?

:)


Responder

Gostei + 0

04/03/2008

Edilcimar

se você usar o deltefile() não precisa usar o destroy, afinal de contas não há mais nada a ser destruído


Responder

Gostei + 0

06/03/2008

Fernando Piccini

Minha aplicação esta distribuida em mais algumas máquinas sendo que isto acontece aleatóriamente e apenas em algumas máquinas...
Creio que seja alguma configuração do BDE, porém não tenho certeza!

...tentei alterar o localshare mas ainda não obtive sucesso...vou continuar verificando...

vlw


Responder

Gostei + 0

06/03/2008

Facc

[quote:895abe00fc=´Fernando Piccini´]Minha aplicação esta distribuida em mais algumas máquinas sendo que isto acontece aleatóriamente e apenas em algumas máquinas...
Creio que seja alguma configuração do BDE, porém não tenho certeza!

...tentei alterar o localshare mas ainda não obtive sucesso...vou continuar verificando...

vlw[/quote:895abe00fc]

BDE só dor de cabeça... use o clientdataset... para distribuir aki no forum tem vários tópicos referentes... Eu vivia quebrando a cabeça com o BDE, agora que comecei a mexer com o DBExpress nem quero ver mais TTable. TQuery na frente...


Responder

Gostei + 0

06/03/2008

Fernando Piccini

Ola Facc,

No inicio estava utilizando ClientDataSet, meu estava indo tudo bem até quando fui distribuir minha aplicação em outras máquinas (Cliente)...

Observa-se que: ´TClientDataSet´ vem da Unit DBClient e mesma faz a chamda da Midas.pas sendo que Midas voce precisa da .dll (Midas.dll)...devido a isto abandonei a utilização de ClientDataSet...pois teria q estar distribuindo as .dll´s nas máquinas...

Estou ainda procurando uma solução para TTable...

Valeu :)


Responder

Gostei + 0

06/03/2008

Marco Salles

Utilizei clientdataset mas quando distribu clima aplicação em outras máquinas da erro de dll devido a declaraçãoda unit DBClient...


voce pode ate achar solução para o Table , so não deve achar que precisa ficar instalando o Midas.dll no seu clientes .
Voce pode ´Linkar´ a Midas.Dll no seu aplicativo ( é o que chamamos de configuração quase ZERO ) .. Na uses do DataModulo , ou Do Projeto ou Do Form Principal as Units MidasLib ... Algumas Outras Units podem ser necessárias , dependendo do seu acesso .. Mas por hora fica este registro


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar