- •Содержание
- •Введение
- •Создание приложений с использованием технологии bde
- •1.1. Практическая работа № 1: создание базы данных
- •1.1.1. Создание таблиц dBase IV
- •1.1.2. Создание индексов
- •1.1.3. Создание таблиц Paradox 7
- •1.1.4. Задание свойств таблицы Paradox 7
- •Задание на практическую работу № 1
- •1.2. Практическая работа № 2: установление связей между таблицами в многотабличной базе данных
- •1.2.1. Создание алиаса
- •1.2.2. Связывание таблиц
- •Задание на практическую работу № 2
- •1.3. Практическая работа № 3: работа с полями и компонентом dbGrid
- •1.3.1. Использование объектов-полей
- •1.3.2. Обращение к значению поля
- •1.3.3. События объекта-поля
- •1 Рис. 10. Пример использования события OnCellClick .3.4. События сетки dbGrid
- •1.3.5. Создание объектов-столбцов в dbGrid
- •1.3.6. Формирование списка возможных значений столбца
- •Задание на практическую работу № 3:
- •1.4. Практическая работа № 4: работа с наборами данных (компонент Table)
- •1.4.1. Открытие и закрытие набора данных
- •1.4.2. Доступ к записям
- •1.4.3. Навигация по набору данных
- •1.4.4. Поиск записей в наборах данных
- •1.4.5. Реализация каскадных изменений
- •1.4.6. Пример выполнения лабораторной работы
- •Задание на практическую работу № 4
- •1.5. Практическая работа № 5: работа с отчетами
- •1.5.1. Создание простейшего отчета
- •1.5.2. Создание отчета для связанных наборов данных
- •1.5.3. Использование выражений (компонент qrExpr)
- •1.5.4. Группирование данных в отчете
- •Задание на практическую работу № 5:
- •1.6. Практическая работа № 6: sql-запросы (компонент Query)
- •Вариант 2. Поставки товаров
- •Вариант 3. Исполнители
- •Вариант 4. Картинная галерея
- •Вариант 5. Порт
- •Вариант 6. Студенты
- •Вариант 7. Строительная компания
- •Вариант 8. Автосалон
- •Вариант 9. Аэропорт
- •Вариант 10. Диагностический центр
- •Вариант 11. Реклама
- •Вариант 12. Быстрая пицца
- •Вариант 13. Клуб собаководов
- •Вариант 14. Грузоперевозки
- •Вариант 15. Аптека
- •Вариант 16. Автовокзал
- •Вариант 17. Общественная организация
- •Вариант 18. Учет потребления газа
Задание на практическую работу № 5:
-
Создать отчет для вывода информации из связанных таблиц.
-
Использовать компоненты QRExpr для отображения статистических данных (число записей в отчете, среднее значение или сумма по одному из полей и т.п.).
-
Выполнить группирование данных в отчете.
1.6. Практическая работа № 6: sql-запросы (компонент Query)
SQL — язык структурированных запросов — предназначен для создания и работы с реляционными базами данных. Он значительно сокращает объем работ, который пришлось бы выполнять при использовании универсальных языков программирования. Команды SQL могут оперировать с таблицами БД как с едиными объектами и обрабатывать любое количество извлеченной или производной информации как один блок.
Для выполнения данной лабораторной работы необходимо знание основ SQL (стандарт SQL92). Очень доступно и в то же время достаточно глубоко язык SQL представлен в [4].
В технологии BDE для работы с языком SQL предназначен компонент Query. Этот компонент представляет собой набор данных, который содержит результат выполнения SQL-запроса к таблицам БД. Первоначальная настройка компонента производится следующим образом:
-
установите свойство DatabaseName (выберите алиас вашей БД);
-
для того чтобы во время разработки приложения проверить работу Query, откройте редактор свойства SQL и напишите любой запрос SELECT. После этого установите свойство Active в True.
Для вывода результатов запроса в DBGrid свяжите компонент Query с DBGrid с помощью DataSource.
При организации интерфейса программы предусмотрите возможность просмотра кода выполненного SQL-запроса. Рекомендуется отобразить и словесную формулировку запроса, внутри которой можно поместить поля для ввода его параметров (рис. 25).
Код SQL-запросов в тексте программы лучше описать с помощью массива констант типа String. Это позволит обращаться к нему в любом месте программы, указывая лишь имя массива и номер запроса. Кроме того, вносить изменения в код будет намного удобнее.
Рис. 25. Пример организации интерфейса приложения
Перед выполнением запроса закройте Query и очистите свойство SQL:
Query1.Close;
Query1.SQL.Clear;
Затем присвойте свойству SQL строку SQL-запроса (или элемент массива запросов):
Query1.SQL.Add('select rec_name from records r
where exists(select * from albums al, artists a
where al.id_artist= a.id_artist and a.a_name=:ANAME
and al.id_album=r.id_album)’);
Двоеточие перед именем ANAME говорит о том, что это имя подстановочного параметра SQL-запроса. Использование подстановочных параметров в SQL-ориентированных СУБД существенно ускоряет выполнение однотипных запросов, отличающихся друг от друга только значениями параметров. Это особенно заметно, когда выполнение запроса происходит в цикле несколько раз подряд.
Значения параметров запроса установите следующим образом:
Query1.ParamByName('ANAME').AsString:=Edit5.Text;
Внимание: для выполнения запросов, которые не возвращают результатов (например, UPDATE или INSERT), используйте метод
SQLDataSet1.ExecSQL();
Вызвав этот метод, очистите свойство SQL и задайте любой SQL-запрос, возвращающий результат (т.е. SELECT). В противном случае открыть набор данных Query будет невозможно.
Теперь откройте Query (рекомендуется выполнять эту операцию в блоке try … except … end для обработки возможных исключительных ситуаций в случае, если запрос содержит ошибки):
Query1.Open;
Код выполненного SQL-запроса, т.е. значение свойства Query1.SQL.Text, выведите в отведенное для этого поле.
Задание на практическую работу № 6
Разработать приложение для выполнения SQL-запросов, описанных в индивидуальном задании. Все запросы должны быть параметризированными.
ПРИЛОЖЕНИЕ 1
ВАРИАНТЫ ЗАДАНИЙ К ПРАКТИЧЕСКИМ РАБОТАМ
Вариант 1. Прием заказов
клиенты (A) |
|
заказы (B) |
|
состав заказов (C) |
|
товары (D) |
Код клиента |
|
Код заказа |
|
Код заказа |
|
Код товара |
Название |
Код клиента |
Код товара |
Наименование |
|||
Адрес расч. счета |
Дата размещения |
Кол-во товара |
Цена товара |
|||
Город |
Дата исполнения |
Цена заказа |
|
|||
Страна |
|
Скидка |
Выполнить SQL-запросы для созданной БД:
-
Получить сведения о заказах и составе заказов для каждого клиента (вывод данных из нескольких таблиц).
-
Вывести даты размещения заказов, в которых количество товара более 100 и цена товара больше 200 (простой вложенный).
-
Определить какие заказы включают товар с заданным наименованием (коррелированный подзапрос)
-
Вывести название клиента, город, страну и наименование товара для заказов, сделанных за указанный месяц (со сложным условием).
-
Определить адреса расчетных счетов для клиентов, которые заказали товар в количестве более 300. (с EXISTS)
-
Вывести код заказа, где количество = 10, либо цена < 5000, либо то и другое (с UNION).
-
Увеличить цену товара в два раза для кода товара = 4 (UPDATE).
-
Определить суммарное количество каждого товара, заказанного за последний месяц (с использованием встроенных функций).