EXPLORE.FRM

VERSION 4.00 
Begin VB.Form frmMain
Caption = "SQL-DMO Explorer"
ClientHeight = 6705
ClientLeft = 180
ClientTop = 390
ClientWidth = 9240
BeginProperty Font
name = "MS Sans Serif"
charset = 1
weight = 700
size = 8.25
underline = 0 'False
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 7110
Left = 120
LinkTopic = "Form1"
ScaleHeight = 6705
ScaleWidth = 9240
Top = 45
Width = 9360
Begin VB.TextBox txtProperties
Height = 2535
Left = 120
MultiLine = -1 'True
ScrollBars = 3 'Both
TabIndex = 13
Top = 4080
Width = 9015
End
Begin VB.CommandButton cmdExit
Caption = "E&xit"
Height = 375
Left = 8640
TabIndex = 4
Top = 120
Width = 495
End
Begin VB.ComboBox cboFour
Height = 315
Left = 6960
Sorted = -1 'True
Style = 2 'Dropdown List
TabIndex = 11
Top = 600
Width = 2175
End
Begin VB.ListBox lstFour
Height = 2985
Left = 6960
Sorted = -1 'True
TabIndex = 12
Top = 960
Width = 2175
End
Begin VB.CommandButton cmdConnect
Caption = "&Connect"
Height = 375
Left = 7560
TabIndex = 3
Top = 120
Width = 975
End
Begin VB.TextBox txtPassword
Height = 285
Left = 5880
PasswordChar = "*"
TabIndex = 2
Top = 120
Width = 1455
End
Begin VB.TextBox txtLogin
Height = 285
Left = 3360
TabIndex = 1
Top = 120
Width = 1455
End
Begin VB.TextBox txtServer
Height = 285
Left = 1200
TabIndex = 0
Top = 120
Width = 1455
End
Begin VB.ListBox lstThree
Height = 2985
Left = 4680
Sorted = -1 'True
TabIndex = 10
Top = 960
Width = 2175
End
Begin VB.ListBox lstTwo
Height = 2985
Left = 2400
Sorted = -1 'True
TabIndex = 8
Top = 960
Width = 2175
End
Begin VB.ListBox lstOne
Height = 2985
Left = 120
Sorted = -1 'True
TabIndex = 6
Top = 960
Width = 2175
End
Begin VB.ComboBox cboThree
Height = 315
Left = 4680
Sorted = -1 'True
Style = 2 'Dropdown List
TabIndex = 9
Top = 600
Width = 2175
End
Begin VB.ComboBox cboTwo
Height = 315
Left = 2400
Sorted = -1 'True
Style = 2 'Dropdown List
TabIndex = 7
Top = 600
Width = 2175
End
Begin VB.ComboBox cboOne
Height = 315
Left = 120
Sorted = -1 'True
Style = 2 'Dropdown List
TabIndex = 5
Top = 600
Width = 2175
End
Begin VB.Label lblPassword
Caption = "Password:"
Height = 255
Left = 4920
TabIndex = 16
Top = 120
Width = 855
End
Begin VB.Label lblLogin
Caption = "Login:"
Height = 255
Left = 2760
TabIndex = 15
Top = 120
Width = 615
End
Begin VB.Label lblServer
Caption = "SQL Server:"
Height = 255
Left = 120
TabIndex = 14
Top = 120
Width = 1095
End
End
Attribute VB_Name = "frmMain"
Attribute VB_Creatable = False
Attribute VB_Exposed = False
Option Explicit
Private Sub FillProperties(oObject As Object, txtText As Object)
On Error Resume Next
Dim oProperty As Object

frmMain.MousePointer = 11
With txtText
Select Case oObject.TypeOf
Case SQLOLEObj_Subscription
.Text = "Properties for " & oObject.ServerName & NL
Case Else
.Text = "Properties for " & oObject.Name & NL
End Select
For Each oProperty In oObject.Properties
.Text = .Text & oProperty.Name & ": " & oProperty.Value & NL
Next
End With
frmMain.MousePointer = 0

End Sub

Private Sub cboFour_Click()

If oCurrentThree Is Nothing Then Exit Sub

