PRB: Столбцах сортируются в алфавитном порядке при использовании ADOX для получения столбцов таблицы Access

Переводы статьи Переводы статьи
Код статьи: 299484 - Vizualiza?i produsele pentru care se aplic? acest articol.
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Развернуть все | Свернуть все

В этой статье

Проблема

При использовании ADOX Каталоги Коллекция» и «поставщик Microsoft OLE DB для Jet для получения столбцов таблицы Microsoft Access столбцы упорядочиваются по алфавиту.

Причина

OLE DB поставщик 4.0 для Jet извлекает столбцы в алфавитном порядке, а не в порядке порядковый номер столбца.

Решение

Чтобы обойти эту проблему, используйте драйвер ODBC для Microsoft Access вместе с поставщиком OLE DB для ODBC. Другие поставщики OLE DB, такие как поставщик OLE DB для SQL Server, не должно составлять проблемы.

Если необходимо использовать поставщик OLE DB для Jet, следует использовать OpenSchema метод ADODB Подключение объект и сортировки результирующего набора записей в поле ORDINAL_POSITION.

Дополнительная информация

Действия для воспроизведения поведения

  1. Создайте новый стандартный exe-проект в Visual Basic. По умолчанию создается форма Form1.
  2. Из Проект меню, нажмите кнопку Ссылки, а затем нажмите кнопку Объекты данных Microsoft ActiveX 2.1 и Microsoft ADO Ext. 2.1 для DDL и безопасности.
  3. Добавьте три CommandButton элементы управления в форму Form1.
  4. Вставьте следующий код в раздел объявлений класса 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. Изменить cnn.Открыть операторы, чтобы он указывал на правильный файл базы данных Microsoft Access.
  6. Запустите проект и нажмите кнопку Command1. Обратите внимание, что имена полей сортируются в алфавитном порядке при использовании поставщика OLE DB.
  7. Нажмите кнопку Команда2. Обратите внимание, что имена полей отображаются в их порядковый номер, при использовании драйвера ODBC.
  8. Нажмите кнопку Command3. Обратите внимание, что имена полей отображаются в их порядковый номер, при использовании поставщика OLE DB с OpenSchema метод.

Ссылки

Для получения дополнительных сведений обратитесь к следующим статьям MSDN:
Метод OpenSchema
http://MSDN.Microsoft.com/en-us/library/ms676705.aspx

Объект таблицы ADOX
http://MSDN.Microsoft.com/en-us/library/ms677529.aspx

Свойства

Код статьи: 299484 - Последний отзыв: 21 февраля 2014 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
Ключевые слова: 
kbnosurvey kbarchive kbjet kbprb kbmt KB299484 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:299484

Отправить отзыв

 

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