Модель объектов ADO взаимодействует с драйвером ODBC и обеспечивает обращение к различным источникам
данных из приложений. Ее поддерживают такие языки программирования, как: Visual Basic, VBScript, Java, JavaScript.
Модель объектов ADO имеет вид, рис. 7:
Рис. 7 – Объектная модель ADO
Объект Connection – представляет собой уникальное соединение с базой
данных.
Объект Command –
содержит команду, которую нужно выполнить над источником данных. Типичное
действие – это команда SQL.
Объект Recordset – представляет собой набор полей и записей –
результат выполненного над источником данных запроса.
Работу с
моделью объектов ADO рассмотрим на нашем примере.
Создадим клиентское программное обеспечение с помощью редактора VBA. Для этого необходимо открыть Microsoft Excel и
выбрать пункт меню Сервис → Макрос →
Редактор Visual Basic.
Пусть, имеется форма UserForm1, внешний вид которой представлен на рис. 8:
Рис. 8 – Форма работы с данными
Для кнопки CommandButton1 определено свойство: Caption = «Вывод результата на экран»;
Для кнопки CommandButton2 определено свойство: Caption = «Удалить»;
Для кнопки CommandButton3 определено свойство: Caption = «Добавить»;
Для кнопки CommandButton4 определено свойство: Caption = «Обновить».
Определены следующие поля ввода данных:
– Поле ввода номера телефона для
удаления TextBox1;
– Поле ввода фамилии для добавления TextBox2;
– Поле ввода улицы для добавления TextBox3;
– Поле ввода номера дома для добавления TextBox4;
– Поле ввода квартиры для добавления TextBox5;
– Поле ввода номера телефона для
добавления TextBox6.
Запрос на выборку, который возвращает
все записи исходной таблицы Abonent и размещает
их на рабочем листе Excel, будет иметь вид:
Private
Sub CommandButton1_Click()
CONNECT_STRING = "dsn=example;"
Cells.Select
Selection.ClearContents
Range("A1").Select
Set param1 =
CreateObject("adodb.recordset")
param1.activeconnection = CONNECT_STRING
param1.Open "SELECT Abonent.Surname,
Abonent.Street, Abonent.House, Abonent.Flat, Abonent.Telephone FROM
Abonent;"
i = 1
Do Until param1.EOF
Range("Лист1!A" & i) =
param1.fields("Surname")
Range("Лист1!B" & i) = param1.fields("Street")
Range("Лист1!C" & i) = param1.fields("House")
Range("Лист1!D" & i) = param1.fields("Flat")
Range("Лист1!E" & i) =
param1.fields("Telephone")
i = i + 1
param1.movenext
Loop
param1.Close
Set
param1 = Nothing
End Sub
Запрос на удаление, который удаляет все
записи таблицы, соответствующие введенному в поле TextBox1 формы UserForm1 номеру
телефона, имеет вид:
Private
Sub CommandButton2_Click()
CONNECT_STRING = "dsn=example;"
Set param1 =
CreateObject("adodb.recordset")
param1.activeconnection = CONNECT_STRING
param1.Open "DELETE Abonent.Surname,
Abonent.Street, Abonent.House, Abonent.Flat, Abonent.Telephone FROM Abonent
WHERE ((Abonent.Telephone)='" & UserForm1.TextBox1 &
"');"
Set param1 = Nothing
CommandButton1_Click
End
Sub
Программа, которая считывает введенные
пользователем в поля ввода TextBox2, TextBox3, TextBox4, TextBox5, TextBox6
значения и добавляет их в таблицу Abonent в
виде новой записи, имеет вид:
Private
Sub CommandButton3_Click()
CONNECT_STRING = "dsn=example;"
Set param1 =
CreateObject("adodb.recordset")
param1.activeconnection = CONNECT_STRING
param1.Open "INSERT INTO abonent
(Surname, Street, House, Flat, Telephone) values ('" &
UserForm1.TextBox2 & "', '" & UserForm1.TextBox3 &
"', " & CDbl(UserForm1.TextBox4) & ", " &
CDbl(UserForm1.TextBox5) & ", '" & UserForm1.TextBox6 &
"');"
Set param1 = Nothing
CommandButton1_Click
End
Sub
Программа, которая считывает введенные
пользователем в поля ввода TextBox2 и TextBox6 значения и обновляет номер телефона в соответствии с
фамилией, имеет вид:
Private
Sub CommandButton4_Click()
CONNECT_STRING = "dsn=example;"
Set param1 =
CreateObject("adodb.recordset")
param1.activeconnection = CONNECT_STRING
param1.Open "UPDATE Abonent SET
Abonent.Telephone = '" & UserForm1.TextBox6 & "' WHERE
((Abonent.Surname)='" & UserForm1.TextBox2 & "');"
Set param1 = Nothing
CommandButton1_Click
End
Sub
|