Пример VB-4. Просмотр списка пользователей базы данных
Этот пример такой же простой, как и второй — здесь всего лишь формируется список пользователей базы данных, выбранной в окне комбинированного списка. На рис. 23.11 представлена форма (в режиме разработки), в следующей далее таблице приведены свойства элементов формы.
Рис. 23.11
Форма для просмотра списка пользователей базы данных сервера (в режиме разработки)
Тип элемента | Свойство, которое изменено (используется в коде) | Значение | Примечание |
UserForm | Name | Form1 | Имя формы, на которое можно ссылаться в коде. |
Caption | Тестирование SQL-DMO (4) | Заголовок. | |
Frame | Name | Frame1 | |
Caption | Базы данных SQL Server | Текст – заголовок для Combo1. | |
ComboBox | Name | Combo1 | Список для отображения (и выбора) наименований баз данных. |
Frame | Name | Frame2 | |
Caption | Пользователи | Текст – заголовок для List1. | |
ListBox | Name | List1 | Список для отображения пользователей выбранной в Combo1 базы данных. |
TextBox | Name | Text1 | Текстовое окно для ввода нового login. |
CommandButton | Name | CmdCreate | Кнопка для создания нового пользователя базы данных. |
Caption | Создать | ||
CommandButton | Name | CmdExit | Кнопка для окончания работы с приложением. |
Caption | Выход |
В листинге 23.4 приведен код модуля формы, а на рис. 23.12 — форма в режиме выполнения. В процедуре Form_Load список баз данных сервера заносится в комбинированный список Combo1 (строки 14–17). После формирования списка баз данных в процедуре загрузки формы вызывается событийная процедура Combo1_Click(строка 20), в которой формируется список таблиц выбранной (текущей) базы данных. Для доступа к именам пользователей используется коллекция obj1(Trim(Combo1.Text)).Users (строка 32) и свойство пользователя Name(строка 33).
Листинг 23.4 Код модуля формы для просмотра списка пользователей базы данных
1: Dim sqlOb As SQLDMO.SQLServer
2: Dim obj1 As Object
3:
4:
5: Private Sub Form_Load()
6:
7: Set sqlOb = New SQLDMO.SQLServer
8:
9: 'подключиться к SQL Server с полномочиями администратора:
10: sqlOb.Connect "TOSHIBA-USER", "sa", ""
11: Set obj1 = sqlOb.Databases
12:
13: 'занести в Combo1 список баз данных:
14: For Each dbs In obj1
15: Combo1.AddItem dbs.Name
16: Combo1.Text = dbs.Name
17: Next dbs
18:
19: ' "щекнуть"Combo1:
20: Combo1_Click
21:
22: End Sub
23:
24:
25: Private Sub Combo1_Click()
26: 'занести в список List1 таблицы выбранной в Combo1 базы
27:
28: Frame2.Caption = "Пользователи базы '" & Trim(Combo1.Text) & "'"
29:
30: List1.Clear
31:
32: For Each tbl In obj1(Trim(Combo1.Text)).Users
33: List1.AddItem tbl.Name
34: Next tbl
35:
36: End Sub
37:
38: Private Sub CmdCreate_Click()
39: 'создать нового пользователя для выбранной базы данных
40:
41: Dim SQLDMOLogins As SQLDMO.Logins
42: Dim SQLDMOLogin As SQLDMO.Login
43: Dim SQLDMOuser As SQLDMO.User
44: Dim SQLDMOdatabase As SQLDMO.Database
45:
46: 'выбранная база данных:
47: Set SQLDMOdatabase = obj1(Trim(Combo1.Text))
48:
49:
50: 'коллекция Logins:
51: Set SQLDMOLogins = sqlOb.Logins
52:
53: 'новый Login:
54: Set SQLDMOLogin = New SQLDMO.Login
55: SQLDMOLogin.Name = Text1.Text
56: SQLDMOLogin.Type = SQLDMOLogin_Standard
57:
58: 'добавить Login к коллекции Logins:
59: SQLDMOLogins.Add SQLDMOLogin
60:
61: 'новый User
62: Set SQLDMOuser = New SQLDMO.User
63: SQLDMOuser.Login = SQLDMOLogin.Name
64: SQLDMOuser.Name = SQLDMOLogin.Name & "_user"
65:
66: 'добавить нового пользователя к выбранной базе данных:
67: SQLDMOdatabase.Users.Add SQLDMOuser
68:
69: sqlOb.Close
70:
71: Form_Load
72:
73: End Sub
74:
75:
76: Private Sub CmdExit_Click()
77:
78: sqlOb.Close
79: Unload Me
80:
81: End Sub
Рис. 23.12
Форма для просмотра списка пользователей базы данных сервера (в режиме выполнения)
В строках 38–73 описана событийная процедура кнопки Создать. Эта процедура создает новый login (строки 53–59) для SQL Server и user (строки 62–67) для выбранной в Combo1 базы данных. После создания login и user вызывается процедура Form_Load (строка 71), в которой обновляется список List1(рис. 23.13). Именно поэтому в процедуре список перед заполнением (32–34) очищается (строка 30).
Рис. 23.13
После создания login и user вызывается процедура Form_Load, в которой обновляется список List1
На рис. 23.14 показан список пользователей базы данных (в окне Interprise Manager) после создания нового пользователя в окне Тестирование SQL-DMO (4).
Рис. 23.14
Cписок пользователей базы данных (в окне Interprise Manager) после создания нового пользователя в окне Тестирование SQL-DMO (4)