- •1.2. Установка рабочей директории
- •1.3. Создание таблиц базы данных
- •1.4. Установление связей между таблицами (определение ссылочной целостности)
- •1.6. Запуск сервера Firebird
- •1.7. Создание базы данных Firebird
- •1.8. Подключение базы данных Firebird
- •1.9. Создание и редактирование таблиц Firebird
- •1.10. Связи между таблицами Firebird
- •1.11. Перенос базы данных на другой компьютер
- •2.1. Создание формы для работы с одной таблицей
- •2.2. Ввод данных в таблицу с помощью созданной формы
- •2.3. Создание формы для работы с двумя таблицами
- •2.4. Редактирование формы
- •2.5. Ввод данных через отдельные компоненты
- •2.6. Редактирование данных через компоненты
- •3. Реализация сортировки, вычислений и фильтрациИ данных
- •3.1. Реализация сортировки
- •3.1. Вид формы для сортировки
- •1 Вариант – с использованием имени индекса:
- •2 Вариант - с использованием имени поля, по которому создан индекс:
- •3.2. Реализация вычислений
- •3.3. Реализация фильтрации записей
- •4.3. Создание запроса с групповыми вычислениями
- •4.4. Создание параметрического запроса
- •4.5. Параметрический запрос для поиска поля, выбранного из списка
- •5.1. Создание отчета в Delphi
- •5.2. Создание отчета на основе одной таблицы
- •5.3. Создание отчета с группировкой записей по определенному полю
- •Список книг
- •5.4. Создание отчета на основе параметрического запроса
- •Разработка автоматизированной системы продажи железнодорожных билетов
- •Справка о проданных билетах
- •Справка об остановках маршрута
- •Справка о продаже билетов
- •Справка о расписании групп
- •Списки групп
- •Тренеры
- •Списки больных, стоящих на учете
- •Список сотрудников
- •Список больных
- •Разработка приложения «Больница»
- •Медицинский персонал
- •Процедуры
- •Список больных
- •Разработка автоматизированной системы продажи авиационных билетов
- •Продажа билета
- •Список самолетов
- •Список автомобилей
- •Список водителей
- •Транзисторы
- •Справка о продаже транзисторов
- •Заказы на ремонт
- •Выпрямительные диоды
- •Закупка приборов
- •Список устройств
- •Расходная ведомость
- •Библиографический список
- •Оглавление
4.3. Создание запроса с групповыми вычислениями
Создание запроса с групповыми вычислениями осуществляется следующим образом.
1. Создать или выбрать форму для реализации запроса (создание - кнопка New Form на панели инструментов, 4-я слева на панели инструментов, выбор – кнопка Veiw Form, 2-я слева на панели инструментов). В свойствах формы в поле Name можно задать имя, например, Query3Form.
2. Расположить на форме компоненты Query (панель BDE), DataSource (панель Data Access), DBGrid (панель Data Controls).
3. Установить для Query в свойстве DataBaseName значение псевдонима, для DataSource – в свойстве DataSet значение Query1, для DBGrid – в свойстве DataSource значение DataSource1.
4. Для Query щелкнуть в свойствах в строке SQL по кнопке …, в открывшемся окне набрать SQL-запрос.
Пример запроса, который выбирает поля Tovar и Zena из таблицы Tovar и суммирует поле Kolvo из таблицы Prihod (сумма по полю количество (Kolvo) получает имя Sum_Kolvo). В запросе записи группируются по полям Tovar, Zena (конструкция GROUP BY T.Tovar, T.Zena). Конструкция WHERE содержит условие связывания двух таблиц (таблицы связаны по полю Tovar) .
SELECT T.Tovar, T.Zena, SUM(P.Kolvo) As Sum_Kolvo
FROM Tovary T, Prihod P
WHERE T.Tovar = P.Tovar
GROUP BY T.Tovar, T.Zena
Щелкнуть по кнопке ОК.
5. Чтобы выполнить запрос, необходимо установить для Query в свойстве Active значение True.
6. Сохранить произведенные изменения (File, Save All).
7. Проверить вызов запроса и его работу (F9), вернуться в редактор (Ctrl+F2).
4.4. Создание параметрического запроса
Создание параметрического запроса осуществляется следующим образом.
1. Создать или выбрать форму для реализации запроса (создание - кнопка New Form на панели инструментов, 4-я слева на панели инструментов, выбор – кнопка Veiw Form, 2-я слева на панели инструментов). В свойствах формы в поле Name можно задать имя, например, Query4Form.
2. Расположить на форме компоненты Query (панель BDE), DataSource (панель Data Access), DBGrid (панель Data Controls).
3. Установить для Query в свойстве DataBaseName значение псевдонима, для DataSource – в свойстве DataSet значение Query1, для DBGrid – в свойстве DataSource значение DataSource1.
4. Для Query щелкнуть в свойствах в строке SQL по кнопке …, в открывшемся окне набрать SQL-запрос. Параметрами в этом запросе являются имена, перед которыми стоят двоеточия «:». В параметрических запросах параметры заменяют значения, которые могут изменяться в процессе выполнения. Имена параметров произвольны и могут не совпадать с именами полей, которым они ставятся в соответствие. В данном запросе имена параметров совпадают с именами полей (запрос выбирает записи по заданным названию товара Tovar и дате прихода DatPrih).
SELECT * FROM Prihod
WHERE Tovar = :Tovar AND DatPrih = :DatPrih
Закрыть окно, щелкнув по кнопке ОК.
5. В Инспекторе Объектов выбрать свойство Params и щелкнуть по кнопке … в строке этого свойства. В появившемся окне будут показаны имена всех параметров, введенных в тексте параметрического SQL-запроса. Каждому параметру из списка необходимо поставить в соответствие определенный тип и стартовое значение. Стартовое значение задавать необязательно. В строке ParamType для поля Tovar задать ptInputOutput, раскрыть список Value и в строке Type задать OleStr (String) (текстовое поле), в строке ParamType для поля DatPrih задать ptInputOutput и в строке Type задать Date (поле типа дата).
6. Всякий раз, когда необходимо изменить значения параметров запроса, программа должна закрыть Query, присвоить значения параметрам и повторно открыть его. Это реализует процедура, которая запускается при щелчке по соответствующей кнопке. Создадим панель, на ней два окна для ввода товара и даты и кнопку вызова процедуры, которая будет запускать параметрический запрос.
7. Поместить в форму панель (компонента Panel на панели Standard). Сделать такой размер панели, чтобы на ней поместились две надписи, два окна и кнопка. Для панели в свойстве Caption стереть название.
8. Создать на панели две надписи (кнопка Label на панели Standard). Для надписей в свойстве Caption задать названия полей (например, Товар и Дата прихода).
9. Создать на панели два текстовых поля (кнопка Edit на панели Standard). Для полей в свойстве Text стереть названия.
10. Создать на панели кнопку (кнопка Button на панели Standard). В свойстве Caption задать Выдать.
11. Двойной щелчок по кнопке открывает окно процедуры обработки события. Создать следующий обработчик события OnClick кнопки Выдать.
procedure …
var
Tmp_DatPrih : TdateTime;
Begin
Try
Tmp_DatPrih := StrToDate(Edit2.Text);
With Query1 do
Begin
Close;
ParamByName(‘DatPrih’).Value := Tmp_DatPrih;
ParamByName(‘Tovar’).Value :=Edit1.Text;
Open;
End; //with
Except
ShowMessage(‘Неверная дата’);
Edit2.SetFocus;
Exit;
End; //try
End;
Щелкнуть по кнопке ОК.
В данной процедуре вначале производится проверка введенного пользователем значения даты на соответствие формату даты, а затем присвоение значений параметрам и открытие набора данных.
12. Сохранить произведенные изменения и проверить работу запроса. В текстовые поля ввести значения (например, название товара и дату прихода). Для выполнения запроса щелкнуть по кнопке Выдать.