2013-08-20 61 views
0

我正嘗試連接到lenel並使用WQL來獲取結果。在WMI資源管理器中運行時WQL返回記錄。用於wql查詢的execquery中的計數

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的值什麼都沒有,程序退出當前函數。任何想法是什麼錯誤。

雖然顯示「Cardset has something」。

編輯:

爲了檢查語法我做了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) : 

回答

0

從我understandi ng的WMI API參考,如果沒有遇到錯誤,則SWbemServices.ExecQuery方法將始終返回SWbemObjectSet對象,無論該對象中是否有任何結果。

如果查詢返回0的結果,你還是會在cardSet有效的對象,所以If Not cardSet Is Nothing語句將始終觸發,除非有錯誤,但在同一時間數仍然會返回0

+0

集編輯.... – user1853803