Entrar

PROBLEMA: Colunas estão classificadas em ordem alfabética ao usar ADOX para recuperar colunas da tabela do Access

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

299484
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Se você usar a coleção ADOX catálogos e o Microsoft OLE DB Provider for Jet para recuperar as colunas de uma tabela do Microsoft Access, as colunas são classificadas em ordem alfabética.
Causa
OLE DB Provider 4.0 para o Jet recupera colunas em ordem alfabética em vez de ordem de posição ordinal de coluna.
Resolução
Para contornar esse problema, use o driver de ODBC para o Microsoft Access em conjunto com o provedor OLE DB para ODBC. Outros provedores do OLE, como o provedor OLE DB para SQL Server, DB não representem esse problema.

Se você deve usar OLE DB Provider for Jet, use o método OpenSchema do objeto ADODB conexão e classificar o conjunto de registros resultante no campo ORDINAL_POSITION.
Mais Informações

Etapas para reproduzir o problema

  1. Crie um novo projeto Standard EXE no Visual Basic. O Form1 é criado por padrão.
  2. A partir do menu Project , clique em referências e, em seguida, clique em Microsoft ActiveX Data Objects 2.1 e Microsoft ADO Ext. 2.1 for DDL and Security .
  3. Adicione três controles CommandButton ao Form1.
  4. Cole o seguinte código para a seção Declarations do 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. Modificar as instruções cnn.Open para apontar para um arquivo de banco de dados válido do Microsoft Access.
  6. Execute o projeto e clique em Command1 . Observe que os nomes de campo são classificados em ordem alfabética quando você usa o provedor OLE DB.
  7. Clique em Command2 . Observe que os nomes dos campos aparecem na sua posição ordinal quando você usa o driver ODBC.
  8. Clique em Command3 . Observe que os nomes dos campos aparecem na sua posição ordinal ao usar o provedor OLE DB com o método OpenSchema .
Referências
Para obter mais informações, consulte os seguintes artigos do MSDN:
classificação incorreta campos MSAccess Acc2k 3.51

Warning: This article has been translated automatically

Propriedades

ID do Artigo: 299484 - Última Revisão: 02/24/2014 15:33:41 - Revisão: 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 KbMtpt
Comentários