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