【问题标题】:Count in execquery for wql query在 execquery 中计数 wql 查询
【发布时间】:2013-08-20 04:36:49
【问题描述】:

我正在尝试连接到 lenel 并使用 WQL 来获取结果。在 WMI 资源管理器中运行 WQL 时返回记录。

Set objServices = GetObject("winmgmts://./root/onguard")
Set cardSet = objServices.ExecQuery("select * from Lnl_Badge where id =11111")
if not cardSet is nothing then
Response.Write("<br/>cardset has something")
vContinue = true
else
Response.Write("<br/>cardSet set is nothing")
Exit Function
end if

Response.Write("<br/>count ")
Count = cardSet.Count
Response.Write(Count)

问题是 Count 的值什么也没有,程序从当前函数退出。知道出了什么问题。

“卡组有东西”显示。

编辑:

为了检查语法,我对 cim2v 做了以下操作

Set objWMIService = GetObject("winmgmts:")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
Response.Write(colItems.Count)
for each colItem in colItems

If Not colItem Is Nothing Then
    Response.Write("<br/>")
Response.Write(colItem.ProcessID)
end if
next

令我惊讶的是它的工作......那么为什么上面的代码没有工作...... :(

编辑: 日志文件中的错误

(Tue Aug 20 11:50:22 2013.179589208) : WDM call returned error: 4200
(Tue Aug 20 11:50:22 2013.179589208) : WDM specific return code: 4200
(Tue Aug 20 11:50:22 2013.179589208) : 

【问题讨论】:

    标签: vb.net wmi wql


    【解决方案1】:

    根据我对 WMI API 参考的理解,如果您没有遇到错误,SWbemServices.ExecQuery 方法将始终返回一个 SWbemObjectSet 对象,无论该对象中是否有任何结果。

    如果您的查询返回 0 个结果,您在 cardSet 中仍然有一个有效对象,因此 If Not cardSet Is Nothing 语句将始终触发,除非出现错误,但同时 count 仍将返回 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多