Lab4-Quick_Report (Лабораторная №2)

2017-12-28СтудИзба

Описание файла

Файл "Lab4-Quick_Report" внутри архива находится в папке "Лабораторная №4". Документ из архива "Лабораторная №2", который расположен в категории "". Всё это находится в предмете "банки данных" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "банки данных" в общих файлах.

Онлайн просмотр документа "Lab4-Quick_Report"

Текст из документа "Lab4-Quick_Report"

Технология Quick Report

Технология Quick Report является базовой для создания отчетов в Delphi версий 2-6 и альтернативой технологии Rave Reports в Delphi 7 Studio. В этом разделе рассматриваются основные приемы создания отчетов с помощью компонентов вкладки QReport.

Принципы построения отчета

Центральным компонентом при построении отчета является компонент TQuickRep, определяющий свойства отчета в целом. Этот компонент всегда помещается на отдельную пустую форму, образуя с ее помощью визуальную среду конструирова­ния отчета (рис. 8.21).

Пустое внутреннее пространство компонента имитирует чистый лист бумаги (его поля очерчены пунктирными линиями). На это пространство помещаются осталь­ные компоненты точно так, как если бы создавалась обычная форма, однако, в от­личие от обычной формы, форма с компонентом TQuickRep, подобно модулю дан­ных, никогда не визуализируется в работающей программе.

Отчет в основном строится из компонентов-полос TQRBand, с помощью которых формируются различные его фрагменты, такие как общий заголовок, заголовок каждой страницы, заголовки колонок отчета, область для отображения собствен­но данных из таблицы БД и т. п. Содержимое полосы зависит от следующего ее свойства:

type TQRBandType = (rbTitle, rbPageHeader, rbDetail,

rbPageFooter, rbSummary, rbGroupHeader, rbGroupFooter, rbSubDetail,rbColumnHeader,rbOverlay, rbChild);

property BandType : TQRBandType;

Свойство может содержать одно из перечисленных ниже значений, определяю­щих, что будет отображать полоса:

- rbTitle — заголовок отчета в целом;

- rbPageHeader — верхний колонтитул;

- rbDetail — данные из НД (какой конкретно НД будет отображаться, опреде­ляется значением свойства DataSet компонента-отчета TQuickRep);

- rbPageFooter — нижний колонтитул, в котором обычно размещается номер страницы отчета и другая вспомогательная информация;

- rbSummary — общие для отчета в целом итоговые данные;

- rbGroupHeader — заголовок группы данных;

- rbGroupFooter — подвал группы данных;

- rbСо1umn Header— заголовки колонок отчета;

На полосах TQRBand размещаются остальные компоненты отче­та, которые делятся на оформительские и отображающие данные. Оформитель­ские компоненты содержат различного рода вспомогательную информацию — над­писи, изображения и т. п. Эта информация не является частью данных из БД, но служит для удобства чтения отчета. Компоненты отображения данных получают информацию из соответствующих полей НД или вычисляют ее на основе этой информации.

По структуре различают три рода отчетов: простые, типа главный-детальный и композитные. В простых отчетах отображаются данные из одного НД, например список всех накладных, связанных с отпуском книг конкретному покупателю, упорядоченный по дате или сумме. В простом отчете должна использоваться хотя бы одна полоса TQRBand типа rbDetail, которая при печати (просмотре) отче­та будет автоматически повторяться столько раз, сколько записей имеет НД. В от­четах типа главный-детальный используется информация из двух НД, связанных соответствующим реляционным отношением. Например, такой отчет позволяет напечатать не только текущую накладную, но и связанный с ней список книг. В отчетах главный-детальный обязательно используется полоса TQRSubDetail, которая автоматически повторяется столько раз, сколько записей содержит де­тальный НД. Наконец, композитный отчет строится как механическое объеди­нение двух и более отчетов. Например, с его помощью можно создать отчет, в ко­тором данные по конкретной накладной будут дополняться исчерпывающей информацией о партнере. Для создания композитного отчета на любую форму помещается компонент TQRCompositeReport, после чего на этапе прогона про­граммы он наполняется с помощью метода Add его свойства Reports, напри­мер, так:

procedure TfmPrint.FormCreate(Sender: TObject);

begin

with QrCompositeReportl do

begin

Reports.Add(QuickRepl);

Reports.Add(QuickRep2);

end

end;

Любой отчет можно напечатать, если обратиться к его методу Print, или просмот­реть в специальном окне просмотра, если вызвать метод Preview.

Пример создания отчета

В этом подразделе иллюстрируются основные приемы создания отчета. Наш от­чет будет представлять собой товарную накладную на отпуск книг со склада оп­тового поставщика. Он будет создаваться с помощью команды Печать контекст­ного меню сетки DBGridl. Вид отчета в окне предварительного просмотра показан на рис. 8.22

1. Создайте в проекте новую пустую форму, расположите на ней компонент TQuickRep, измените имя формы на fmPrint и сохраните в файле fmPrintU. Эта форма не будет создаваться автоматически в момент старта программы, по­этому после ее присоединения к проекту выберите команду Project ► Options и пе­ренесите ее в список доступных форм Available forms.

  1. С помощью команды File ► Use unit свяжите новую форму с модулем данных
    dmNaklsU, после чего поместите в свойство DataSet компонента QuickRep1
    значение DM. Move. Замечу, что это свойство всегда должно быть заполнено ссыл­кой на тот НД, который будет содержать основную информацию, — иначе по­лосы TQRBand типа rbDetail и TQRSubDetail не смогут автоматически реп­лицироваться по количеству записей НД. В нашем случае нельзя в свойстве QuickRepl.DataSet указать имя НД DM. Nakls, так как это приведет к тому, что полосы с детальной информацией будут повторяться столько раз, сколько всех книг упоминается во всех накладных.

  2. Поместите на отчет полосу TQRBand. Эта полоса по умолчанию имеет типrbTitle, то есть появляется всего один раз в самом начале отчета. Используем ее для размещения заголовка накладной, для чего установите ее высоту Height = 99 и поместите на нее следующие компоненты:

