ACC2000: Importar ou ligar um ficheiro de texto falha para um ficheiro que não tem uma extensão de nome de ficheiro válido

Traduções de Artigos Traduções de Artigos
Artigo: 304206 - Ver produtos para os quais este artigo se aplica.
Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Este artigo aplica-se a uma base de dados do Microsoft Access (.mdb) e a um projecto do Microsoft Access (.adp).

importante : Este artigo contém informações sobre como modificar o registo. Antes de modificar o registo, certifique-se de que efectua uma cópia de segurança e de que compreende como o restaurar o registo se ocorrer um problema. Para obter informações sobre como efectuar uma cópia de segurança, restaurar e editar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
256986Descrição do registo do Microsoft Windows
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando tenta importar ou ligar um ficheiro de texto, receberá uma das seguintes mensagens de erro:
Run-time error '3027':

Não é possível actualizar. Base de dados ou objecto é só de leitura.
- ou -
Não é possível actualizar. Base de dados ou objecto é só de leitura.

Causa

O ficheiro que estiver a importar ou ligar não tem uma extensão de ficheiro válido.

Resolução

Utilize qualquer um dos seguintes três métodos para contornar este comportamento.

Método 1 - mudar o nome de ficheiro para que este tem uma extensão de nome de ficheiro válido

As seguintes extensões de nome de ficheiro são válidas:
-txt
-csv
-separador
-asc
NOTA: Se os ficheiros de texto eram originalmente ficheiros HTM ou HTML, pode mudar o também nome-los utilizando extensões de nome de ficheiro .htm ou .HTML.

Método 2 - programaticamente importar ficheiros que não têm uma extensão .txt

Para obter um exemplo de como programaticamente importar ficheiros de que não têm uma extensão .txt, siga estes passos:
  • Crie uma nova função:
    1. Abra a base de dados exemplo Adamastor.mdb.
    2. Clique no separador módulos .
    3. Clique em Novo .
    4. Escreva ou cole o seguinte código no módulo:
      Public Function ImportNonTXT()
          Dim fs, Fn, FLength, Fext, FDot, FOrig
          
          Set fs = CreateObject("Scripting.FileSystemObject")
          Set Fn = fs.Getfile("C:\Employees")
          
          ' This holds the file's original name for rename later.
          FOrig = Fn.Name
          ' Get the length of the file name.
          FLength = Len(Fn.Name)
          ' Set this value = to the last four characters of the file name.
          Fext = Right(Fn.Name, 4)
          ' Set this = to the first character.
          FDot = Left(Fext, 1)
          
          ' If there is a dot in the fourth from the last position...
          If FDot = "." Then
              '... and the extension is not .txt.
              If Fext <> ".txt" Then
                  ' Remove the extension from the file name.
                  Fn.Name = Left(Fn.Name, (FLength - 4))
                  ' Add the .txt to the file name.
                  Fn.Name = Fn.Name & ".txt"
              End If
          Else
              ' If there is not a dot in the fourth position
              ' add the .txt extension.
              Fn.Name = Fn.Name & ".txt"
          End If
          
          ' Transfer the file to a new table.
          DoCmd.TransferText acImportDelim, "", "Employees_Text", "C:\Employees.txt", False, ""
      
          ' After the file is transferred, rename it back to
          ' its original name.
          Fn.Name = FOrig
      
      End Function
      						
    5. Guarde o módulo como Import_Text .
    6. Crie uma macro nova com a acção ExecutarCódigo.
    7. Na propriedade Nome da função , introduza ImportNonTXT() .

      NOTA: "ImportNonTXT" é equivalente ao nome da função.
    8. Guarde a macro como mcrImport texto .
  • Exporte a tabela Empregados:
    1. Clique na tabela empregados , mas não são abertos.
    2. No menu ficheiro , clique em Exportar para abrir a caixa de diálogo Exportar tabela .
    3. Na caixa Guardar em , navegue para a raiz da unidade C (C:\).
    4. Na caixa de texto Guardar c/ o tipo , clique em Ficheiros de texto .
    5. Na caixa de texto nome do ficheiro , escreva Employees.txt .
    6. Clique em Guardar para abrir o Assistente de texto de importação.
    7. Clique em Concluir .
  • Mude o nome do ficheiro exportado:
    1. No Explorador do Windows, procure a raiz da unidade C onde guardou Employees.txt.
    2. Clique com o botão direito do rato Employees.txt e, em seguida, clique em Mudar o nome .
    3. Remover a extensão de ficheiro .txt e, em seguida, prima ENTER.

      Nota : apresentação das extensões de nome de ficheiro pode estar desactivada no computador. Para activá-la, clique em Opções de pastas no menu Ferramentas , clique no separador Ver e, em seguida, clique para desmarcar a caixa de verificação Ocultar extensões de ficheiro para tipos de ficheiro conhecidos .
    4. Clique em Sim à linha de comandos.
  • Execute a macro. O nome do ficheiro é temporariamente mudado com a extensão .txt, importado e, em seguida, o nome para o nome original.
