LISTING 3: Produce Figure 1's Table and Column Explorer Code Callout A Const Srv1Name = "cabxli" Const DbsName = "Chapter6NorthwindCS" Dim srv1 As SQLDMO.SQLServer Dim dbs1 As SQLDMO.Database Sub OpenConnection() Dim cols1 As SQLDMO.Columns 'Connect to server and save for global use. Set srv1 = New SQLDMO.SQLServer srv1.Connect Srv1Name, "sa", "" 'Compute initial hierarchical model walks before ' form opens to speed use later. Set dbs1 = srv1.Databases(DbsName) Set cols1 = dbs1.Tables("Categories").Columns End Sub End Callout A Callout B Private Sub Form_Load() Dim obl1 As SQLDMO.SQLObjectList Dim obj1 As Object Dim str1 As String MsgBox "Please click OK so I can prepare " & _ "your tables/columns explorer for use.", _ vbInformation, "SQL Server Magazine Says: " 'Prepare tables/columns explorer for use. OpenConnection 'Compile list of tables for combo box row source 'based on a SQLObjectList object. Set obl1 = _ srv1.Databases(DbsName). _ ListObjects(SQLDMOObj_UserTable, _ SQLDMOObjSort_Name) For Each obj1 In obl1 str1 = str1 & obj1.Name & "; " Next obj1 str1 = Left(str1, Len(str1) - 2) 'Update table list for combo box. Me.Combo0.RowSourceType = "Value List" Me.Combo0.RowSource = str1 End Sub End Callout B Callout C Private Sub Combo0_AfterUpdate() Dim col1 As SQLDMO.Column 'Compile list of columns for list box row source. Set cols1 = dbs1.Tables(Me.Combo0.Value).Columns For Each col1 In cols1 str1 = str1 & col1.Name & "; " Next col1 str1 = Left(str1, Len(str1) - 2) 'Update column list for list box. Me.List2.RowSourceType = "Value List" Me.List2.RowSource = str1 End Sub End Callout C