
- •О. Б. Малков работа с базами данных в среде delphi Учебное пособие для студентов заочной формы обучения
- •Содержание
- •1. Реализация работы с базами данных в среде delphi
- •1.1. Базы данных и системы управления базами данных
- •1.2. Технология доступа к данным bde
- •1.3. Компоненты приложений, работающих с базами данных
- •2. Демонстрационная база данных
- •2.1. Логическая модель данных предметной области
- •2.2. Физическая модель данных предметной области
- •3. Создание базы данных
- •3.1. Создание псевдонима
- •3.2. Создание структуры таблиц базы данных
- •3.3. Свойства таблиц Paradox
- •3.4. Заполнение таблиц базы данных
- •4. МодулЬ данных
- •4.1. Создание модуля данных
- •4.2. Связывание наборов данных
- •4.3. Создание объектов-полей
- •4.4. Проектирование и анализ структуры базы данных
- •4.5. Создание объектов-столбцов
- •4.6. Реализация бизнес-правил
- •5. Создание приложения, работающего с базой данных
- •5.1. Выбор типа пользовательского интерфейса
- •5.2. Создание главной формы
- •5.3. Создание рабочих форм
- •5.4. Создание форм ввода новых данных
- •6. Создание запросов
- •6.1. Компонент Query
- •6.2. Создание sql-запросов
- •6.2.1. Простая выборка данных
- •6.2.2. Выборка из связанных таблиц
- •6.2.3. Сортировка записей
- •6.2.4. Сложные критерии отбора
- •6.2.5. Псевдонимы таблиц и комментарии
- •6.2.6. Агрегатные функции и группировка записей
- •6.2.7. Создание и удаление таблиц и индексов
- •6.2.8. Вставка, удаление и редактирование записей
- •Insert into Имя_таблицы (Список_полей
- •Values (Список_значений)
- •6.3. Построение запроса в демонстрационной базе данных
- •7. Создание отчетов
- •7.1. Основы технологии Rave Reports
- •7.2. Визуальная среда Rave Designer
- •7.3. Составляющие проекта отчета
- •7.3.1. Библиотека отчетов
- •7.3.2. Каталог глобальных страниц
- •7.3.3. Каталог объектов данных
- •7.4. Типы отчетов
- •7.4.1. Отчет с единственной таблицей или запросом
- •7.4.2. Отчет главный-детальный
- •7.4.3. Группирующий отчет
- •7.5. Пример создания отчетов в приложении Sale
- •7.6. Экспорт отчета в файл
- •8. Создание СправочнОй системЫ
- •8.1. Создание файла документа справочной информации
- •8.2. Создание проекта справочной системы
- •8.3. Доступ к справочной информации
- •9. Создание установочного диска
- •9.1. Программа InstallShield Express
- •9.2. Создание проекта инсталляционной программы
- •Библиографический список
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.