Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi_Прак_2010.DOC
Скачиваний:
33
Добавлен:
10.11.2018
Размер:
2.31 Mб
Скачать

5.4. Создание отчета на основе параметрического запроса

Для создания отчета на основе параметрического запроса поступают следующим образом.

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

Пусть требуется выдать список студентов конкретной группы, шифр которой выбирается из списка. Тогда форма для реализации параметрического запроса и отчета на основе этого запроса может иметь вид, представленный на рис. 5.3.

Рис. 5.3. Форма для параметрического отчета в режиме

редактирования

На данную форму помещены следующие компоненты:

компонент Table1, использован для связи с таблицей Группы (Group) и формирования поля со списком шифров групп; для него настроены свойства: DataBaseName – имя базы данных (псевдоним), TableName – имя таблицы, Active – true);

компонент DataSourse1, который связан с Table1;

компонент Label1 (надпись «Выберите шифр группы»);

компонент ComboBox1 (поле с раскрывающимся списком);

компонент Button1 (кнопка Вывести отчет).

Для формы в целом в событии OnActivate записывают следующую процедуру:

Table1.First;

While not Table1.Eof do

begin

ComboBox1.Items.Add(Table1.fieldByName('Sh_gr').Value);

Table1.Next;

end;

Данная процедура для компонента ComboBox1 создает список шифров групп, который выбирается из компонента Table1, связанного с таблицей Group.

2. Подготовка параметрического запроса. Расположить на форме компоненты Query (панель BDE), DataSource (панель Data Access).

Установить для Query в свойстве DataBaseName значение псевдонима, для DataSource – в свойстве DataSet значение Query1.

Для Query щелкнуть в свойствах в строке SQL по кнопке …, в открывшемся окне набрать SQL-запрос.

Параметрами в этом запросе являются имена, перед которыми стоят двоеточия «:».В данном запросе имя параметра совпадает с именем поля (запрос выбирает записи по шифру группы (поле Sh_gr)).

Select *

from Stud

where Sh_gr = :Sh_gr;

Закрыть окно, щелкнув по кнопке ОК.

В Инспекторе Объектов выбрать свойство Params и щелкнуть по кнопке … в строке этого свойства. В появившемся окне будут показаны имена всех параметров, введенных в тексте параметрического SQL-запроса.

Каждому параметру из списка необходимо поставить в соответствие определенный тип и стартовое значение. Стартовое значение задавать необязательно.

В строке ParamType для поля Sh_gr задать ptInputOutput, раскрыть список Value и в строке Type задать OleStr (String) (текстовое поле).

Активировать запрос (в свойстве Active выставить true).

3. Создание компонентов для связи с отчетом. После создания запроса следует поместить на форму компонент RvQueryConnections из закладки Rave - . В его свойстве Query необходимо указать имя запроса – Query1.

Затем следует поместить на форму компонент RvProject из закладки Rave (). В его свойстве ProjectFile, когда будет создан макет отчета в Rave Designer, следует указать имя файла проекта отчета и путь к нему.

4. Создать макет отчета в Rave Designer так, как это было описано в предыдущем пункте.

Возможный вид макета отчета представлен на рис. 5.4.

Рис. 5.4. Макет отчета в Rave Designer

Существуют некоторые особенности при формировании макета. Пока не выбран в форме параметр поиска (шифр группы), запрос не осуществляет выбор данных, т.е. источник данных пуст. Это приводит к тому, что при просмотре отчета в режиме Rave Designer не видны данные (отчет пуст).

Вторая особенность заключается в том, что при помещении компонентов полей (компонент DataText из вкладки Report) в полосу DataBand1 в свойстве DataView для каждого поля пусто. Поэтому необходимо в свойстве DataView для каждого поля вручную набирать DataView1, тогда в свойстве DataField появляется список полей, из которых можно выбрать нужное поле. При этом произойдет связь компонента DataText с конкретным полем из запроса (с полем Num_z, Fam и т.д.).

Отчет в режиме просмотра в Rave Designer будет выглядеть, как на рис. 5.5.

Рис. 5.5. Отчет в Rave Designer в режиме просмотра

Как видно из рисунка отчет пуст.

После создания макета отчета он должен быть сохранен с помощью команды меню File/Save, файлу макета отчета задают имя (например Project1.rav или Project2.rav, или какое-то другое).

5. Реализация вызова отчета из формы. Для вызова отчета необходимо кнопку Вывести отчет связать со следующей процедурой.

With Query1 do

begin

Close;

ParamByName('Sh_gr').Value := ComboBox1.Text;

Open;

end;

RvProject1.Execute;

В этой процедуре программа сначала закрывает Query1, затем присваивает значение выбранного параметра поиска из компонента ComboBox1 и повторно открывает запрос.

Команда RvProject1.Execute генерирует отчет на основе макета отчета, сохраненного в файле Project1.rav (или каком-то другом).

