Erro: O controlador ODBC do Excel ignorará FirstRowHasNames de definição de cabeçalho

Traduções de Artigos Traduções de Artigos
Artigo: 288343 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando utiliza o controlador do Microsoft Excel interligação de bases de dados abertas (ODBC) para ligar a uma folha de cálculo do Excel como uma origem de dados ODBC, o controlador assume por predefinição que a primeira linha de dados da folha de cálculo contém cabeçalhos de coluna (campo nomes). Acordo com a documentação da placa, a definição de ligação FirstRowHasNames opcional pode ser utilizada para alterar este comportamento predefinido utilizando 0 para FALSO e 1 para verdadeiro. No entanto, na realidade, o controlador ignora esta definição e a primeira linha de dados é sempre tratada como cabeçalhos de coluna. Se a primeira linha de dados não contiver cabeçalhos de coluna ou outras entradas, o resultado efectivo é que a primeira linha de dados "desaparece."

Causa

O valor de FirstRowHasNames ou parâmetro de cabeçalho (HDR) nunca é que está a ser transmitido para o controlador de ODBC do Excel.

Resolução

O HDR = definição está disponível e funcionalidade quando utiliza o Microsoft Jet OLE DB Provider e o respectivo controlador ISAM do Excel. Por conseguinte, a melhor solução é utilizar o fornecedor de Jet em vez do controlador de ODBC do Excel.

Porque o controlador de ODBC do Excel assume sempre que a primeira linha contém nomes de campos, a primeira linha tem sempre conter nomes de campo válido, ou fictícias entradas que o programador está disposto a ignorar.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

  1. Crie um novo livro do Excel e guardá-lo com o nome predefinido na pasta em que vai criar projecto de teste do Visual Basic.
  2. Na célula A1, preencha algumas células na primeira coluna com dados aleatórios.
  3. Crie um novo projecto de Visual Basic e defina uma referência para o ActiveX Data Objects (ADO).
  4. Introduza e execute o seguinte código:
    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 previsto para ver o controlador do Excel atribuir o nome de campo predefinido "F1" para a coluna de dados e para apresentar o início de dados com o primeiro registo que introduziu na célula A1. No entanto, tenha em atenção que na janela de depuração, o valor que introduziu na célula que a2 impresso como o valor do primeiro registo em vez do ter set FirstRowHasNames como Falso . O valor na célula A1 "desapareceu" seja o nome do campo para a coluna.

Propriedades

Artigo: 288343 - Última revisão: 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 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: 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