You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
270 lines
11 KiB
270 lines
11 KiB
VERSION 1.0 CLASS
|
|
BEGIN
|
|
MultiUse = -1 'True
|
|
END
|
|
Attribute VB_Name = "Queries"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = True
|
|
Attribute VB_PredeclaredId = False
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
|
|
'Private wsoServices As DIWbemServices
|
|
Private wsoServices As ISWbemServices
|
|
Private numPasses As Integer
|
|
Private numFails As Integer
|
|
Private Passes As New Collection
|
|
Private Fails As New Collection
|
|
|
|
Private Sub AddPass(s As String)
|
|
Passes.Add s, Trim(Str(numPasses))
|
|
numPasses = numPasses + 1
|
|
End Sub
|
|
|
|
Private Sub AddFail(s As String)
|
|
Fails.Add s, Trim(Str(numFails))
|
|
numFails = numFails + 1
|
|
End Sub
|
|
|
|
Private Sub BuildList()
|
|
AddPass "Monkeybutt!"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode"
|
|
AddPass "SELECT Nodename from SMS_PropertyDisplayNode"
|
|
AddPass "SELECT Nodename from SMS_PropertyDisplayNode P"
|
|
AddPass "SELECT P.Nodename from SMS_PropertyDisplayNode P"
|
|
AddPass "SELECT Count(*) FROM SMS_PropertyDisplayNode"
|
|
AddPass "SELECT Count(Nodename) FROM SMS_PropertyDisplayNode"
|
|
AddPass "SELECT Count(SMS_PropertyDisplayNode.Nodename) FROM SMS_PropertyDisplayNode"
|
|
AddPass "SELECT Count(P.Nodename) FROM SMS_PropertyDisplayNode P"
|
|
AddPass "SELECT DISTINCT * FROM SMS_PropertyDisplayNode"
|
|
AddPass "SELECT DISTINCT Nodename FROM SMS_PropertyDisplayNode"
|
|
AddPass "SELECT DISTINCT SMS_PropertyDisplayNode.Nodename from SMS_PropertyDisplayNode"
|
|
AddPass "SELECT DISTINCT P.Nodename from SMS_PropertyDisplayNode P"
|
|
AddPass "SELECT * FROM SMS_Site, SMS_SiteControlFile"
|
|
AddPass "SELECT SMS_Site.Sitename FROM SMS_Site, SMS_SiteControlFile"
|
|
AddPass "SELECT P.Sitename FROM SMS_Site P,SMS_SiteControlFile"
|
|
AddPass "SELECT P.Sitename FROM SMS_Site P,SMS_SiteControlFile R"
|
|
AddPass "SELECT * FROM SMS_Site JOIN SMS_SiteControlFile ON SMS_Site.Sitecode=SMS_SiteControlFile.Sitecode"
|
|
AddPass "SELECT * FROM SMS_Site P JOIN SMS_SiteControlFile ON P.Sitecode=SMS_SiteControlFile.Sitecode"
|
|
AddPass "SELECT * FROM SMS_Site P JOIN SMS_SiteControlFile R ON P.Sitecode=R.Sitecode"
|
|
AddPass "SELECT SMS_Site.Sitename FROM SMS_Site JOIN SMS_SiteControlFile ON SMS_Site.Sitecode=SMS_SiteControlFile.Sitecode"
|
|
AddPass "SELECT P.Sitename FROM SMS_Site P JOIN SMS_SiteControlFile ON P.Sitecode=SMS_SiteControlFile.Sitecode"
|
|
AddPass "SELECT P.Sitename FROM SMS_Site P JOIN SMS_SiteControlFile R ON P.Sitecode=R.Sitecode"
|
|
AddPass "SELECT * FROM SMS_Site WHERE Sitecode=""ABC"""
|
|
|
|
AddPass "SELECT * FROM SMS_Site WHERE Sitecode=""ABC"" AND Sitename=""blah"""
|
|
AddPass "SELECT * FROM SMS_Site WHERE Sitecode=""ABC"" OR Sitename=""blah"""
|
|
AddPass "SELECT * FROM SMS_Site WHERE NOT Sitecode=""ABC"""
|
|
AddPass "SELECT * FROM SMS_Site WHERE NOT Sitecode=""ABC"" AND Sitename=""blah"""
|
|
AddPass "SELECT * FROM SMS_Site WHERE NOT Sitecode=""ABC"" OR Sitename=""blah"""
|
|
AddPass "SELECT * FROM SMS_Site WHERE NOT (Sitecode=""ABC"" AND Sitename=""blah"")"
|
|
AddPass "SELECT * FROM SMS_Site WHERE NOT (Sitecode=""ABC"" OR Sitename=""blah"")"
|
|
|
|
|
|
|
|
'kludgey fast queries to satisfy some deep seated desire lamar had at this exact moment
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Order By Nodekey"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Group By Nodekey"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey <= 7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey < 7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey >= 7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey < 7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey != 7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7 AND Classname=""SMS_G_System"""
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7 OR Classname=""SMS_G_System"""
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7 OR Classname=""SMS_G_System"" AND Nodekey=7"
|
|
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where (NOT Nodekey = 7 OR Classname=""SMS_G_System"") AND Nodekey=7"
|
|
|
|
|
|
'this should work! but it doesn't.
|
|
'AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Classname like %SMS_G_System%"
|
|
|
|
|
|
|
|
AddFail "SELECT Count(P.Sitename,R.BuildNumber) FROM SMS_Site P JOIN SMS_SiteControlFile R ON P.Sitecode=R.Sitecode"
|
|
''AddFail "SELECT PackageID FROM SMS_Package, SMS_Program"
|
|
''AddFail "SELECT PackageID FROM SMS_Package JOIN SMS_Program ON SMS_Package.PackageID=SMS_Program.PackageID"
|
|
''AddFail "SELECT PackageID FROM SMS_Package P JOIN SMS_Program ON P.PackageID=SMS_Program.PackageID"
|
|
''AddFail "SELECT PackageID FROM SMS_Package P JOIN SMS_Program R ON P.PackageID=R.PackageID"
|
|
''AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON PackageID=PackageID"
|
|
''AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON SMS_Package.PackageID=PackageID"
|
|
'AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON P.PackageID=PackageID"
|
|
'AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON R.PackageID=PackageID"
|
|
End Sub
|
|
|
|
Private Sub Class_Initialize()
|
|
frmMain.lstModules.AddItem "Queries"
|
|
frmMain.lstModules.Selected(frmMain.lstModules.ListCount - 1) = False
|
|
numPasses = 0
|
|
numFails = 0
|
|
BuildList
|
|
End Sub
|
|
|
|
Public Function GetModuleInfo() As String
|
|
GetModuleInfo = "Tests various WQL queries." & vbCrLf
|
|
GetModuleInfo = GetModuleInfo & "Keep in mind that this module isn't fully functional as of 5/4/98"
|
|
End Function
|
|
|
|
Public Sub RegisterNodes()
|
|
Dim i As Integer
|
|
Dim s As String
|
|
i = 0
|
|
frmTest.AddNode "root", "qRoot", "Queries"
|
|
frmTest.AddNode "qRoot", "qConnect", "Connect"
|
|
'frmTest.AddNode "qRoot", "qWarning", "Warning Message"
|
|
frmTest.AddNode "qRoot", "qPass", "Queries that should succeed"
|
|
frmTest.AddNode "qRoot", "qFail", "Queries that should fail"
|
|
For i = 0 To numPasses - 1
|
|
s = Passes(Trim(Str(i)))
|
|
frmTest.AddNode "qPass", "qP" & Trim(Str(i)), s, False
|
|
Tests.Add "Queries", "qP" & Trim(Str(i))
|
|
Next i
|
|
For i = 0 To numFails - 1
|
|
s = Fails(Trim(Str(i)))
|
|
frmTest.AddNode "qFail", "qF" & Trim(Str(i)), s, False
|
|
Tests.Add "Queries", "qF" & Trim(Str(i))
|
|
Next i
|
|
End Sub
|
|
|
|
Public Sub RegisterTests()
|
|
Tests.Add "Queries", "qConnect"
|
|
'Tests.Add "Queries", "qWarning"
|
|
'Rest of the tests are registered in RegisterNodes. Inappropriate, but it really doesn't matter.
|
|
End Sub
|
|
|
|
|
|
Public Function Execute(n As Node) As Integer
|
|
Select Case n.key
|
|
Case "qConnect"
|
|
Execute = qConnect(n)
|
|
'Case "qWarning"
|
|
'If Not frmTest.AllOfThesePassed("qConnect") Then
|
|
' Execute = 2
|
|
'Else
|
|
' Dim i As Integer
|
|
' i = MsgBox("These queries may crash CIMOM or the BVT. Continue?", vbYesNo + vbQuestion, "Warning")
|
|
' If i = vbNo Then
|
|
' Execute = 2
|
|
' Else
|
|
' Execute = 1
|
|
' End If
|
|
'End If
|
|
'Execute = 1
|
|
Case Else
|
|
If Left(n.key, 2) = "qP" Then
|
|
Execute = ExecQuery(n, n.text)
|
|
ElseIf Left(n.key, 2) = "qF" Then
|
|
Execute = ExecQuery(n, n.text)
|
|
If Execute = 0 Then
|
|
Execute = 1
|
|
Else
|
|
Execute = 0
|
|
End If
|
|
Else
|
|
Execute = 3
|
|
End If
|
|
End Select
|
|
End Function
|
|
|
|
|
|
Public Function ExecQuery(n As Node, query As String) As Integer
|
|
On Error Resume Next
|
|
If Not frmTest.AllOfThesePassed("qConnect") Then
|
|
ExecQuery = 2
|
|
Else
|
|
'Dim e As DIEnumWbemClassObject
|
|
'n.Tag = n.Tag & "ExecQuery: " & query & vbCrLf
|
|
'wsoServices.ExecQuery "wql", query, 0, Nothing, e
|
|
'If CheckError(Err.Number, n, query) Then Exit Function
|
|
'
|
|
'Dim c As DWbemClassObject
|
|
'Dim s() As String
|
|
'Dim i As Integer
|
|
'Dim v As Variant
|
|
|
|
'Do While e.Next(-1, c) = 0
|
|
' c.GetNames vbNullString, WBEM_FLAG_KEYS_ONLY, vbNullString, s
|
|
' If CheckError(Err.Number, n, "Getnames Keys Only") Then Exit Function
|
|
' n.Tag = n.Tag & "Getnames UBound: " & UBound(s) & vbCrLf
|
|
' n.Tag = n.Tag & "Getnames LBound: " & LBound(s) & vbCrLf
|
|
' For i = LBound(s) To UBound(s)
|
|
' c.Get s(i), 0, v, 0, 0
|
|
' If CheckError(Err.Number, n, "Get " & s(i)) Then Exit Function
|
|
' n.Tag = n.Tag & s(i) & "=" & CStr(v) & vbCrLf & "----" & vbCrLf
|
|
' Next i
|
|
'Loop
|
|
|
|
'ExecQuery = 1
|
|
|
|
'***************************
|
|
'catch the situation and debug it
|
|
If n.key = "qP25" Then Stop
|
|
'***************************
|
|
|
|
Dim c As ISWbemObject
|
|
Dim e As ISEnumWbemObject
|
|
Dim p As ISWbemProperty
|
|
Set e = wsoServices.ExecQuery(query, , 0)
|
|
If CheckError(Err.Number, n, query) Then Exit Function
|
|
|
|
|
|
|
|
|
|
For Each c In e
|
|
If Err <> 0 Then
|
|
Dim str1, str2, str3 As String
|
|
str1 = Err.Description
|
|
str2 = Err.Number
|
|
str3 = Err.Source
|
|
Else
|
|
n.Tag = n.Tag & c.GetObjectText_ & vbCrLf
|
|
For Each p In c.Properties_
|
|
If VarType(p.Value) < 9 Then
|
|
If CheckError(Err.Number, n, "Accessing results") Then
|
|
Exit Function
|
|
End If
|
|
n.Tag = n.Tag & p.Name & " = " & p.Value & vbCrLf
|
|
Else
|
|
n.Tag = n.Tag & p.Name & " was skipped, weird type." & vbCrLf
|
|
End If
|
|
Next p
|
|
n.Tag = n.Tag & "----" & vbCrLf
|
|
End If
|
|
Next c
|
|
ExecQuery = 1
|
|
End If
|
|
End Function
|
|
|
|
Private Function qConnect(n As Node) As Integer
|
|
|
|
Dim wlo As New SWbemLocator
|
|
Dim u As String
|
|
Dim p As String
|
|
Dim a As String
|
|
|
|
If frmMain.chkUserid.Value Then
|
|
u = vbNullString
|
|
Else
|
|
u = frmMain.txtUserid.text
|
|
End If
|
|
|
|
If frmMain.chkPassword.Value Then
|
|
p = vbNullString
|
|
Else
|
|
p = frmMain.txtPassword.text
|
|
End If
|
|
|
|
If frmMain.chkAuthority.Value Then
|
|
a = vbNullString
|
|
Else
|
|
a = frmMain.txtAuthority.text
|
|
End If
|
|
|
|
On Error Resume Next
|
|
'wlo.ConnectServer "\\" & frmMain.txtServer.text & "\root\sms\site_" & frmMain.txtSitecode.text, u, p, vbNullString, 0, a, Nothing, wsoServices
|
|
Set wsoServices = wlo.ConnectServer(frmMain.txtServer.text, "root\sms\site_" & frmMain.txtSitecode.text, u, p)
|
|
If CheckError(Err.Number, n, "Connecting to \\" & frmMain.txtServer.text & "\root\sms\site_" & frmMain.txtSitecode.text) Then Exit Function
|
|
|
|
qConnect = 1
|
|
End Function
|