Em algumas situações, poderá não ser possível utilizar a extensão .txt. Por exemplo, se os ficheiros de texto são gerados electronicamente, poderá ser impraticável para mudar o nome os ficheiros ou remover a extensão, especialmente, se o ficheiro ou ficheiros são gerados regularmente.

Com uma alteração de código pequeno, também pode importar ficheiros .rtf. Para obter um exemplo de como o fazer, siga estes passos:
  1. Elimine o ficheiro importado da base de dados.
  2. Mudar o nome de ficheiro em C:\ para Employees.rtf.
  3. Alterar a especificação de ficheiro para a seguinte linha de código de
    Set Fn = fs.Getfile("C:\Employees")
    						
    para:
    Set Fn = fs.Getfile("C:\Employees.rtf")
    					
  4. Execute a macro novamente.

    Tenha em atenção que o ficheiro é importado com êxito.

Método 3 - modificar o registo do sistema

aviso : a utilização incorrecta do Editor de registo poderá provocar problemas graves que poderão forçar a reinstalação do sistema operativo. Microsoft não garante que os problemas resultantes da utilização incorrecta do Editor de registo possam ser resolvidos. As suas próprias risco da utilização do Editor de registo.
  1. Inicie o Editor de registo (Regedt32.exe).
  2. Localize o valor Extensões desactivado na seguinte subchave no registo:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Text
  3. No menu Editar , clique em Modificar , anexar a nova extensão a lista existente e, em seguida, clique em OK .

    NOTA: Elementos da lista de dados do valor são separados por vírgulas.
  4. Saia do Editor de registo.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Antes da actualização mais recente do Microsoft Jet versão 3.5 (Jet 3.5, Service Pack 3), o Microsoft Access 97 não gerou erros quando efectuou a importação ou ficheiros ligados que não tem uma extensão válida. Na realidade, o ficheiro não foi necessária para ter qualquer extensão. Este comportamento foi alterado no Jet 3.5 Service Pack 3 e versões posteriores, que afecta o Access 2000. Importar ou ligar ficheiros de texto que não tem um .txt, .csv, *.TAB, .asc, .tmp, .htm ou .HTML extensão já não é suportado.

Passos para reproduzir o comportamento

  1. Utilize o bloco de notas ou outro editor de texto para criar um novo ficheiro de texto.
  2. Guarde o ficheiro como MyTest.txt .
  3. Mudar o nome de ficheiro para MyTest , sem a extensão .txt.
  4. Importe MyTest para o Microsoft Access utilizando o Assistente de importação de texto.

Referências

Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
239471Texto do Jet 4.0 IISAM permite utilizador actualizar linhas para ficheiros de sistema
239105Jet 3.5 texto ISAM permite utilizadores a acrescentar linhas ao ficheiro de sistema
172733ACC97: Versão actualizada do Microsoft Jet 3.5 disponível
Para obter mais informações sobre a acção TransferirTexto ou método, clique em Ajuda do Microsoft Access no menu Ajuda , escreva transferText na Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar os tópicos devolvidos.

Propriedades

Artigo: 304206 - Última revisão: 28 de junho de 2004 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kberrmsg kbprb KB304206 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 304206

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com