Ir para conteúdo
Fórum Script Brasil
  • 0

Erro utilizando TTable


Guest --Fernando R. Piccini --

Pergunta

Guest --Fernando R. Piccini --

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

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
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"...

como é que você está fazendo isto - post o código que você está usando.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest fernandopiccini

Segue abaixo um trecho do código (Exemplo de Teste)...

Estou utilizando Delphi 6 e Oracle...

Material_TT := TTable.Create(Nil);
Material_TT.Active := False;
Material_TT.DatabaseName := 'CORP';
Material_TT.TableType := ttParadox;
Material_TT.TableName := 'Material';
if (not Material_TT.Exists) then
begin
  Material_TT.FieldDefs.Clear;
  Material_TT.FieldDefs.Add('CD', ftFloat, 0, True);
  Material_TT.FieldDefs.Add('DS', ftString, 255, True);
  Material_TT.FieldDefs.Add('QT', ftFloat, 0, True);
  Material_TT.FieldDefs.Add('SL', ftFloat, 0, False);
  Material_TT.FieldDefs.Add('FN', ftFloat, 0, False);
  Material_TT.CreateTable;
end;
Material_TT.EmptyTable;
Material_TT.Active := True;

Gostaria de um auxilio para solucionar este problema....

:rolleyes:

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

  • 0
Estou utilizando Delphi 6 e Oracle...
fernandopiccini, se você utiliza Oracle, a tabela Paradox que você está criando é algo temporário?

Eu tenho um código similar a este seu, e funciona sem problemas. A única diferença entre o meu e o seu código está no DatabaseName, em que você utiliza um ALIAS (CORP) e eu um path (TablePath = c:\temp):

procedure TForm1.CriaTabelaImportacao(TablePath :string);
var
  Table :TTable;
begin
  Table := TTable.Create(nil);
  try
    Table.Close; {o mesmo que Active:=False }
    Table.DatabaseName := TablePath; { um alias BDE ou diretório}
    Table.TableType := ttParadox; { deve ser especificado quando se cria uma tabela}
    Table.TableName := 'client'; { extensão .DB é opcional}
    if (not Table.Exists) then
    begin
      { definindo alguns campos}
      with Table.FieldDefs do
      begin
        Clear; { limpa a tabela antiga}
        { a chave primária deve ser criada com o
        atributo "required" como true: }
        Add('Codigo', ftAutoInc, 0, true);  // o TRUE significa que é requerido - não pode ser nulo
        Add('CodProd', ftString, 5, true);
        Add('Nome', ftString, 20, false);
        Add('Cidade', ftString, 10, false);
        Add('UF', ftString, 2, false);
      end; { "with Table1.FieldDefs" }
      { adiciona a chave primária e três secundárias}
      with Table.IndexDefs do
      begin
        Clear; {limpa os antigos}
        { A chave priária Paradox não tem nome.}
        { Nunca de o mesmo nome do campo ao índice
        se fizer isso não poderá usar ixCaseInsensitive }
        Add('', 'codigo', [ixPrimary]);
        { A opção ixCaseInsensitive não é valida para chaves primárias}
        { Nunca crie mais indices do que você precisar. Você poderá fazer isso depois}
        Add('NomeIDX', 'Nome', [ixCaseInsensitive]);
        Add('CidadeIDX', 'Cidade', [ixCaseInsensitive]);
        { combinando um índice com dois campos: }
        Add('TesteIDX', 'Cidade;Nome', [ixCaseInsensitive]);
      end; { with "Table1.IndexDefs" }
      Table.CreateTable;
    end;
    Table.EmptyTable;
    Table.Open;
  Except
    MessageDlg('Error na Criação da Tabela ou Índice', mtError, [mbOK],0);
  end; { try...except }
end;

Logo, vem a pergunta: Este seu alias se refere a que tipo de banco de dados? Oracle ou Paradox?

Você poderia experimentar colocar um path no lugar do seu alias e testar se o arquivo seria criado com sucesso neste lugar. Pelo menos, teríamos a pista de que o problema pode residir na definição do ALIAS.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

A mensagem de erro é a seguinte: directory is locked

Ah! Em relação ao Alias descrevi errado, não era corp, eu também estou utilizando um Path, porém mas mesmo assim o erro persiste.

Procurei em outros lugares mas só a uma lista de erros do BDE sendo que não achei ainda uma solução para este problema...

Ficaria grato pela ajuda, ok...

Valeu :rolleyes:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...