Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_проект_ИС.doc
Скачиваний:
18
Добавлен:
11.08.2019
Размер:
3.38 Mб
Скачать

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

В реальной работе пользователя интересует подробная информация о содержимом БД. Например, может понадобиться список выписанных определенному заказчику в течение заданного периода времени ТТН, по которым еще не получены ПТР. Отобрать и показать на экране этот набор записей можно, написав программный код. Однако такой код может быть неэффективным, а работать с итоговым набором записей будет неудобно. Было бы удобнее, чтобы итоговый набор записей представлялся в программе как обычная таблица.

6.1. Компонент Query

Наиболее гибко, визуально или программно, определить условия отбора записей из нескольких таблиц позволяет компонент Query (панель BDE). Работать с набором отобранных записей можно обычным способом, как с компонентом Table.

Особенностью компонента Query является использование специального языка для работы с реляционными БД – SQL (Structured Query Language).

Запрос к БД в среде Delphi может быть реализован двумя способами:

  • записан непосредственно на языке SQL;

  • создан с помощью визуального построителя запросов SQL Builder.

В первом случае программист сам составляет SQL-запрос, который помещается в предназначенное для этого свойство Query.SQL. После вызова метода Open или ExecSQL компонента Query запрос передается BDE. BDE имеет встроенный интерпретатор SQL, позволяющий выполнять описанные в запросе действия. Операторы SQL могут выполняться непосредственно из программного кода. Эти операторы можно также выполнять из утилиты SQL Explorer, которая, как и утилита Database Desktop, входит в инструментарий работы с БД в Delphi.

Если разработчик не знает языка SQL, он может воспользоваться визуальным построителем запросов SQL Builder, который на основании действий пользователя автоматически сгенерирует текст на языке SQL. Подробное описание работы с SQL Builder можно найти, например, в работе [2].

Визуальный построитель запросов SQL Builder на основании действий пользователя автоматически генерирует текст на языке SQL. И хотя в этом случае от разработчика знание языка SQL формально не требуется, предпочтительнее первый способ создания запросов. Вообще обходиться без знания языка SQL при создании приложений, работающих с БД, весьма неудобно, поскольку:

  • целый ряд операций проще и эффективнее выполнять с помощью простых операторов SQL, чем посредством обращения к классам системы Delphi;

  • часто требуется вручную подправить текст запроса, сгенерированный автоматически (например, с помощью SQL Builder);

  • практически в любой СУБД имеется возможность выполнения хранимых процедур, написанных на языке SQL.

Если запрос требует только получения сведений из БД (SELECT), сформированные данные помещаются в локальную таблицу в виде временного файла и компонент Query становится владельцем этой таблицы. Данные из временной таблицы через компонент-посредник DataSource передаются визуальным компонентам и отображаются в них точно так же, как если бы они были получены компонентом Table. Однако в отличие от Table пользователь не может их изменять, так как они представляют собой лишь копию реальных данных.

Для изменения хранящейся в БД информации формируются специальные запросы (INSERT, UPDATE, DELETE). В этом случае BDE не формирует новые и не использует ранее созданные временные таблицы, но лишь интерпретирует запрос и уведомляет программу о том, насколько успешно прошло его выполнение. Таким образом, необходимость программного изменения запроса в случае модификации НД является другим характерным отличием компонентов Query и Table.