В 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 ');
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.