FillFour

End Sub


Private Sub cboOne_Click()

cboTwo.Clear
lstTwo.Clear
cboThree.Clear
lstThree.Clear
cboFour.Clear
lstFour.Clear

Set oCurrentOne = Nothing

Select Case cboOne.Text
Case "Databases"
cboTwo.AddItem "Defaults"
cboTwo.AddItem "Groups"
cboTwo.AddItem "Publications"
cboTwo.AddItem "Rules"
cboTwo.AddItem "StoredProcedures"
cboTwo.AddItem "SystemDataTypes"
cboTwo.AddItem "Tables"
cboTwo.AddItem "UserDefinedDataTypes"
cboTwo.AddItem "Users"
cboTwo.AddItem "Views"
Case "RemoteServers"
cboTwo.AddItem "RemoteLogins"
End Select

FillOne

End Sub

Private Sub cboThree_Click()

cboFour.Clear
lstFour.Clear

Set oCurrentThree = Nothing

Select Case cboThree.Text
Case "Articles"
cboFour.AddItem "Subscriptions"
End Select

If oCurrentTwo Is Nothing Then Exit Sub

FillThree

End Sub

Private Sub cboTwo_Click()

cboThree.Clear
lstThree.Clear
cboFour.Clear
lstFour.Clear

Set oCurrentTwo = Nothing

Select Case cboTwo.Text
Case "Tables"
cboThree.AddItem "Checks"
cboThree.AddItem "Columns"
cboThree.AddItem "Indexes"
cboThree.AddItem "Keys"
cboThree.AddItem "Triggers"
Case "Publications"
cboThree.AddItem "Articles"
End Select

If oCurrentOne Is Nothing Then Exit Sub

FillTwo

End Sub

Private Sub FillOne()
On Error Resume Next

lstOne.Clear
If cboOne.ListIndex = -1 Then Exit Sub

ReDim oCollection(0) As Object
GetCollection oSQLServer, (cboOne.Text), oCollection()

Dim i As Integer
For i = 1 To oCollection(0).Count
lstOne.AddItem oCollection(0)(i).Name
Next i

End Sub

Private Sub FillThree()
On Error Resume Next

lstThree.Clear
If cboThree.ListIndex = -1 Then Exit Sub

ReDim oCollection(0) As Object
GetCollection oCurrentTwo, (cboThree.Text), oCollection()

Dim i As Integer
For i = 1 To oCollection(0).Count
lstThree.AddItem oCollection(0)(i).Name
Next i

End Sub

Private Sub FillFour()
On Error Resume Next

lstFour.Clear
If cboFour.ListIndex = -1 Then Exit Sub

ReDim oCollection(0) As Object
GetCollection oCurrentThree, (cboFour.Text), oCollection()

Dim i As Integer
For i = 1 To oCollection(0).Count
Select Case oCollection(0)(i).TypeOf
Case SQLOLEObj_Subscription
lstFour.AddItem oCollection(0)(i).ServerName
Case Else
lstFour.AddItem oCollection(0)(i).Name
End Select
Next i

End Sub


Private Sub FillTwo()
On Error Resume Next

lstTwo.Clear
If cboTwo.ListIndex = -1 Then Exit Sub

ReDim oCollection(0) As Object
GetCollection oCurrentOne, (cboTwo.Text), oCollection()

Dim i As Integer
For i = 1 To oCollection(0).Count
lstTwo.AddItem oCollection(0)(i).Name
Next i

End Sub


Private Sub cmdConnect_Click()
On Error Resume Next

frmMain.MousePointer = 11
oSQLServer.DisConnect
oSQLServer.Connect txtServer.Text, txtLogin.Text, txtPassword.Text
With txtProperties
If Err.Number = 0 Then
.Text = "Properties for SQL Server " & oSQLServer.TrueName & NL
FillProperties oSQLServer, txtProperties
Else
.Text = Err.Source & " Error " & Err.Number - vbObjectError & ":" & NL
.Text = .Text & " " & Err.Description
End If
End With

frmMain.MousePointer = 0

lstOne.Clear
lstTwo.Clear
lstThree.Clear
lstFour.Clear

