Пример VB-3. Просмотр свойств полей таблицы базы данных сервера
В этом примере осуществляется доступ к элементам таблицы базы данных сервера. На рис. 23.9 представлена форма (в режиме разработки), в следующей далее таблице приведены свойства элементов формы.
Рис. 23.9
Форма для просмотра свойств полей таблицы базы данных сервера (в режиме разработки)
UserForm | Name | Form1 | Имя формы, на которое можно ссылаться в коде. |
Caption | Тестирование SQL-DMO (3) | Заголовок. | |
Frame | Name | Frame1 | |
Caption | Базы данных SQL Server | Текст – заголовок для Combo1. | |
ComboBox | Name | Combo1 | Список для отображения (и выбора) наименований баз данных. |
Frame | Name | Frame2 | |
Caption | Таблица | Текст – заголовок для List1. | |
ComboBox | Name | Combo2 | Список для отображения (и выбора) наименований таблиц выбранной в Combo1 базы данных. |
ListBox | Name | List1 | Список для отображения свойств полей выбранной в Combo2 таблицы. |
CommandButton | Name | Command1 | Кнопка для окончания работы с приложением. |
Caption | Выход |
В листинге 23.3 приведен код модуля формы, а на рис. 23.10 — форма в режиме выполнения. Здесь, как и в предыдущем проекте, в процедуре загрузки формы формируется список баз данных сервера для комбинированного списка Combo1 (строки 15–18) и вызывается событийная процедура этого элемента управления (строка 20). В коде событийной процедуры Combo1_Click формируется список таблиц для базы данных (с именем в свойстве Combo1.Text) для комбинированного списка Combo2(строки 31–34) и вызывается событийная процедура этого элемента управления (строка 36).
В коде событийной процедуры Combo2_Click формируется список полей для таблицы с именем в свойстве Combo2.Text (строки 47–56). Для доступа к именам полей используется коллекция obj1( Trim(Combo1.Text)).Tables( Trim(Combo2.Text)).Columns (строка 48) и свойство поля Name(строка 50).
Листинг 23.3 Код модуля формы для просмотра свойств полей таблицы базы данных сервера
1: Option Explicit
2:
3: Dim sqlOb As SQLDMO.SQLServer
4: Dim obj1 As Object
5:
6:
7: Private Sub Form_Load()
8: Dim dbs As Object
9: Set sqlOb = New SQLDMO.SQLServer
10: sqlOb.Connect "TOSHIBA-USER", "Nata", "Nata"
11:
12: Set obj1 = sqlOb.Databases
13:
14:
15: For Each dbs In obj1
16: Combo1.AddItem dbs.Name
17: Combo1.Text = dbs.Name
18: Next dbs
19:
20: Combo1_Click
21:
22: End Sub
23:
24: Private Sub Combo1_Click()
25: 'занести в список List1 таблицы выбранной в Combo1 базы
26: Dim tbl As Object
27: Frame2.Caption = "Таблицы базы '" & Trim(Combo1.Text) & "'"
28:
29: Combo2.Clear
30:
31: For Each tbl In obj1(Trim(Combo1.Text)).Tables
32: Combo2.AddItem tbl.Name
33: Combo2.Text = tbl.Name
34: Next tbl
35:
36: Combo2_Click
37:
38: End Sub
39:
40: Private Sub Combo2_Click()
41: Dim colu As Object, addText As String
42:
43: Frame3.Caption = "Поля таблицы '" & Trim(Combo2.Text) & "'"
44:
45: List1.Clear
46:
47: For Each colu In _
48: obj1(Trim(Combo1.Text)).Tables(Trim(Combo2.Text)).Columns
49:
50: addText = colu.Name & _
51: " - " & colu.Datatype & _
52: "(" & colu.Length & ")"
53: If colu.InPrimaryKey Then addText = addText & " PRIMARY KEY"
54:
55: List1.AddItem addText
56: Next colu
57:
58:
59: End Sub
60:
61: Private Sub Command1_Click()
62: Unload Me
63: End Sub
Рис. 23.10
Форма для просмотра свойств полей таблицы базы данных сервера (в режиме выполнения)