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

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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 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. 올바른 Microsoft Access 데이터베이스 파일을 가리키도록 cnn.Open 문을 수정하십시오.
  6. 프로젝트를 실행한 다음 Command1 을 클릭하십시오. OLE DB 공급자를 사용할 때 필드 이름을 사전순으로 정렬됩니다 유의하십시오.
  7. Command2 를 클릭하십시오. ODBC 드라이버를 사용할 때 필드 이름을 서수 위치에 나타나도록 유의하십시오.
  8. Command3 을 클릭하십시오. OpenSchema 메서드를 사용하여 OLE DB 공급자를 사용할 때 필드 이름을 서수 위치에 나타나도록 유의하십시오.
참조
자세한 내용은 다음 MSDN 문서를 참조하십시오.
MSAccess Acc2k 3.51 잘못된 정렬 필드

경고: 이 문서는 자동 번역되었습니다

속성

문서 ID: 299484 - 마지막 검토: 02/24/2014 06:04:11 - 수정: 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
피드백