Error: El controlador ODBC para Excel descarta el FirstRowHasNames o configuración de encabezado

Seleccione idioma Seleccione idioma
Id. de artículo: 288343 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando usa el controlador de conectividad abierta de bases de datos de Microsoft Excel (ODBC) para conectarse a una hoja de Excel como origen de datos ODBC, el controlador supone de forma predeterminada que la primera fila de datos de la hoja de cálculo contiene encabezados de columna (nombres de campo). Función a la documentación del controlador, la configuración de conexión FirstRowHasNames opcional puede utilizarse para cambiar este comportamiento predeterminado con 0 para Falso y 1 para Verdadero. Sin embargo, de hecho, el controlador descarta esta configuración y la primera fila de datos se trata siempre como encabezados de columna. Si la primera fila de datos no contiene encabezados de columna u otras entradas, el resultado eficaz es que la primera fila de datos "desaparecerá."

Causa

El valor del parámetro de encabezado (HDR) o FirstRowHasNames nunca se se pasa al controlador ODBC de Excel.

Solución

El HDR = valor está disponible y funcionales cuando se utilizan el proveedor OLE DB de Microsoft Jet y su controlador ISAM de Excel. Por lo tanto, la mejor solución es utilizar el proveedor Jet en lugar del controlador ODBC para Excel.

Porque el controlador ODBC para Excel supone siempre que la primera fila contiene nombres de campo, la primera fila debe contener siempre nombres de campo válido, o movimientos ficticios que está dispuesto a descartar el desarrollador.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Pasos para reproducir este comportamiento

  1. Cree un nuevo libro de Excel y guárdelo con el nombre predeterminado en la carpeta donde se creó el proyecto de prueba de Visual Basic.
  2. En la celda A1, rellenar algunas celdas de la primera columna con datos aleatorios.
  3. Cree un nuevo proyecto de Visual Basic y establezca una referencia ActiveX Data Objects (ADO).
  4. Escriba y ejecute el siguiente 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 se esperaría para ver el controlador de Excel que se asigne el nombre de campo predeterminado "F1" a la columna de datos y mostrar la datos, comenzando por el primer registro que escribió en la celda A1. Sin embargo, observe en la ventana depuración, el valor que escribió en la celda que a2 se imprimen como el valor del primer registro a pesar de su necesidad de establecer FirstRowHasNames en false . El valor de la celda A1 ha "desaparecido" para convertirse en el nombre de campo de la columna.

Propiedades

Id. de artículo: 288343 - Última revisión: martes, 16 de septiembre de 2003 - Versión: 3.2
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbbug kbmdacnosweep kbpending KB288343 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 288343

Enviar comentarios

 

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