- •1.1. Создание базы данных в Access 2003
- •1.2. Создание таблицы в режиме Конструктор
- •1.3. Редактирование структуры таблицы
- •1.4. Создание и редактирование схемы данных
- •1.5. Создание базы данных, таблиц и схемы данных в Access 2007
- •1.8. Защита пункта меню паролем
- •1.9. Редактирование внешнего вида формы
- •2.1. Создание формы для работы с одной таблицей
- •2.2. Ввод данных в таблицу с помощью созданной формы
- •2.3. Создание формы для работы с двумя таблицами
- •2.4. Редактирование формы
- •2.5. Ввод данных через отдельные компоненты
- •2.6. Редактирование данных через компоненты
- •3. Реализация сортировки, вычислений и фильтрации данных
- •3.1. Реализация сортировки
- •3.2. Реализация вычислений
- •3.3. Реализация фильтрации записей
- •4.3. Создание запроса с групповыми вычислениями
- •4.4. Создание параметрического запроса
- •4.5. Параметрический запрос для поиска поля, выбранного из списка
- •4.6. Параметрический запрос для поиска даты, выбранной из списка или введенной в поле ввода
- •5.1. Создание отчета в Delphi
- •5.2. Создание отчета с группировкой записей по определенному полю
- •Список книг
- •5.3. Создание отчета на основе параметрического запроса
- •Библиографический список
- •Оглавление
5.3. Создание отчета на основе параметрического запроса
Для создания отчета на основе параметрического запроса поступают следующим образом.
1. Подготовка формы с полем, содержащим список. Вызов отчета целесообразно осуществить не с главного окна, а из специальной формы. В этой форме должен быть создан список для выбора параметра поиска и кнопка вызова отчета.
Пусть требуется выдать список студентов конкретной группы, шифр которой выбирается из списка. Тогда форма для реализации параметрического запроса и отчета на основе этого запроса может иметь вид, представленный на рис. 5.3.
Рис. 5.3. Форма для параметрического отчета в режиме
редактирования
В тексте программы для данной формы в разделе implementation необходимо выставить uses unit2 (если модуль данных был создан вторым) для доступа к компонентам модуля данных.
На данную форму помещены следующие компоненты:
компонент Label1 (надпись «Выберите шифр группы»);
компонент ComboBox1 (поле с раскрывающимся списком);
компонент Button1 (кнопка Вывести отчет).
Для формы в целом в событии OnActivate записывают следующую процедуру:
имя_модуля_данных.ADOTable1.First;
While not имя_модуля_данных.ADOTable1.Eof do
begin
ComboBox1.Items.Add(имя_модуля_данных.ADOTable1.fieldByName('Sh_gr').Value);
имя_модуля_данных.ADOTable1.Next;
end;
Данная процедура для компонента ComboBox1 создает список шифров групп, который выбирается из компонента имя_модуля_данных.ADOTable1, связанного с таблицей Group.
2. Подготовка параметрического запроса.
Расположить на модуле данных компонент ADOQuery (панель ADO). Для данного компонента настроить следующие свойства: в свойстве Connection выбрать ADOConnection1; в свойстве SQL щелкнуть по кнопке … и в открывшемся окне набрать параметрический запрос на языке SQL.
Select S.*
from Stud S
where Sh_gr = :Sh_gr;
В данном запросе имя параметра совпадает с именем поля (запрос выбирает записи по шифру группы (поле Sh_gr)).
Закрыть окно, щелкнув по кнопке ОК.
В Инспекторе Объектов выбрать свойство Parameters и щелкнуть по кнопке … в строке этого свойства. В появившемся окне будут показаны имена всех параметров, введенных в тексте параметрического SQL-запроса. Каждому параметру из списка необходимо поставить в соответствие определенный тип и стартовое значение. Стартовое значение задавать необязательно. В строке ParamType задают ptInputOutput, раскрывают список Value и в строке Type задают тип данных (текстовый, числовой или дата).
Для активации запроса в свойстве Active выбрать true.
Во вкладке Events модуля данных для события onCreate в процедуре обработки события дописать:
ADOQuery1.Active := true;
Номер компонента может быть отличным от единицы.
3. Создание компонентов для связи с отчетом. После создания запроса следует поместить на форму компонент RvDataSetConnections из закладки Rave - . В его свойствеDataSet необходимо указать имя запроса – имя_модуля_данных.ADOQuery1.
Затем следует поместить на форму компонент 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 имя_модуля_данных.ADOQuery1 do
begin
Close;
Parameters.ParamByName('Sh_gr').Value:= ComboBox1.Items[ComboBox1.ItemIndex];
Open;
end;
RvProject1.Execute;
В этой процедуре программа сначала закрывает имя_модуля_данных.ADOQuery1, затем присваивает значение выбранного параметра поиска из компонента ComboBox1 и повторно открывает запрос.
Команда RvProject1.Execute генерирует отчет на основе макета отчета, сохраненного в файле Project1.rav (или каком-то другом).
Если список содержит даты, то используют функцию StrToDate для преобразования строки в дату. Для преобразования строки в целое число используют функцию StrToInt. Для преобразования строки в вещественное число используют функцию StrToFloat.
Для формирования автоматического поиска места нахождения отчета (файл отчета должен быть сохранен в папке вместе с проектом и файлом project1) необходимо для формы, где вызывается отчет, на событии формы onShow создать следующую процедуру:
Var
Path : string;
Begin
Path := ExtractFilePath(Application.ExeName);
RvProject1.ProjectFile := Path + ‘Project1.rav’;
End;
В данном тексте Project1.rav – имя файла отчета.
В дальнейшем необходимо привязать пункт главного меню, связанного с данным отчетом, к вызову формы. А уже из формы после выбора параметра поиска будет вызываться сам отчет.
Вид формы с выбранным параметром поиска представлен на рис. 5.6.
Рис. 5.6. Форма с выбранным параметром поиска
Вид отчета на основе параметрического запроса, когда параметр поиска выбирается из списка, представлен на рис. 5.7.
Рис. 5.7. Отчет в режиме предварительного просмотра
ЗАКЛЮЧЕНИЕ
Информационные системы находят широкое применение во всех сферах деятельности человека. Любая информационная система состоит из двух основных элементов: базы данных и приложения для работы с ней.
Данное пособие содержит теоретический и практический материал, позволяющий освоить технологии разработки приложений для работы с базами данных в среде программирования Delphi.
Пособие охватывает широкий круг вопросов, связанных с обработкой данных средствами Delphi:
реализация доступа к локальным и сетевым базам данных;
создание и редактирование таблиц и схем баз данных;
создание и редактирование форм для ввода данных; дизайн форм;
реализация сортировки, вычислений и фильтрации;
создание и редактирование различных запросов на выборку данных, вычислительных запросов, запросов на выполнение действий;
создание, редактирование и дизайн отчетов.
Полученные навыки создания баз данных и разработки приложений для работы с ними позволят студентам специальности «Вычислительные машины, комплексы, системы и сети» квалифицированно создавать и эксплуатировать приложения для обработки данных в любых предметных областях.