Erro: O driver ODBC do Excel Disregards o FirstRowHasNames ou configuração de cabeçalho

Traduções deste artigo Traduções deste artigo
ID do artigo: 288343 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você usa o driver do Microsoft Excel (ODBC) para se conectar a uma planilha do Excel como uma fonte de dados ODBC, o driver assume por padrão que a primeira linha da planilha de dados contém cabeçalhos de coluna (nomes de campo). Acordo com a documentação do driver, a configuração de conexão FirstRowHasNames opcional pode ser usada para alterar esse comportamento padrão usando 0 para FALSO e 1 para verdadeiro. No entanto, na verdade, o driver disregards essa configuração e a primeira linha de dados sempre é tratada como títulos de coluna. Se a primeira linha de dados não contiver cabeçalhos de coluna ou outras entradas, o resultado eficaz é que a primeira linha de dados "desaparece."

Causa

O valor do parâmetro de cabeçalho (HDR) ou FirstRowHasNames nunca está sendo passado para o driver de ODBC do Excel.

Resolução

O HDR = configuração está disponível e funcional quando você utiliza o Microsoft Jet OLE DB Provider e seu driver ISAM do Excel. Portanto, a melhor solução é usar o provedor do Jet em vez do driver ODBC do Excel.

Porque o driver ODBC do Excel sempre pressupõe que a primeira linha contém nomes de campo, a primeira linha sempre deve conter nomes de campo válido, ou entradas fictícios que o desenvolvedor estiver disposto a ignorar.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Etapas para reproduzir o problema

  1. Criar uma nova pasta de trabalho do Excel e salvá-lo com o nome padrão na pasta onde você criará seu projeto de teste Visual Basic.
  2. Na célula A1, preencha algumas células na primeira coluna com dados aleatórios.
  3. Crie um novo projeto Visual Basic e defina uma referência para o ActiveX Data Objects (ADO).
  4. Digite e execute o código a seguir:
    Private Sub Form_Load()
      Dim cn As ADODB.Connection
      Dim rs As ADODB.Recordset
      Set cn = New ADODB.Connection
      With cn
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & App.Path & "\Book1.xls;FirstRowHasNames=0;"
        .Open
      End With
      Set rs = New ADODB.Recordset
      With rs
        Set .ActiveConnection = cn
        .Source = "[Sheet1$]"
        .Open
      End With
      Debug.Print rs.Fields(0).Value
      Debug.Print rs.Fields(0).Name
      rs.Close
      cn.Close
    End Sub
    					
Normalmente você esperaria para ver o driver do Excel atribuir o nome de campo padrão "F1" à sua coluna de dados e para exibir o início de dados com o primeiro registro que você digitou na célula. No entanto, observe que na janela Debug, o valor que você inseriu na célula que a2 impresso como o valor do primeiro registro apesar do seu precisar definir FirstRowHasNames como False . Valor da célula "desapareceu" seja o nome de campo para a coluna.

Propriedades

ID do artigo: 288343 - Última revisão: terça-feira, 16 de setembro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.1 Service Pack 1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5
Palavras-chave: 
kbmt kbbug kbmdacnosweep kbpending KB288343 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 288343

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