Обработка исключительных ситуаций. Последовательный доступ к данным с использованием технологии BDE, страница 25

Для выполнения активных запросов предназначен специальный компонент ADOCommand (страница ADO палитры компонентов). Поместим его в окно формы и установим значение ADOConnection1 для свойства Connection, которое обеспечит соединение с БД.

Поместим на страницу TabSheet4 командную кнопку Button3, для свойства Caption которой установим значение ОбновлениеЦены. Структура процедуры, реализующей любой активный запрос, при


ведена на рис. 57.

Рисунок 57Структура процедуры, реализующей активный запрос


Для получения текста SQL-запроса создадим в СУБД Access требуемый запрос, вид которого в режиме конструктора и в режиме SQL приведен на рис. 58.

Рисунок 58Активный запрос на обновление записей в режиме конструктора и в режиме SQL


После вставки полученного текста SQL-запроса в заготовку процедуры получим текст, приведенный на рис. 59.

Рисунок 59Процедура, реализующая активный запрос на обновление с параметром

Запустим проект на выполнение, перейдем на страницу TabSheet4 и щелкнем по командной кнопке Button3. В открывшемся диалоговом окне введем процентное значение увеличения цены.


Для проверки результата выполнения процедуры надо перейти на страницу TabSheet1 и с помощью навигатора обновить таблицу Товары. Пример выполнения процедуры приведен на рис. 60.

Рисунок 60Пример выполнения запроса на обновление

6.    Создание процедуры для выполнения запроса на удаление. Запрос на удаление относится к активным запросам. Создадим процедуру для удаления из таблиц БД записей с информацией о всех заказах клиента с заданным номером.

Поместим на страницу TabSheet4 командную кнопку Button4, для свойства Caption которой установим значение УдалениеЗаказовКлиента. Структура процедуры Button4Click приведена на рис. 57.


Для получения текста SQL-запроса создадим в СУБД Access требуемый запрос, вид которого в режиме конструктора и в режиме SQL приведен на рис. 61.

Рисунок 61Активный запрос на удаление записей в режиме конструктора и в режиме SQL

В результате выполнения этого запроса удаляются все записи о заказах указанного клиента из таблицы Заказы и соответствующие строки удаляемых заказов из таблицы СтрокиЗаказов.


После вставки полученного текста SQL-запроса в заготовку процедуры получим текст, приведенный на рис. 62.

Рисунок 62Процедура, реализующая активный запрос на удаление с параметром

Для проверки результата выполнения процедуры надо перейти на страницу TabSheet1 и с помощью навигатора обновить таблицу Заказы. При этом в таблице СтрокиЗаказов отображаются все записи, существовавшие до удаления. Чтобы обновить содержимое таблицы СтрокиЗаказов, надо прекратить выполнение проекта и запустить его заново.


Обновление отображения таблиц Заказы и СтрокиЗаказов можно осуществить добавлением в процедуру операторов обновления, как это показано на рис. 63.

Рисунок 63Процедура, реализующая активный запрос на удаление с параметром с обновлением таблиц

7.    Создание процедуры для выполнения запроса на выборку, основанного на другом запросе. Создадим процедуру для получения следующей информации о каждом товаре: исходное количество, заказано, стоимость заказов, остаток на складе.


Создание такого запроса в СУБД Access произведем в два этапа. Сначала создадим активный запрос с группировкой для создания таблицы Вспомогательная, в которой для каждого товара будет получено общее количество и общая стоимость заказанных товаров (см. рис. 64 и 65).

Рисунок 64Запрос на создание таблицы Вспомогательная в режиме конструктора и в режиме SQL


Рисунок 65Таблица Вспомогательная после создания