首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBScript WQL排序结果集?

VBScript WQL排序结果集?
EN

Stack Overflow用户
提问于 2017-09-12 17:55:00
回答 1查看 2K关注 0票数 2

显然,WQL不包含ORDER BY子句。有没有办法根据其中一列对结果集进行排序?例如:

代码语言:javascript
复制
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
sSQL = "Select Time,Source,Event,CategoryNum,Category,TypeNum,Type,User,ComputerName,Insertion1,Insertion2,Data from Win32_NTLogEvent Where Logfile = 'System' and SourceName = 'Service Control Manager'"
Set resultSet = objWMIService.ExecQuery (sSQL)
For Each objEvent In resultSet
    ...
Next

有没有办法按Time列对resultSet进行排序?

EN

回答 1

Stack Overflow用户

发布于 2017-09-12 18:23:43

WQL确实没有排序子句,因此不可能直接在查询中排序。您可以做的是将返回的数据放入disconnected recordset中,然后对记录集进行排序:

代码语言:javascript
复制
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "Time", 7
DataList.Fields.Append "Source", 200, 255
DataList.Fields.Append "Event", 3
...
DataList.Open

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//./root/cimv2")
qry = "SELECT Time,Source,Event,CategoryNum,Category,TypeNum,Type,User,ComputerName,Insertion1,Insertion2,Data " & _
      "FROM Win32_NTLogEvent " & _ 
      "WHERE Logfile='System' AND SourceName='Service Control Manager'"

For Each evt In wmi.ExecQuery(qry)
    DataList.AddNew
    DataList("Time")   = evt.Time
    DataList("Source") = evt.Source
    DataList("Event")  = evt.Event
    ...
    DataList.Update
Next

DataList.Sort = "Time"
DataList.MoveFirst
Do Until DataList.EOF
    WScript.Echo DataList.Fields.Item("Time") & vbTab & _
        DataList.Fields.Item("Event")
    DataList.MoveNext
Loop

根据需要调整字段的data type

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46173316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档