PRB: Access 테이블의 열을 검색하는 ADOX 사용하면 열 사전순 정렬?

기술 자료 번역 기술 자료 번역
기술 자료: 299484 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

현상

카탈로그 ADOX 컬렉션 및 Microsoft OLE DB 공급자에 대한 Jet 사용하여 Access 테이블의 열을 검색하는 경우 열은 사전순으로 정렬됩니다.

원인

OLE DB 공급자 4.0 Jet에 대한 열을 열 서수 위치 순서 대신 사전순으로 검색합니다.

해결 방법

이 문제를 해결하려면 ODBC 드라이버 Microsoft Access 함께 OLE DB 공급자에 대한 ODBC 사용하십시오. 다른 OLE DB 공급자, OLE DB 공급자를 SQL Server 같은 이 문제가 위험할 수 없습니다.

대한 Jet OLE DB 공급자를 사용해야 하는 경우 ADODB 연결 개체의 OpenSchema 메서드를 사용하고 ORDINAL_POSITION 필드에 따라 결과 레코드 집합 정렬.

추가 정보

문제를 재현하기 위한 단계

  1. Visual Basic에서 표준 EXE 프로젝트를 새로 만듭니다. 기본적으로 Form1이 만들어집니다.
  2. 프로젝트 메뉴에서 참조 를 클릭한 다음 Microsoft ActiveX 데이터 개체 2.1Microsoft ADO Ext. 2.1 DDL 및 보안을 클릭하십시오.
  3. 세 개의 명령 단추 컨트롤을 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. 올바른 Microsoft Access 데이터베이스 파일을 가리키도록 cnn.Open 문을 수정하십시오.
  6. 프로젝트를 실행한 다음 Command1 을 클릭하십시오. OLE DB 공급자를 사용할 때 필드 이름을 사전순으로 정렬됩니다 유의하십시오.
  7. Command2 를 클릭하십시오. ODBC 드라이버를 사용할 때 필드 이름을 서수 위치에 나타나도록 유의하십시오.
  8. Command3 을 클릭하십시오. OpenSchema 메서드를 사용하여 OLE DB 공급자를 사용할 때 필드 이름을 서수 위치에 나타나도록 유의하십시오.

참조

자세한 내용은 다음 MSDN 문서를 참조하십시오.
OpenSchema 방법
http://msdn.microsoft.com/en-us/library/ms676705.aspx

ADOX 테이블 개체
http://msdn.microsoft.com/en-us/library/ms677529.aspx

속성

기술 자료: 299484 - 마지막 검토: 2014년 2월 24일 월요일 - 수정: 3.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.1 서비스 팩 2
  • Microsoft Data Access Components 2.1 서비스 팩 1
  • Microsoft Data Access Components 2.1 서비스 팩 2
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 서비스 팩 1
  • Microsoft Data Access Components 2.6
키워드:?
kbnosurvey kbarchive kbmt kbjet kbprb KB299484 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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