数据顺序

数据顺序

问题描述:

VBScript中得到Access列我试图列出它们出现在数据,而不是按字母顺序排列的顺序在Access表中的列。数据顺序

这是我尝试的第一个方法。它按字母顺序获取列。

Public Const adSchemaColumns = 4 
Public Const adSchemaTables = 20 

Dim oConn, oRecs 
Set oConn = CreateObject("ADODB.Connection") 
Set oRecs = CreateObject("ADODB.Recordset") 

oConn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='C:\whatever.mdb'" 
Set oRecs = oConn.OpenSchema(adSchemaTables) 

Do Until oRecs.EOF 
    sTableName = oRecs("TABLE_NAME") 

    If UCase(oRecs("TABLE_TYPE")) = "TABLE" Then 
     Dim oTable 
     Set oTable = oConn.OpenSchema(adSchemaColumns, Array(Null, Null, sTableName)) 

     Do Until oTable.EOF 
      WScript.Echo oTable("COLUMN_NAME") 
      oTable.MoveNext 
     Loop 

     Set oTable = Nothing 
    End If 

    oRecs.MoveNext 
Loop 

oRecs.Close 
oConn.Close 
Set oRecs = Nothing 
Set oConn = Nothing 

我也试过使用ADOX目录,表和列,但也按字母顺序得到一切。所以,如果一个名为Table 1表中具有的顺序B,A,C柱,我已经试过这两种方法将打印出A B C代替B A C的

任何人都可以阐明这一些轻?

adSchemaColumns的记录集给你COLUMN_NAMEORDINAL_POSITION字段。所以,你可以将这些字段值加载到Scripting.Dictionary,后来走字典中ORDINAL_POSITION秩序和.Echo COLUMN_NAME

下面是在一个表中的列一个VBScript例子。

Option Explicit 
Public Const adSchemaColumns = 4 
Dim cn, rs, dct, i 

Set dct = CreateObject("Scripting.Dictionary") 
Set cn = CreateObject("ADODB.Connection") 
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
    "Data Source='C:\share\Access\database1.mdb'" 
Set rs = cn.OpenSchema(adSchemaColumns, _ 
    Array(Null, Null, "tblFoo")) 

With rs 
    Do While Not .EOF 
     dct.Add .Fields("ORDINAL_POSITION").Value, _ 
      .Fields("COLUMN_NAME").Value 
     .MoveNext 
    Loop 
    .Close 
End With 

For i = 1 To dct.Count 
    WScript.Echo dct(i) 
Next 

Set dct = Nothing 
Set rs = Nothing 
cn.Close 
Set cn = Nothing 
+1

这非常完美,正是我需要的。非常感谢! –