- компонент TQRLabel со свойствами Caption = Товарная накладная №, Тор= 8, Left = 17 6, Font.Size = 16, Font .Style.fsBold = True;

- компонент TQRDBLabel со свойствами DataSet = DM. Nakls, DataField = NakllD, Top = 8, Left = 424, Font.Size = 16, Font.Style. fsBold= True;

- компонент TQRLabel со свойствами Caption = от, Top = 8, Left = 472, Font.Size = 16, Font.Style.fsBold = True;

- компонент TQRDBLabel со свойствами DataSet = DM. Nakls, DataField = NDate, Top= 8, Lef t = 504, Font. Size = 16, Font. Style. f sBold = True;

- компонент TQRLabel со свойствами Caption - Отправитель, Top =40,Left=16, Font.Size = 12, Font.Style, fsBold = True;

- компонент TQRLabel со свойствами Caption = Получатель, Top=64, Left=16, Font.Size=12, Font. Style. fsBold = True;

- компонент TQRDBLabel со свойствами DataSet - DM. Nakls, DataField = Firm, Top = 64, Left = 120, Font.Size = 10, Font. Style. fsUnderline = True.


Вид отчета к этому моменту на этапе конструировании показан на рис. 8.23,а на этапе прогона программы — на рис. 8.24.

Чтобы увидеть отчет в окне предварительного просмотра, щелкните на компоненте QuickRep1 правой кнопкой мыши и выберите в контекстном меню команду Preview.

  1. Теперь поместим в отчет заголовки его колонок. Для этого используется компонент TQRBand со свойством BandType = rbColumnHeader. Кроме того, установите для этого компонента свойства Font.Size = 10 и Font.Style.fsBold = True, чтобы заголовки отображались полужирным шрифтом, а также поместите значе­ния True в свойства Frame. DrawBottom, Frame.DrawLef t, Frame.DrawRight
    и Frame.DrawTop, чтобы полоса очерчивалась прямоугольной рамкой.

  2. Разместите на новой полосе четыре компонента TQRLabel со следующими свой­ствами:

- компонент QRLabel3 со свойствами Caption = Название, автор, из­дательство, Left = 163, Тор = 10;

- компонент QRLabel4 со свойствами Caption = Колич-во, Left = 4 99, Тор = 10, AutoSize = False, Width = 66, Alignment = taCenter;

- компонент QRLabe 15 со свойствами Caption = Цена, Left = 567, Top = 10, AutoSize = False, Width = 66, Alignment = taCenter;

- компонент QRLabel6 со свойствами Caption = Сумма, Left = 632, Top = 10, AutoSize = False, Width = 66, Alignment = taCenter.

Результат показан на рис. 8.25.

6. Чтобы в отчете появился связанный с накладной список книг, поместите в него компонент TQRSubDetail со значениями свойств DataSet = DM. Move, Font.Size = 8, Height = 15, Frame.DrawLeft = True, Frame.DrawRight = True, Frame.DrawBottom = True.

7. На полосе TQRSubDetail разместите 4 компонента TQRDBText для отобра­жения содержимого четырех колонок отчета:

- компонент QRDBText4 со свойствами: AutoSize = False, DataSet = DM. Move, DataField = Name, Frame.DrawRight = True, Height = 15, Left = 0, Top = 0, Width = 4 98;

- компонент QRDBText5 со свойствами: AutoSize = False, DataSet = DM. Move, DataField = MQuan, Frame.DrawRight = True, Height = 15, Left = 4 9 9, Top = 0, Width = 70, Alignment = taCenter;

- компонент QRDBText6 со свойствами AutoSize = False, DataSet = DM.Move, DataField = MPrice, Frame.DrawRight = True, Height = 15, Left = 567, Top = 0, Width = 70, Alignment = taCenter;

- компонент QRDBText7 со свойствами AutoSize = False, DataSet = DM.Move, DataField = Summa, Height = 15, Left = 638, Top = 0, Width = 70, Alignment = taCenter.

Вид отчета в окне предварительного просмотра к этому времени показан на рис. 8.26.

8. Для размещения в отчете итоговой информации используется полоса RQRBand типа rbSummary. Поместите на эту полосу:

- компонент TQRLabel со свойствами Тор= 10, Left = 10, Caption = Ито­го :;

- компонент TQRSysData со свойствами Тор = 10, Left = 56, Data = qrsDetailCount;

- компонент TQRLabel со свойствами Тор = 10, Left = 10, Caption = наи­менований на сумму;

- компонент TQRDBText со свойствами Тор = 10, Left = 248, DataSet = DM.Nakls, DataField = NSum.

9. Чтобы вызывать отчет в работающей программе, создайте обработчик выбора команды Печать контекстного меню сетки DBGridl, представленный в листин­ге 8.1.

Листинг 8.1. Обработчик выбора команды контекстного меню

procedure TfmNakls.LMPrintClick(Sender: TObject);

begin

fmPrint := TfmPrint.Create (Self);

fmPrint.QuickRepl.Preview;

fmPrint.Free;

end;

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее