Пример 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

Форма для просмотра свойств полей таблицы базы данных сервера (в режиме выполнения)