BOGUE : Pilote ODBC Excel ignore le paramètre en-tête ou FirstRowHasNames

Traductions disponibles Traductions disponibles
Numéro d'article: 288343 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous utilisez le pilote Excel de Microsoft ODBC (Open Database CONNECTIVITY) pour se connecter à une feuille de calcul Excel en tant que source de données ODBC, le pilote suppose par défaut que la première ligne de données de la feuille de calcul contient des en-têtes de colonne (noms de champs). Conformément à la documentation pilote, le paramètre de connexion FirstRowHasNames facultatif peut être utilisé pour modifier ce comportement par défaut en utilisant 0 pour Faux et 1 pour vrai. Toutefois, en fait, le pilote ignore ce paramètre et la première ligne de données est toujours traitée comme en-têtes de colonne. Si la première ligne de données ne contient pas les en-têtes de colonne ou des autres entrées, le résultat effectif est que la première ligne de données "disparaîtra."

Cause

La valeur de la FirstRowHasNames ou le paramètre d'en-tête (HDR) est jamais transmise à du pilote ODBC Excel.

Résolution

Le HDR = paramètre est disponible et fonctionnelle lorsque vous utilisez le fournisseur OLE DB Microsoft Jet et son pilote ISAM Excel. Par conséquent, la meilleure solution consiste à utiliser le fournisseur Jet plutôt que le pilote ODBC Excel.

Parce que le pilote ODBC Excel suppose toujours que la première ligne contient les noms de champ, la première ligne doit toujours contenir les noms de champ valide ou des entrées factices qui le développeur est prêt à ignorer.

Statut

Microsoft a confirmé le que de ce bogue dans les produits Microsoft répertoriés au début de cet article.

Plus d'informations

Procédure pour reproduire le problème

  1. Créer un nouveau classeur Excel et enregistrez-le sous le nom par défaut dans le dossier où vous allez créer votre projet de test Visual Basic.
  2. Dans la cellule A1, remplir quelques cellules de la première colonne de données aléatoires.
  3. Créez un nouveau projet Visual Basic et définissez une référence à ADO (ActiveX Data Objects).
  4. Entrez et exécutez le code suivant :
    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
    					
Normalement escompté pour voir le pilote Excel attribuer le nom de champ par défaut «F1» à votre colonne de données et afficher le données commençant le premier enregistrement saisi dans la cellule A1. Toutefois, notez que dans la fenêtre Débogage, la valeur que vous avez entrée dans la cellule qu'a2 imprimé comme la valeur de l'enregistrement première en dépit de votre devoir définir FirstRowHasNames sur false . La valeur de la cellule A1 a «disparu» pour devenir le nom de champ de la colonne.

Propriétés

Numéro d'article: 288343 - Dernière mise à jour: mardi 16 septembre 2003 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbmt kbbug kbmdacnosweep kbpending KB288343 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 288343
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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