Пример VB-6. Просмотр содержимого таблицы базы данных
Этот пример показывает, как легко можно просмотреть содержимое любой таблицы базы данных сервера. На рис. 23.18 представлена форма (в режиме разработки), в следующей далее таблице приведены свойства элементов формы.
Рис. 23.18
Форма для просмотра содержимого таблицы базы данных (в режиме разработки)
Тип элемента | Свойство, которое изменено (используется в коде) | Значение | Примечание |
UserForm | Name | Form1 | Имя формы, на которое можно ссылаться в коде. |
Caption | Тестирование SQL-DMO (6) | Заголовок. | |
Frame | Name | Frame1 | |
Caption | Базы данных SQL Server | Текст – заголовок для Combo1. | |
ComboBox | Name | Combo1 | Список для отображения (и выбора) наименований баз данных. |
Frame | Name | Frame2 | |
Caption | Таблица | Текст – заголовок для Combo2. | |
ComboBox | Name | Combo2 | Список для отображения (и выбора) наименований таблиц выбранной в Combo1 базы данных. |
CommandButton | Name | Command1 | Кнопка для окончания работы с приложением. |
Caption | Выход | ||
Frame | Name | Frame3 | |
Caption | Поля | Текст – заголовок для MSFlexGrid1. | |
MSFlexGrid | MSFlexGrid1 | Сетка для отображения данных в полях. |
В листинге 23.6 приведен код модуля формы, а на рис. 23.19 — форма в режиме выполнения. Здесь, как и в проекте третьего примера, в процедуре загрузки формы формируется список баз данных сервера для комбинированного списка Combo1 (строки 12–15) и вызывается событийная процедура этого элемента управления (строка 17). В коде событийной процедуры Combo1_Click формируется список таблиц для базы данных (с именем в свойстве Combo1.Text) для комбинированного списка Combo2(строки 29–32) и вызывается событийная процедура этого элемента управления (строка 34).
В коде событийной процедуры Combo2_Click объявляется переменная qsq с типом SQLDMO.QueryResults. В эту переменную можно возвращать результат T-SQL-запроса, т.е. данные таблицы. В строке 46 формируется строка с T-SQL-запросом, а в строках 51–52 при помощи метода ExecuteWithResults T-SQL-запрос выполняется с передачей результата объекту qsq.
В остальной части процедуры Combo2_Click формируются отображаемые свойства элемента MSFlexGrid. Сначала (строки 58–67) с использованием свойств Name и InPrimaryKey объектов коллекции obj1( Trim(Combo1.Text)).Tables( Trim( Combo2.Text)).Columns формируются заголовки полей сетки. Затем (строки 74–82) с использованием массива с результатом T-SQL-запроса qsq.GetColumnString формируются элементы сетки со значениями полей запроса.
Листинг 23.6 Код модуля формы для просмотра содержимого таблицы базы данных
1: Dim sqlOb As SQLDMO.SQLServer
2: Dim obj1 As Object
3:
4: Private Sub Form_Load()
5:
6: Set sqlOb = New SQLDMO.SQLServer
7: sqlOb.Connect "VOVA", "Dmitry", "Dmitry"
8:
9: Set obj1 = sqlOb.Databases
10:
11:
12: For Each dbs In obj1
13: Combo1.AddItem dbs.Name
14: Combo1.Text = dbs.Name
15: Next dbs
16:
17: Combo1_Click
18:
19: End Sub
20:
21: Private Sub Combo1_Click()
22: 'обработчик комбинированного списка 'База данных SQL Server'
23: 'занести в список Combo2 таблицы выбранной в Combo1 базы
24:
25: Frame2.Caption = "Таблицы базы '" & Trim(Combo1.Text) & "'"
26:
27: Combo2.Clear
28:
29: For Each tbl In obj1(Trim(Combo1.Text)).Tables
30: Combo2.AddItem tbl.Name
31: Combo2.Text = tbl.Name
32: Next tbl
33:
34: Combo2_Click
35:
36: End Sub
37:
38: Private Sub Combo2_Click()
39: 'обработчик комбинированного списка 'Таблица'
40: 'заполннить сетку данными текущей таблицы
41:
42: Dim qsq As SQLDMO.QueryResults
43:
44: MSFlexGrid1.Clear
45:
46: Frame3.Caption = "Содержимое таблицы '" & Trim(Combo2.Text) & "'"
47:
48: sql_query = "SELECT * FROM " & Trim(Combo2.Text)
49:
50:
51: Set qsq = _
52: sqlOb.Databases(Trim(Combo1.Text)).ExecuteWithResults(sql_query)
53:
54: MSFlexGrid1.Cols = qsq.Columns + 1
55:
56:
57: 'заполнение заголовков таблицы:
58: MSFlexGrid1.Row = 0 'строка заголовков
59: i = 1
60: For Each colu In _
61: obj1(Trim(Combo1.Text)).Tables(Trim(Combo2.Text)).Columns
62:
63: addText = colu.Name
64: If colu.InPrimaryKey Then addText = addText & " (primary key)"
65:
66: MSFlexGrid1.Col = i 'номер колонки
67: MSFlexGrid1.Text = addText 'заголовок
68:
69: i = i + 1
70:
71: Next colu
72:
73: 'заполнение сетки содержимым полей:
74: For i = 1 To qsq.Rows
75: ss = ""
76: For j = 1 To qsq.Columns
77: ss = ss & vbTab & qsq.GetColumnString(i, j)
78: Next
79:
80: MSFlexGrid1.AddItem ss
81:
82: Next
83:
84: End Sub
85:
86: Private Sub Command1_Click()
87: Unload Me
88: End Sub
Рис. 23.19
Форма для просмотра содержимого таблицы базы данных (в режиме выполнения)