В дальнейшем необходимо привязать пункт главного меню, связанного с данным отчетом, к вызову формы. А уже из формы после выбора параметра поиска будет вызываться сам отчет.

Вид формы с выбранным параметром поиска представлен на рис. 5.6.

Рис. 5.6. Форма с выбранным параметром поиска

Вид отчета на основе параметрического запроса, когда параметр поиска выбирается из списка, представлен на рис. 5.7.

Рис. 5.7. Отчет в режиме предварительного просмотра

6. ВАРИАНТЫ ЗАДАНИЙ

Вариант № 1

Разработка приложения для автоматизированного учета продажи бензина

Разработать приложение для работы с базой данных, содержащей информацию об автозаправочной станции. Приложение осуществляет учет наличия бензина на станции, учет продажи бензина, реализацию запросов к базе и формирование оперативных отчетов. Работа с приложением осуществляется через меню, которое должно содержать пункты: формы, запросы, отчеты, выход.

1. Создать базу данных Автозаправочная станция.

2. Создать следующие таблицы и установить связи между ними:

Бензин (Марка, Количество на бензоколонке, Цена за л);

Сотрудники (Табельный номер, Фамилия, Имя, Отчество, Должность, Оклад, Надбавка, Дата поступления на работу);

Продажа (Номер чека, Марка, Дата продажи, Количество, Табельный номер).

Ключевые поля в таблицах подчеркнуты.

Связать таблицы Бензин и Продажа по полю Марка. Связать таблицы Сотрудники и Продажа по полю Табельный номер.

3. Создать формы для ввода и редактирования данных:

а) форма Бензин;

б) форма Сотрудники. Поле Должность организовать как поле с фиксированным списком (возможные значения - оператор, ст. оператор, кассир, менеджер), поле Надбавка организовать как поле с фиксированным списком, имеющим значения 0, 10, 20; создать второй вариант формы Сотрудники, где ввод и редактирование данных осуществить через отдельные компоненты;

в) составная форма Бензин- Продажа. Поле Табельный номер организовать как поле с раскрывающимся списком, список формируется на основе таблицы Сотрудники.

В каждой форме должны быть названия столбцов на русском языке, заголовок формы, панель кнопок навигации и кнопка выхода из формы.

С помощью созданных форм ввести данные в таблицы (5-20 записей).

4. В форме Сотрудники реализовать сортировку данных по должности, окладу, табельному номеру.

В форме Сотрудники реализовать фильтрацию по должности, окладу, фамилии, дате поступления на работу.

В форме Бензин-Продажа вычислить суммарную стоимость проданного бензина, максимальную и минимальную стоимости проданного бензина.

5. Создать запросы (в запросах изменить названия столбцов на русские, добавить заголовки запросов и кнопки выхода):

- создать запрос на выборку всех полей из таблицы Продажа для конкретной даты продажи;

- создать запрос на выборку всех полей из таблицы Продажа для марки Аи-92;

- создать запрос о продаже бензина по таблицам Продажа (выбрать все поля), поле Цена за л из таблицы Бензин, добавить в запрос вычисляемое поле – стоимость проданного бензина;

- создать запрос по таблице Сотрудники (выбрать все поля) и добавить вычисляемое поле Общий оклад (Оклад * (100 + Надбавка)/ 100). В запрос включить все поля из таблицы Сотрудники;

- создать запрос с групповыми вычислениями по таблице Продажа, в запрос включить поля: Марка, Количество. По полю Количество провести суммирование.

- создать параметрические запросы:

а) запрос о наличии бензина (таблица Бензин), марка бензина выбирается из списка;

б) сводка о продаже за день (таблица Продажа), дата продажи выбирается из списка;

в) запрос о бензине, количество которого меньше запрашиваемого числа (таблица Бензин). В выборке отразить все поля из данной таблицы.

6. Создать отчеты.

Создать отчет на основе таблицы Бензин, марка бензина выбирается из списка, для данной марки рассчитать стоимость бензина на бензоколонке.

НАЛИЧИЕ БЕНЗИНА

Марка бензина

Количество на бензоколонке

Цена

бензина

Стоимость бензина

Создать отчет, в котором для каждой записи (чека) рассчитать стоимость проданного бензина. Записи сгруппировать по марке бензина. Для каждой марки указать суммарную стоимость проданного бензина, рассчитать общую стоимость проданного бензина по всей ведомости.

ПРОДАЖА БЕНЗИНА

Номер чека

Количество

Табельный номер

оператора

Цена за л

Стоимость проданного бензина

Марка бензина

Суммарная стоимость

Марка бензина

Суммарная стоимость

Общий итог

Создать отчет на основе таблицы Сотрудники, рассчитать общий оклад (оклад * (100+надбавка)/100). Просуммировать общий оклад по всей ведомости.

СОТРУДНИКИ

Табель-ный номер

ФИО

Оклад

Надбавка

Общий оклад

Итого по отчету

Вариант № 2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]