DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 299484 - Geändert am: Mittwoch, 3. Dezember 2003 - Version: 3.2

 

Auf dieser Seite

Problembeschreibung

Wenn Sie ADOX Kataloge -Auflistung und den Microsoft OLE DB Provider, verwenden um die Spalten einer Microsoft Access-Tabelle abrufen, werden die Spalten alphabetisch sortiert.

Ursache

OLE DB Provider 4.0 für Jet abruft Spalten in alphabetischer Reihenfolge statt in Position Spaltenreihenfolge.

Lösung

Um dieses Problem zu umgehen, verwenden Sie ODBC-Treiber für Microsoft Access in Verbindung mit OLE DB-Provider für ODBC. Andere OLE DB-Anbieter, wie z. B. OLE DB-Provider für SQL Server, führen Sie dieses Problem nicht darstellen.

Wenn Sie OLE DB Provider für Jet verwenden müssen, verwenden Sie die OpenSchema -Methode des ADODB- Connection -Objekts und sortieren Sie das resultierende Recordset im Feld ORDINAL_POSITION zu.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie ein neues Standard EXE-Projekt in Visual Basic. Form1 wird standardmäßig erstellt.
  2. Im Menü Projekt klicken Sie auf Verweise , und klicken Sie dann auf Microsoft ActiveX Data Objects 2.1 und Microsoft ADO Ext. 2.1 for DDL and Security .
  3. Fügen Sie drei CommandButton -Steuerelemente zu Form1 hinzu.
  4. Fügen Sie den folgenden Code in den Deklarationsabschnitt von 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. Ändern Sie die cnn.Open Anweisungen, die auf eine gültige Microsoft Access-Datenbank-Datei zeigen.
  6. Führen Sie das Projekt, und klicken Sie auf Command1 . Beachten Sie, dass die Feldnamen alphabetisch sortiert werden, bei Verwendung von OLE DB-Provider.
  7. Klicken Sie auf Command2 . Beachten Sie, dass die Feldnamen in Ihre Ordinalposition angezeigt, werden bei Verwendung von ODBC-Treiber.
  8. Klicken Sie auf Command3 . Beachten Sie, dass die Feldnamen in Ihre Ordinalposition angezeigt, werden Wenn Sie OLE DB-Provider mit die OpenSchema- Methode verwenden.

Informationsquellen

Weitere Informationen finden Sie in der folgenden MSDN-Artikeln:
OpenSchema-Methode
http://msdn.microsoft.com/en-us/library/ms676705.aspx (http://msdn.microsoft.com/en-us/library/ms676705.aspx)

ADOX-Tabellenobjekt
http://msdn.microsoft.com/en-us/library/ms677529.aspx (http://msdn.microsoft.com/en-us/library/ms677529.aspx)

Die Informationen in diesem Artikel beziehen sich auf:
  • 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.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.6
Keywords: 
kbmt kbjet kbprb KB299484 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 299484  (http://support.microsoft.com/kb/299484/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store