数据顺序
问题描述:
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_NAME
和ORDINAL_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
这非常完美,正是我需要的。非常感谢! –