- •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. Создание отчета на основе параметрического запроса
- •Библиографический список
- •Оглавление
4.6. Параметрический запрос для поиска даты, выбранной из списка или введенной в поле ввода
Вид формы для реализации параметрического запроса по дате следующий (реализация трех вариантов задания даты).
Рис. 4.3. Параметрический запрос по дате
Порядок выполнения запроса следующий:
- на модуле данных поставить компонент ADOQuery; в свойстве Connection выставить ADOConnection1; в свойстве SQL набрать запрос (например: Select S.* From Student S Where Dat_r = :Dat_r); в свойстве Parameters, Value, Type выбрать Date, в свойстве Active установить true;
- на форме создать поле для ввода данных (компонент Edit), или поставить календарь (компонент DateTimePicker из вкладки Win32), или поле со списком (компонент Combobox);
- на форму поставить компонент DataSource и в свойстве DataSet выбрать запрос, созданный на модуле данных;
- на форму поставить компонент DBGrid для просмотра результатов выполнения запроса;
- на форму поставить кнопку (компонент Button) для запуска запроса;
- для кнопки создать процедуру реализации параметрического запроса.
Вариант 1 – ввод даты для поиска в поле ввода.
На кнопке «Выполнить запрос первый раз» создают следующую процедуру.
With DM.ADOQuery2 do
begin
Close;
Parameters.ParamByName('Dat_r').Value := StrToDate(Edit1.Text);
Open;
end;
Функция StrToDate преобразует введенный текст в дату.
Вариант 2 – выбор даты из календаря.
На кнопке «Выполнить запрос второй раз» создают следующую процедуру.
DM.ADOQuery2.Close;
DM.ADOQuery2.Parameters.ParamByName('Dat_r').Value := DateTimePicker1.DateTime;
DM.ADOQuery2.Open;
Вариант 3 – выбор даты из списка.
Формирование на форме списка из поля Dat_r (дата рождения) таблицы ADOTable2 (таблица Студенты), расположенной на модуле данных DM. Формирование списка дат осуществляют на событии OnShow формы.
//Очистка старого содержания списка
ComboBox1.Items.Clear;
//Установка указателя в таблице на первую запись
DM.ADOTable2.First;
//Цикл перебора всех записей в таблице
while not DM.ADOTable2.Eof do
begin
//Добавление элемента в список
ComboBox1.Items.Add(DM.ADOTable2['Dat_r']);
//Переход к следующей записи
DM.ADOTable2.Next;
end;
На кнопке «Выполнить запрос третий раз» создают следующую процедуру.
DM.ADOQuery2.Close;
DM.ADOQuery2.Parameters.ParamByName('Dat_r').Value := StrToDate(ComboBox1.Text);
DM.ADOQuery2.Open;
5. СОЗДАНИЕ ОТЧЕТОВ
5.1. Создание отчета в Delphi
В предыдущих версиях Delphi для создания отчетов использовались компоненты вкладки QReport, с помощью которых программист мог сравнительно легко создавать достаточно сложные отчеты. Однако данные компоненты имели один существенный недостаток: их нельзя было использовать в кросс-платформенных приложениях. В связи с этим в версии 7 компоненты QReport заменены компонентами вкладки Rave, имеющими схожую функциональность (создание отчетов), но обладающих более широкими возможностями и, главное, поддерживающими кросс-платформенные приложения. Единственным существенным недостатком технологии Rave Reports является ее некоторая «сыроватость», что приводит к ряду проблем при ее использовании (некорректность работы в Windows 95/98, неотображение ряда кириллических шрифтов и т.д.).
В основе технологии Rave Reports лежит идея отделения процесса разработки от процесса создания отчета за счет использования промежуточного документа, который называется проектом отчета. Проект отчета создается с помощью среды Rave (Report Authoring Visual Environment – визуальная среда автора отчета), а в создаваемую программу внедряется так называемая машина генератора отчета, которая по данным, полученным из файла проекта, создает документ отчета.
На вкладке Rave имеются два ключевых компонента – RvProject и RvSystem, перенос которых в программу внедряет в нее машину генератора отчетов. Проект будущего отчета создается заранее с помощью утилиты Report Manager Designer, которая вызывается из Delphi и взаимодействует с загруженной в среду Delphi программой.
Вызов Rave Designer. Вызов отчета будет производиться с помощью пунктов меню.
Первоначально необходимо поместить на форму, где находится главное меню, компонент RVDataSetConnection (вкладка Rave) и в свойстве DataSet выбрать ADOTable (если отчет создается на основе таблицы) или ADOQuery (если отчет создается на основе запроса).
Вся дальнейшая работа осуществляется под управлением утилиты Rave Reports Designer. Для ее вызова необходимо выбрать в главном меню команду Tools/Rave Designer.
Утилита Rave Designer имеет собственную палитру компонентов, дерево объектов и набор инструментальных кнопок. Центральную часть окна занимает рабочая область с двумя вкладками – Page Designer и Event Editor.
Первая используется подобно окну формы среды Delphi – на ней размещают нужные компоненты из палитры Rave Designer.
На вкладке Event Editor можно написать код для обработчиков событий OnBeforePrint, OnBeforeReport, OnAfterPrint, OnAfterReport для любого размещенного на вкладке Page Designer компонента отчета. Обработчики пишутся на языке, который представляет собой подмножество языка Delphi.