End Sub


Private Sub cmdExit_Click()
Unload frmMain
End Sub

Private Sub Form_Load()
On Error Resume Next
NL = Chr$(13) & Chr$(10)

Set oSQLServer = New SQLOLE.SQLServer
oSQLServer.LoginTimeout = 10

With cboOne
.Clear
.AddItem "Alerts"
.AddItem "Databases"
.AddItem "Devices"
.AddItem "Languages"
.AddItem "Logins"
.AddItem "Operators"
.AddItem "RemoteServers"
End With

End Sub


Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next

oSQLServer.DisConnect
oSQLServer.Close

End Sub



Private Sub lstFour_Click()
On Error Resume Next

Select Case cboFour.Text
Case "Subscriptions"
Set oCurrentFour = oCurrentThree.Subscriptions(lstFour.Text)
End Select

FillProperties oCurrentFour, txtProperties

End Sub

Private Sub lstOne_Click()
On Error Resume Next

Select Case cboOne.Text
Case "Databases"
Set oCurrentOne = oSQLServer.Databases(lstOne.Text)
Case "Devices"
Set oCurrentOne = oSQLServer.Devices(lstOne.Text)
Case "Languages"
Set oCurrentOne = oSQLServer.Languages(lstOne.Text)
Case "Logins"
Set oCurrentOne = oSQLServer.Logins(lstOne.Text)
Case "RemoteServers"
Set oCurrentOne = oSQLServer.RemoteServers(lstOne.Text)
Case "Alerts"
Set oCurrentOne = oSQLServer.Alerts(lstOne.Text)
Case "Operators"
Set oCurrentOne = oSQLServer.Operators(lstOne.Text)
End Select

lstTwo.Clear
lstThree.Clear
lstFour.Clear

FillTwo

FillProperties oCurrentOne, txtProperties

End Sub



Private Sub lstThree_Click()
On Error Resume Next

Select Case cboThree.Text
Case "Columns"
Set oCurrentThree = oCurrentTwo.Columns(lstThree.Text)
Case "Indexes"
Set oCurrentThree = oCurrentTwo.Indexes(lstThree.Text)
Case "Triggers"
Set oCurrentThree = oCurrentTwo.Triggers(lstThree.Text)
Case "Keys"
Set oCurrentThree = oCurrentTwo.Keys(lstThree.Text)
Case "Checks"
Set oCurrentThree = oCurrentTwo.Checks(lstThree.Text)
Case "Articles"
Set oCurrentThree = oCurrentTwo.Articles(lstThree.Text)
End Select

lstFour.Clear

FillFour

FillProperties oCurrentThree, txtProperties

End Sub

Private Sub lstTwo_Click()
On Error Resume Next

Select Case cboTwo.Text
Case "Defaults"
Set oCurrentTwo = oCurrentOne.Defaults(lstTwo.Text)
Case "Groups"
Set oCurrentTwo = oCurrentOne.Groups(lstTwo.Text)
Case "Rules"
Set oCurrentTwo = oCurrentOne.Rules(lstTwo.Text)
Case "StoredProcedures"
Set oCurrentTwo = oCurrentOne.StoredProcedures(lstTwo.Text)
Case "SystemDataTypes"
Set oCurrentTwo = oCurrentOne.SystemDatatypes(lstTwo.Text)
Case "Tables"
Set oCurrentTwo = oCurrentOne.Tables(lstTwo.Text)
Case "UserDefinedDataTypes"
Set oCurrentTwo = oCurrentOne.UserDefinedDatatypes(lstTwo.Text)
Case "Users"
Set oCurrentTwo = oCurrentOne.Users(lstTwo.Text)
Case "Views"
Set oCurrentTwo = oCurrentOne.Views(lstTwo.Text)
Case "RemoteLogins"
Set oCurrentTwo = oCurrentOne.RemoteLogins(lstTwo.Text)
Case "Publications"
Set oCurrentTwo = oCurrentOne.Publications(lstTwo.Text)
End Select

lstThree.Clear
lstFour.Clear

FillThree

FillProperties oCurrentTwo, txtProperties

End Sub