Пример VB-6. Просмотр содержимого таблицы базы данных

Этот пример показывает, как легко можно просмотреть содержимое любой таблицы базы данных сервера. На рис. 23.18 представлена форма (в режиме разработки), в следующей далее таблице приведены свойства элементов формы.

Пример VB-6. Просмотр содержимого таблицы базы данных - student2.ru

Рис. 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

Пример VB-6. Просмотр содержимого таблицы базы данных - student2.ru

Рис. 23.19

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

Наши рекомендации