MODÈLE : les colonnes sont triées par ordre alphabétique lorsque vous utilisez ADOX pour extraire les colonnes de table Access

Traductions disponibles Traductions disponibles
Numéro d'article: 299484 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Si vous utilisez la collection ADOX catalogues et le fournisseur OLE DB pour Jet pour extraire les colonnes d'une table Microsoft Access, les colonnes sont triés par ordre alphabétique.

Cause

OLE DB fournisseur 4.0 pour Jet extrait les colonnes dans l'ordre alphabétique plutôt que dans ordre position ordinale de la colonne.

Résolution

Pour contourner ce problème, utilisez pilote ODBC pour Microsoft Access conjointement avec le fournisseur OLE DB pour ODBC. Autres fournisseurs OLE DB, tel que le fournisseur OLE DB pour SQL Server, ne pas poser ce problème.

Si vous devez utiliser le fournisseur OLE DB pour Jet, utilisez la méthode OpenSchema de l'objet ADODB connexion et trier le jeu d'enregistrements résultant sur le champ ORDINAL_POSITION.

Plus d'informations

Procédure pour reproduire le problème

  1. Créez un nouveau projet EXE standard dans Visual Basic. Form1 est créé par défaut.
  2. Dans le menu projet , cliquez sur Références , puis cliquez sur Microsoft ActiveX Data Objects 2.1 et Microsoft ADO Ext. 2.1 for DDL and Security .
  3. Ajoutez trois contrôles CommandButton à Form1.
  4. Collez le code suivant dans la section Déclarations de Form1 :
    Option Explicit
    
    Dim cnn As ADODB.Connection
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim col As ADOX.Column
    
    
    Private Sub Command1_Click()
       Set cnn = New ADODB.Connection
       With cnn
          .Provider = "Microsoft.Jet.OLEDB.4.0;"
          .Open "Data Source=D:\Nwind.mdb;"
       End With
       Set cat = New ADOX.Catalog
       cat.ActiveConnection = cnn
       Set tbl = cat.Tables("Products")
       Debug.Print "Results using the OLEDB Provider and ADOX"
       For Each col In tbl.Columns
          Debug.Print col.Name
       Next
    End Sub
    
    Private Sub Command2_Click()
       Set cnn = New ADODB.Connection
       With cnn
          .Provider = "MSDASQL.1;"
          .Open "Driver={Microsoft Access Driver (*.mdb)};" & _
           "DBQ=D:\Nwind.mdb;"
       End With
       Set cat = New ADOX.Catalog
       cat.ActiveConnection = cnn
       Set tbl = cat.Tables("Products")
       Debug.Print "Results using the ODBC Driver and ADOX"
       For Each col In tbl.Columns
          Debug.Print col.Name
       Next
    End Sub
    
    
    Private Sub Command3_Click()
       Dim rsSchema As ADODB.Recordset
       Dim fld As ADODB.Field
       Dim rCriteria As Variant
    
       Set cnn = New ADODB.Connection
       With cnn
          .CursorLocation = adUseClient
          .Provider = "Microsoft.Jet.OLEDB.4.0;"
          .Open "Data Source=D:\Nwind.mdb;"
       
       End With
    
       Set rsSchema = cnn.OpenSchema(adSchemaColumns, _
            Array(Empty, Empty, "Products"))
       rsSchema.Sort = "ORDINAL_POSITION"
       Debug.Print "Results using the OpenSchema method"
       While Not rsSchema.EOF
          Debug.Print rsSchema!COLUMN_NAME
          rsSchema.MoveNext
       Wend
    End Sub
    					
  5. Modifier les états cnn.Open pour pointer vers un fichier de base de données Microsoft Access valide.
  6. Exécutez le projet, puis cliquez sur Command1 . Notez que les noms de champs sont triés par ordre alphabétique lorsque vous utilisez le fournisseur OLE DB.
  7. Cliquez sur Command2 . Notez que les noms de champ apparaissent dans leur position ordinale lorsque vous utilisez le pilote ODBC.
  8. Cliquez sur Command3 . Notez que les noms de champ apparaissent dans leur position ordinale lorsque vous utilisez fournisseur OLE DB avec la méthode OpenSchema .

Références

Pour plus d'informations, consultez les articles MSDN suivants :
OpenSchema, méthode
http://msdn.microsoft.com/en-us/library/ms676705.aspx

objet ADOX
http://msdn.microsoft.com/en-us/library/ms677529.aspx

Propriétés

Numéro d'article: 299484 - Dernière mise à jour: lundi 24 février 2014 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Data Access Components 2.0
  • 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
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.6
Mots-clés : 
kbnosurvey kbarchive kbmt kbjet kbprb KB299484 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: 299484
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