PRB: Spalten sind alphabetisch sortiert werden, wenn Sie ADOX, verwenden um Spalten des Access-Tabelle abrufen

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
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
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 ExplicitDim cnn As ADODB.ConnectionDim cat As ADOX.CatalogDim tbl As ADOX.TableDim col As ADOX.ColumnPrivate 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   NextEnd SubPrivate 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   NextEnd SubPrivate 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   WendEnd 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:
MSAccess Acc2k 3.51 Felder falsch sortieren

Eigenschaften

Artikelnummer: 299484 – Letzte Überarbeitung: 02/24/2014 06:04:11 – Revision: 3.2

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

  • kbnosurvey kbarchive kbmt kbjet kbprb KB299484 KbMtde
Feedback