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