Обработка исключительных ситуаций. Последовательный доступ к данным с использованием технологии 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 –Таблица Вспомогательная после создания