Создание отчетов к БД в Delphi. Формирование отчетов "вручную". Содержимое запроса. Настройка TurboDelphiExplorer для работы с отчетами с помощью компонентов FastReport, страница 4

В FastReport пустой отчет представлен в виде листа бумаги. На любое место листа можно положить объекты, которые могут отображать разную информацию (текст, графика) и определять внешний вид отчета. Пиктограммы данных объектов расположены вдоль левого края окна дизайнера и  размещаются на листе бумаги аналогично тому, как  компоненты Delphi размещаются на форме. С настройками этих объектов предлагается поэкспериментировать самостоятельно.

Как и в предыдущих версиях Delphi (и  в MS Access) различные объекты отчета удобно объединять в группы или «полосы» «band». Каждая полоса может соответствовать одному из 6 уровней группировки данных (Master Data, Detail Data, Subdetail Data, Data 4th level, Data 5th level,Data 6th level), кроме того, для улучшения внешнего вида отчета определены следующие типы групп (см таблицу 3):

Таблица 3. Компоненты отчета FastReport

Report Title

Заголовок отчета

Group Header

Заголовок группы

Report Footer

Примечание отчета

Group Footer

Примечание группы

Page Header

Верхний колонтитул

Coloumn Header

Заголовок колонки

Page Footer

Нижний колонтитул

Coloumn Footer

Примечание колонки

Child

Дочерний отчет

В свойстве SQL компонента DataModule1.TempSQL напишите следующий простейший запрос

Select * from session_result;

Установите  свойство компонента DataModule1.TempSQL.Active в True, а свойство компонента  DataModule1.frxDBDataset.UserName в  vedom_1

На этом подключение отчета к БД закончено. Вам остается создать собственно макет отчета.

Перейдите на закладку «Page1» и добавьте на рабочее поле отчета две полосы: ReportTitle и MasterData. На полосу ReportTitle поместите компонент TextObject (пиктограмма в виде буквы A на панели объектов). Откроется диалоговое окно в котором вы можете набрать текст стандартной «шапки». Закончив ввод, можно отформатировать данный текстовый объект по своему вкусу (гарнитура шрифта, размер, цвет и пр.). Аналогично, поместите компонент TextObject на  полосу  «MasterData», настройте свойство DataSet в значение «AdoQuery», а свойство DataField в значение «Surname». Аналогично добавьте компоненты TextObject для вывода полей FirstName, Otch и st_bilet, а также 3 пустых TextObject для  ручного внесения в распечатанную ведомость оценки, даты сдачи и подписи преподавателя. Сохранитесь. Нажмите на пиктограмму «Просмотра отчета» - вы увидите примерно такую картину (рис. 5.2):

Рисунок 5.2 – предварительный просмотр отчета при использовании Select без ограничивающих условий

Первая и вторая строки «шапки» - просто текст. Третья строка шапки в режиме дизайнера имеет вид :

ведомость([vedom1."Forma_otchetnosti"])по дисциплине [vedom1."dis_name"]

конструкция [имя_таблицы.«имя поля»] означает внедрение в данном месте отчета значения указанного поля таблицы. Несколько одинаковых записей в строках отчета обусловлены тем, что в свойстве SQL компонента TempSQL указан запрос, выводящий все записи представления Session_Results. В дальнейшем, при динамическом подключении отчета к источнику данных из программы, выводимая в отчет информация будет корректной.

Для достижения эффекта сетки, поменяйте у всех объектов, в которые выводимте данные полей, набор свойств Frame.Typ.Left, Frame.Typ.Right, Frame.Typ.Top, Frame.Typ.Bottom  для включения рамки соответственно слева, справа, сверху и снизу.

Cохраняем макет отчета в файле с расширением *.fr3  и переписываем обработчик  нажатия кнопки «печать ведомости» в следующем виде:

procedure TSDIAppForm.Button1Click(Sender: TObject);

begin

   With DM1 do

   begin

    TempSQL.Close;

    TempSQL.SQL.Clear;

    TempSQL.SQL.Add('Select * from Session_Result  ');

    TempSQL.SQL.Add(' where (Dis_shifr ='+ chr($27)+ Disc_table.FieldByName('Dis_Shifr').value+ chr($27)+')');

    TempSQL.SQL.Add(' and (forma_otchetnosti ='+chr($27) +SDIAppForm.Otchetnost.Text+chr($27)+')');

    TempSQL.SQL.Add(' and (st_bilet in ');