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

Проверим работу запроса в СУБД Access, а затем получим текст этого запроса на языке SQL. Процесс перехода в режим SQL показан на рис. 49.


Рисунок 49 – Запрос на выборку с параметром в режиме SQL

Скопируем текст запроса в правую часть оператора присваивания переменной s процедуры, приведенной на рис. 47. При этом в SQL-запросе выражение, заключенное в квадратные скобки, надо заменить переменной s1 с соблюдением правил записи строк в языке Паскаль. Длинную строку заменим конкатенацией нескольких строк с использованием оператора «+». Обратите внимание, что служебные слова языка SQL выделяются пробелами. Окончательный текст процедуры реализации искомого запроса приведен на рис. 50.


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

Запустим проект на выполнение и проверим работу процедуры. Пример ее выполнения приведен на рис. 51.


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


Аналогичным образом создаются процедуры, реализующие другие запросы на выборку. Для каждого запроса надо помещать на страницу TabSheet2 новую командную кнопку. И создавать процедуру, структура которой приведена на рис. 47.

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

Поместим на страницу TabSheet3 компонент ADOQuery2 и установим значение ADOConnection1 для свойства Connection.

Перенесем на форму и настроим компонент DataSource6, для свойства DataSet которого установим значение ADOQuery2.

Для представления результата выполнения запроса в виде таблицы поместим на страницу TabSheet3 компонент DBGrid6. Установим значение DataSource6 свойства DataSource этого компонента.

Поместим на страницу TabSheet3 компонент DBNavigator6, который предназначен для перемещения по записям набора данных. Связь с набором данных устанавливается значением DataSource6 свойства DataSource этого компонента.

Поместим на страницу TabSheet3 командную кнопку Button2, для свойства Caption которой установим значение Заказы-Клиенты-Стоимость. Структура процедуры Button2Click аналогична той, что приведена на рис. 47. Отличие состоит в том, что здесь не нужна строка s1, т. к. в рассматриваемом запросе отсутствует параметр. Структура процедуры Button2Click приведена на рис. 52.


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


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

Рисунок 53 – Перекрестный запрос в режиме конструктора

Этот же запрос в режиме SQL приведен на рис. 54.


Рисунок 54 – Перекрестный запрос в режиме SQL

Скопируем текст запроса в правую часть оператора присваивания переменной s процедуры, приведенной на рис. 52. Длинную строку заменим конкатенацией нескольких строк с использованием оператора «+». Окончательный текст процедуры реализации перекрестного


запроса приведен на рис. 55.

Рисунок 55 – Текст процедуры, реализующей перекрестный запрос


Результат выполнения созданной процедуры приведен на рис. 56.

Рисунок 56 – Результат выполнения процедуры для перекрестного запроса

5.    Создание процедуры для выполнения запроса на обновление. Запрос на обновление относится к активным запросам, т. е. запросам, изменяющим таблицы БД. Создадим процедуру, реализующую запрос, увеличивающий все цены на заданную процентную величину.