Міністерство освіти інауки України
Рівненський державнийгуманітарний університет
Факультет математики таінформатики
Кафедра інформатики таприкладної математики
Курсова робота на тему:Засоби виводу інформації на принтер воб’єктно-орієнтованому середовищі програмування Delphi
Виконав:
студент IV курсу
факультетуматематики та інформатики
групи МІ-41Карпович О. І.
Науковийкерівник:
викл. Гаврюсєв С.М.
Рівне 2004
Зміст
Вступ.
§1. Аспекти використання стандартнихкомпонентів ООС програмування Delphi для створення звітноїдокументації.
1.1. опискомпонентів – QReport, PrintDialog та PrintSetupDialog;
1.2. створення звітів за допомогою Quick Reports;
1.3. іншепрограмне забезпечення для побудови звітів
1.4. §2.Приклади створеннязвітів Висновок.
Список використаної літератури.
Вступ
За сучасного стрімкогорозвитку інформаційних технологій часто виникає потреба у створеннінестандартниж можливостей для покращення дизайну і якості программногозабезпечення. Метою роботи є огляд можливостей компонентівоб’єктно-орієнтованого середовища програмування Delphi при виводі інформації на принтер.Зокрема огляд можливостей генератора звітів Quick Report. Він один з найбільшвикористовуваних генераторів, поряд з ним використовуються ще такі генераторияк: Cristal Report та Fast Report. За допомогою закладки QReport в середовищі програмування Delphi здійснюється друк. Закладка QReport дозволяє працювати з базамиданих. Крім QReport розглянемо можливості такихкомпонентів як Print Dialog та Print Setup Dialog.
1.1. Опис основних компонентів QuickReports.
На сторінці QReport палітри компонентів розташовується більш двадцяти компонентів, застосовуваних дляпобудови звітів.
Найважливішим є компонент QuickRep/>, що визначає побудову звітув цілому. За допомогою інших компонентів створюються складові частини звіту.
Компонент QRBand /> являє собою спеціальну панель для розташування даних, заголовків, назвизвіту та ін. Даний компонент є однимз основних. З його допомогою реалізуються такі області звіту:
область заголовка звіту;
область заголовка сторінки;
область заголовка групи;
область назв стовпців звіту;
область детальних даних;
область підгрупи;
область підсторінки;
область підзвіту.
Компонент QRStringBand /> має те ж призначення, що і QRBand.Відмінність полягає в тому, що даний компонент має вбудований список рядківItems. Вміст цього списку стає видимиму режимі друку або попереднього перегляду, якщо на компонент QRStringBandпоміщений компонент QRExpr. Для кожного рядка в списку Itemsвиводиться окрема смуга QRStringBand.
Інші компоненти, представлені на сторінціПалітри компонентів, приведені в табл.
Група компонентів QRXXXXFilter являє собою набірфільтруючих компонентів, використовуваних для перетворення звіту в текст,HTML-сторінку і т.п. при друці звіту.
Компоненти для створення звітів
Компонент Призначення
QRSubDetail
/> Являє собою область, у якій розташовуються дані підлеглої таблиці при реалізації в звіті зв'язку між таблицями БД
QRChildBand
/> Виконує функції дочірньої смуги, що прив'язується до батьківської смуги і служить для її розширення. Будь-яка смуга може бути визначена як батьківська шляхом установки її властивості HasChild у True
QRGroup
/> Застосовується для групування даних у звіті
QRLabel
/> Дає можливість розмістити в звіті довільний текстовий рядок
QRDBText
/> Використовується для висновку в звіті вмісту полючи набору даних
QRExpr
/> Застосовується для висновку значень, що є результатом обчислення виражень. Формули для обчислення виражень задаються за допомогою спеціального редактора формул даного компонента
QRSysData
/> Служить для відображення в звіті системних значень, таких як дата, час, номери сторінок і т.п.
QRMemo
/> Дозволяє вставити в звіт багаторядковий текст
QRExprMemo
/> Використовується для створення багаторядкових полів, що обчислюються
QRRichText
/> Дає можливість додати в звіт текст у форматі RTF
QRShape
/> Застосовується для відображення в звіті найпростіших геометричних фігур (квадрат, коло і т.д.)
QRImage
/> Служить для висновку в звіті графічної інформації, джерелом якої є поле набору даних
QRPreview
/>
Використовується для створення нестандартних вікон попереднього перегляду. Стандартне вікно перегляду викликається за допомогою методу Preview компонента QuickRep
QRChart
/> Служить для додавання в звіт графіків /> /> /> />
/>
Рис. 1. Форма додатка з розміщеної на ній порожньоюсіткою звіту
Розглянемо більш докладно компонент QuickRep. Прирозміщенні цього компонента на формі в нійз'являється сітка звіту (див. мал. 1). Надалі в цій сітці розташовуютьсярізні складові частини звіту, наприклад, смуги QRBand, напису QRLabelі т.д. Нижче перераховані основні властивості компонента QuickRep.
Властивість Bands (тип TQuickRepBands) є об'єктом, щомістить набір логічних властивостей, що після установки їх у значення Trueвключають у звіт наступні елементи:
HasColumnHeader — заголовки стовпців;
HasDetail — детальну інформацію;
HasPageFooter — підсторінки;
HasPageHeader — заголовок сторінки;
HasSumtvary — підзвіту;
HasTitle — заголовок звіту.
Властивість DataSet (тип TDataSet) безпосередньо вказує нанабір даних (Table. Query і ін.), на основі якого створюється звіт.Джерело даних DataSource при цьому не використовується.
Властивість Frame (тип TQRFrame) визначає параметри рамки звіту, такі як наявність ліній (ліворуч,праворуч, зверху, знизу), колір ліній, стиль ліній (суцільна, пунктирна іт.п.), товщина лінії в пікселях.
Властивість Options (тип TQuickReportQptions) містить безліч наступних логічних значень:
• HasFirstHeader — дозволяє друкувати заголовок першої сторінки;
• HasLastFooter — дозволяє друкувати останню підсторінку;
• Concession — дозволяє стискати звіт при виводу його вметафайл.
Властивість Page (тип TQRFage) визначає параметри сторінки.Усі ці параметри доступні у вікні Report Setting (див. мал. 2).
Властивість Print If Empty (тип Boolean), встановлене в True,дозволяє друкувати звіт у тому випадку, якщо він не містить даних.
Властивість ReportTitle (тип String) визначає ім'я звіту(але не заголовок!). Дана властивість використовується для ідентифікації звітув завданні на мережевий друк і може застосовуватися для вибору одного з декількох доступних звітів.
Властивість ShowProgress (тип Boolean), встановлене в True,дозволяє показувати індикатор процесу друку звіту.
Властивість SnapToGrid (тип Boolean) прив'язуєрозташовувані в звіті компонента до сітки, якщо має значення True.
Властивість Units (тип TQRUnits) визначає одиниці виміру відстаней у звіті: дюйми, міліметри, пікселі, внутрішніодиниці компонента QuickRep (рівні 0,1 мм), символи тексту.
/>
Рис. 2 Вікно встановлення параметрів звіту
Властивість Zoom (тип Integer) дозволяє встановити масштаб відображення звіту (у відсотках від його розмірівна листі папера) на етапі розробки. Може приймати значення в діапазонівід 1 до 300. Значення даної властивості не враховується при друці звіту або в режимі його попередньогоперегляду.
Існує можливість встановлювати багатовластивостей звіту за допомогою спеціального редактора властивостей, длявиклику якого необхідно вибрати пункт Report Setting у локальному менюкомпонента QuickRep (див. мал. 2).
У цьому вікні представлені наступні групипараметрів.
Група Paper size задає характеристики сторінки: формат(наприклад, А4 210x297 mm), ширина (Width), довжина (Length) інапрямок друку (Portrait або Landscape).
Група Margin вказує поля звіту: зверху (Тор), знизу (Bottom),ліворуч (Left), праворуч (Right), а також кількістьстовпчиків (Number of columns) і відстань між ними (Column Space).
Група Other дозволяє задати шрифт (Font), йогорозмір (Size) і використовувані одиниці виміру (Units).
Група Page frame встановлює властивості рамки:, наявністьлінії зверху (Тор), знизу (Bottom), ліворуч (Left), праворуч(Right), колір ліній (Color) і їхню товщину (Width).
Група Bands визначає наявність різних смуг: заголовоксторінки (Page header), заголовок звіту (Title), заголовокстовпчиків (Column header), смуга для детальної інформації (Detailband), підсторінки (Page footer), підзвіту (Summary). Після вибору типу і висоти смуги вона з'являєтьсяв звіті, якщо натиснуто кнопку Apply або вікно закрите кнопкою ОК.Елементи Print first page header і Print last page footer керують,відповідно, друком заголовку на першій сторінці звіту і підзвіту на йогоостанній сторінці.
У якості основних можна виділити наступні методи компонента QuickRep.
Метод NewColumn реалізує вивід інформації в наступномустовпчику звіту, а якщо визначено один стовпчик, то на наступній сторінці.
Метод NewPage забезпечує вивід інформації на наступнійсторінці звіту.
Метод Prepare готує звіт для виводу у файл. Вивід звіту у файл виробляєтьсяв наступному порядку. Спочатку звіт підготовляється шляхомвиклику методу Prepare, потім зберігається у файлі методом Saveоб'єкта QRPrinter, після чого цей об'єкт знищується і властивості QRPrinterприсвоюється значення NIL. Це робиться, як показано нижче.
QuickRep1.Prepare;
QuickRep1.QRPrinter.Save('Report.QRP');
QuickRep1.QRPrinter.Free;
QuickRep1.QRPrinter := NIL;
Метод Print друкує звіт на принтері.
Метод PrintBackground дозволяє роздрукувати звіт у фоновомурежимі. Після завершення друку викликається оброблювач події OnAfterPrint.
Метод Preview виводить стандартне вікно попередньогоперегляду (див. мал. 3).
Метод PrinterSetup викликає стандартне вікно встановленняпараметрів принтера.
Компонент ORBand.У даному розділіварто також згадати про найважливіші властивості компонента QRBand, томущо дані компоненти є основними складовимичастинами звіту. Отже, розглянемокілька специфічних властивостей компонента QRBand.
Властивість AlignToBottom (тип Boolean), що має значенняTrue, вказує на те, що смуга буде розташовуватися безпосередньо надпідсторінкою, у той час як звичайно вона розташовується праворуч або знизу відпопередньої смуги.
Властивість BandType (тип TQRBandType) визначає призначеннясмуги і може приймати одне з таких значень:
• rbTitle — друкується на першій сторінці звіту і, як правило, містить його назву;
• rbPageHeader — друкується вгорі кожної сторінки і містить її заголовок;
• rbDetail — містить інформацію з набору даних іавтоматично повторюється для кожного запису, починаючи з першої і закінчуючи останньою;
• rbPageFooter — зберігає підсторінку і виводиться внизу кожноїсторінки:
• rbSummary — являє собою підзвіт і виводиться в його кінці;
• rbSubDetail — містить детальну інформацію з підлеглого набору даних у випадку зв'язку міжкількома таблицями БД;
• rbColuimHeader — являє собою заголовки стовпців і розміщаєтьсяна кожній сторінці звіту після заголовка сторінки;
• rbGroupFooter — зберігає підгрупу, застосовується при угрупованнях інформації в звіті і виводитьсянаприкінці кожної групи;
• rbGroupHeader — містить заголовок групи і виводиться на початку кожної групи;
• rbOverlay — використовується для зворотної сумісності зпопередніми версіями QuickReport. He рекомендується використовувати даний тип без особливих на теоснов;
• rbChild — резервується для використання компонентів QRChildBand.Даний тип не слід установлювати вручну.
Властивість Enabled (тип Boolean) дозволяє друкувати смуги,якщо має значення True.
Властивість ForceNewColumn (тип Boolean), встановлене в True,вказує на те, що смуга буде друкуватися в наступному стовпчику.
Властивість ForceNewPage (тип Boolean), встановлене в True,указує, що смуга буде друкуватися на новій сторінці.
Властивість HasChild (тип Boolean) визначає, чи буде данасмуга мати дочірню смугу. Якщо цій властивості привласнити значення True,то в звіті буде автоматично створена дочірнясмуга.При виводі інформації на принтер в середовищі Delphi використовуються ще компоненти PrintDialog та PrintSetupDialog.Компонент PrintSetupDialog />призначений для налаштування параметрів принтера, не має особливих властивостей, тому що ціпараметри суттєво відрізняються для різних видів принтерів. На основі цьогокомпонента можна створювати свої власні компоненти для окремих принтерів.
Компонент PrintDialog />відображає стандартне вікно друку Windows. В ньому мона задати різніпараметри друку, які визначаються наступними властивостями: Властивість Значення Collate Маркер. Розібрати по копіях Copies Число копій FromPage Номер сторінки з якої починається друк MaxPage Максимальне число сторінок, яке може бути надруковане MinPage Мінімальне число сторінок, яке може бути надруковане Options Другорядні параметри налаштування PrintRange Вигляд сторінок документу, що друкується. Можливі значення: prAllPages(всі сторінки); prSelection(сторінки вибраного фрагменту); prPageNums(сторінки з діапазону FromPage/ToPage) PrintToFile Має значення True, якщо вивід має здійснюватись не на принтер, а у файл ToPage Номер сторінки на якому закінчується друк
1.2. Створеннязвітів за допомогою QuickReports.
Створення найпростішого звіту не представляєособливих проблем. Для цього достатнім є використання тільки компонентів QuickRepі QRBand.
Створення найпростішого звіту.Розглянемопобудову простого звіту на невеликомуприкладі.
Приклад. Нехай є таблиця students.db, у якій зберігаютьсядані про студентів інституту. У цій таблиці представлені такі поля: Номерстудентського квитка (Nom_stud), Прізвище, ім'я, по батькові (Fio).Група (Grup). Потрібно створити найпростіший звіт, що містить заголовокі зведення з зазначеної таблиці БД.
Спочатку на форму поміщається компонент Table, щозв'язується з таблицею students.db. Таблиця відкривається, тобто властивості Activeцього компонента привласнюється значення True. На форму поміщаєтьсякомпонент QuickRep. і його властивості DataSet встановлюєтьсязначення Tablel. У звіт додається компонент QRBand. При цьомуйого властивість BandType по замовчуванню має необхідне значення, а саме- rbTitle, тобто цей компонент будемістити заголовок звіту. Зверху на смугу заголовка поміщається компонентQRLabel, властивості Caption якого задається значення, щовизначає заголовок звіту (наприклад, «Список студентів»). Крім того,при бажанні можна змінити шрифт, яким буде виводитися заголовок звіту. Церобиться за допомогою зміни значення властивості Font. Після цього взвіт додається ще один компонент QRBand. і його властивості BandTypeвстановлюється значення rbDetail. У цій смузі буде відображатися вмісттаблиці students.db. Потім на дану смугу поміщаються три компоненти QRDBText,що зв'язуються з полями таблиці БД — Norn stud. Fio, Grup.Для цього властивості DataSet кожного компонента QRDBText задаєтьсязначення Tablel, а властивості DataField присвоюється ім'явідповідного поля.
Переглянути отриманий звіт, можна, клацнувши по ньому правоюкнопкою миші і вибравши пунктPreview в відкритому контекстному меню. Зразковий вид вікнапопереднього перегляду даного звіту показаний на мал. 5.
Якщо необхідно, щоб вікно попереднього перегляду відкривалося при створенні форми, досить створититакий оброблювач події OnCreate даної форми:
procedure TForml.FormCreate(Sender: TObject);
begin
QuickRepl.Preview;
end;
Для того щоб при закритті вікна попередньогоперегляду закривалася і форма, на якій розташований звіт, можнавикористовувати такий оброблювач події OnAf terPreview компонента QuickRep:
procedure TForml.QuickRep1AfterPreview(Sender: TObject);
begin
Forml.Close;
end;
У результаті створення двох приведенихоброблювачів подій може бути отримане найпростіший додаток, що забезпечує можливість перегляду і друку сформованого звіту.
Включення виражень у звіт.Для того щоб включити в звіт дані, одержуванів результаті обчислення деякого виразу, використовується компонент QRExpr/>. Вираз формуються за допомогою спеціального редактора, щовикликається у вікні Інспектора об'єктів кнопкою /> у поле данихвластивостей Expression вищевказаного компонента (див. мал. 6).
Вираз вводиться і редагується в поле Enter expression даного редактора. Вираз може складатися з іменполів, змінних, числових значень, функцій перетворення, арифметичних і логічнихоперацій, а також операторів порівняння. Імена полів додаються у вираження за допомогою допоміжного вікна,що викликається натисканням кнопки Database field, функції — задопомогою вікна, що відкривається при натисканні кнопки Function, азмінні — натисканням кнопки Variable. Також за допомогою відповідних кнопок додаються логічні, арифметичні оператори й оператори порівняння.
Розглянемо приклад складання виразу з наступним виводом результатуйого виконання в звіті. Нехай є таблицяshop.db, що містить найменування товарів, що є в магазині (поле Tovar),і його вартість (поле Price). Припустимо, що ціна товарів виражена вдоларах США. Потрібно представити ціну в гривнях, з огляду на те, що курсдорівнює 5,35 гривень за один долар США. Крім цього, необхідно, щоб у звіті відображалася грошова величина, у якій вираженаціна товару. Таким чином, потрібно перетворити чисельне значення вартості товару до строкового типу, після чого доотриманого рядка додати під рядок“грн.”. Реалізувати це можна в такий спосіб. Після того як у звітдоданий компонент QRExpr, варто відкрити вікно редактора формул.
Спочатку в редакторі необхідно натиснути кнопку Function. Улівому списку вікна, що відкрився при цьому, потрібно вибратикатегорію Other,а потім у правому списку — функцію STR, що перетворить числове значення встрокове. Після цього варто натиснути кнопку Continue, щоб перейти довведення параметрів функції. У результаті відкриється спеціальне вікно введенняпараметрів (див. мал. 7).
Параметр можна ввести безпосередньо в поле одно строкового редактора або натиснути кнопку />, розташовану праворучвід поля введення. Після натисканняданої кнопки на екрані з'явиться початкове вікно редактора формул. Томущо, відповідно до поставленої задачі,необхідно буде перетворювати в рядок значення поля таблиці БД, то для заданняйого як параметра даної функції варто натиснути кнопку Database fieldі вибрати поле Price у списку полів таблиці Tablel. Теперпотрібно натиснути кнопку ОК, щоб вставити поле, потім ОК, щобзакрити вікно редактора формул, і ще раз ОК, щоб завершити введенняпараметра. У поле Enter expression буде сформована частина формули, що має вид:
STR( Tablel. Price)
Перш ніж перетворити значення поля Price до строковоговиду, його необхідно помножити на 5.35, щоб представити ціну не в доларах, а в гривнях. З цією метою курсор встановлюєтьсяв позицію безпосередньо після імені Price, потім на панелі Insert atcursor position натискається кнопка «*» і вручну вводиться значення5.35.
Після цього залишилося тільки додати вказівку грошової одиниці. Для цього курсор переводиться в кінцевупозицію, натискається кнопка «+» і вручну вводиться підрядок “грн. ”. У результаті сформована формулаздобуває такий вид:
STR(Tablel.Price*5.35)+ ' грн.'
У вікні попереднього перегляду звіту будевідображатися інформація приблизно на кшталт показане на мал. 8.
У цьому звіті відображається найменуваннятовару, потім вміст поля Price у первісному вигляді і, нарешті,перелічена за допомогою компонента QRExpr вартість товару. Ціна виводиться двічі, щоб проілюструвати різницю між початковим і перетвореним значенням.
Відображення системної інформації.Для відображеннядопоміжної і системної інформації використовується компонент QRSysData/>. Видвідображуваної інформації визначається значенням властивості Data даногокомпонента. Ця властивість може приймати одне з таких значень:
• qrsColumnNo — номер поточного стовпчика звіту:
• qrsDate — поточна дата;
• qrsDataTinie — поточна дата і час;
qrsDetaiICount — кількість записів у наборі даних; при використанні декількох наборів даних — кількістьзаписів у головному наборі. Якщонабір даних представлений компонентом Query, ця можливість можебути недоступна, що зв'язано з характеромроботи даного компонента, що повертає стільки записів, скільки необхідно для використання в даний момент часу;
• qrsDetailNo — номер поточного запису в наборі даних;
• qrsPageNumber — номер поточної сторінки звіту;
• qrsPageCount — загальна кількість сторінок звіту;
• qrsReportTitle — заголовок звіту;
• qrsTime — поточний час.
Компонент QRSysData, як правило, розміщається в заголовку або підсторінці звіту.
Групування даних у звіті.Для групування даних використовуєтьсякомпонент QRGroup /> . Умова групуваннязберігається у властивості Expression, інакше кажучи, у групу будуть входитизаписи набору даних, що задовольняють встановленійумові. Роль такої умови виконує ім'я поля набору даних, на основі якогобуде здійснюватися групування записів. Для кожної групи виводиться її заголовок. Як заголовок групи використовується компонентQRGroup, а як під компонент QRBand зі значенням властивості BandType,рівним rbGroupFooter. При цьому властивість FooterBand компонентаQRGroup повинне обов'язково міститипосилання на компонент підгрупи. Як правило, у заголовку групививодиться вираження, що групує, а впідзаголовку — різна інформація, такаяк, наприклад, сумарне або середнє значення по групі в цілому.
Важливою умовою є те, що угрупування буде здійснюватися тільки наоснові поточного індексу. Іншими словами, необхідно, щоб як поточний індекс буввикористаний індекс, побудований за полем (або полями, у випадку створеннявкладених груп даних), що використовується для групування записів у звіті.
Розглянемо групування даних у звіті наприкладі. Тут же буде проілюстровано, як можна застосуватидеякі іншікомпоненти.
Приклад. Нехай, є таблиця, у якій зберігається інформація про співробітників фірми. Нехай данатаблиця має такі поля: Табельний номер (Tab_nom), Ім'я співробітника (Name),Відділ (Otdel), Посада (Position), Оклад (Salary).Необхідно скласти звіт, що відображає дані з цієї таблиці. При цьому потрібно здійснити групування всіхзаписів за номерами відділів, у яких працюють співробітники. Також необхідновідображати назви стовпців звіту й у підсторінці виводити номер сторінки іпоточну дату. Наприкінці звіту повинна бути виведена інформаціяпро загальну кількість співробітників підприємства.
На першому кроці на форму міститься компонентTable1 і його властивості IndexFieldNames або indexNameустановлюється відповідне значення, що містить посилання на індекс, побудованийза полем Otdel.
Після того як на форму поміщений компонент QuickRep1 і йоговластивість DataSet задана як Tablel, у звіті розміщаються такісмуги:
• смуга заголовка звіту — компонентів QRBandl, у якоговластивість BandType має значення rbTitle;
• смуга заголовків колонок — компонентів QRBand2 іззначенням властивості BandType, рівним rbCol — ColumnHeader;
• смуга групи — компонентів QRGroupl, його властивість FooterBandодержує значення QRBand4 (посилання на підзвіт — див. нижче), авластивості Expression присвоюється значення Tablel.Otdel(встановлює поле, на основі якого будевироблятися групування даних);
• смуга детальної інформації — компонентів QRBand3 для якоговластивість BandType встановлена в rbDetail;
• смуга підгрупи — компонентів QRBand. властивості BandTypeякого задане значення rbGroupFooter;
• смуга підзвіту — компонентів QRBand, властивість BandTypeмає значення rbSuiranary;
• смуга підсторінки — компонентів QRBand6, зі значеннямвластивості BandType, рівним rbPageFooter
На смугах звіту розміщаються компоненти QRLabel, що містятьрізні пояснювальні записи, у тому числі заголовок звіту, заголовки стовпців і т.д.
На смугу групи QRGroup1 міститься компонент QRExpr, у якоговластивості Expression необхідно присвоїти значення Tablel.Otdel,що дозволяє відображати значення поля Otdel для поточної групи даних.
У смузі детальної інформації розміщаються компоненти QRDBText.щопосилаються на відповідні поля набору даних, а саме на поля Tab nom. Name.Position і Salary.
У підгрупі додається компонент QRExpr. Його властивості Expressionприсвоюється значення SUM (Tablel. Salary) для підсумовування зарплати всіх співробітників відділу.
У підзвіті також включається компонент QRExpr, властивості Expressionякого потрібно задати значення COUNT, що дозволяє порахувати загальнечисло виведених у звіті записів або, іншимисловами, загальна кількість співробітників підприємства.
На смузі підсторінки необхідно розміститидва компоненти QRSysData. Властивості Data одного з них привласнитизначення qrsDate, а іншого — qrsPageNumber. Таким чином, упідсторінці буде відображатися поточна дата і номер поточної сторінки звіту.
На мал. 9 показаний зразковий вид вікна попереднього переглядусформованого звіту.
В звіті може застосовуватися і більш складне групування даних,оскільки кожна група може, у свою чергу, мати вкладенугрупу.
Побудова звіту для зв'язаних наборівданих.У тих випадках, коли потрібно створити звіт на основі даних, одержуваних здекількох таблиць БД, можна здійснити двома способами.
1.За допомогою компонента Queryоб'єднати дані з декількох таблиць в одиннабір даних, після чого будувати звіт звичайнимчином, аналогічно тому, як було показано вище.
2.Створити кілька наборів даних(по одному на кожну таблицю) і з'єднати ці набори між собоюзв'язком майстер-детальний, використовуючи їх властивості MasterSource і MasterFields. Далі для відображення інформації зі зв'язаних наборів даних узвіті застосовуються компонент QRBand (для головної таблиці) і компонентQRSubDetail (для підлеглої таблиці).Саме особливості застосування цього способу і будуть розглянуті нижче.
Компонент QRSubDetail /> спеціально призначений длявключення в звіт інформації з детального набору даних. Властивість DataSetцього компонента повинна містити посилання на детальний набір даних.
Нехай у БД бухгалтерії підприємства маютьсядві таблиці. Перша таблиця firm.db містить інформацію про співробітників і маєтакі поля: Табельний номер (Tab_nom), Ім'я співробітника (Name),Відділ (Otdel), Посада (Dolgn), Оклад (Salary). В другійтаблиці zarplata.db зберігається помісячна інформація про виплату зарплатикожному співробітникові з початку поточного року і включає такі поля:Порядковий номер запису (Ncmer), Табельний номер (Tab_nom),Місяць (Mes), Кількість відпрацьованих днів (Dni), Виплаченазарплата (Zarpl).
Таблиці firm.db і zarplata.db знаходяться у відношенні один-до-одного,тобто одному співробітникові можуть відповідати кілька фактів виплати зарплати.
Для створення звіту, насамперед, потрібнорозмістити на формі два компоненти Table1 і ТаЫе2, зв'язавши їх,відповідно, з таблицями firm.db і zarplata.db. Крім того на формі міститьсякомпонент DataSource, зв'язаний з компонентом Tabl1. Після цьогоміж наборами даних встановлюється зв'язок по одноіменних полях Tab_nom.
Після того як зв'язок був встановлений,можна перейти до проектування звіту. На форму додається компонент QuickRep.Властивості DataSet даного компонента присвоюється значення Table1.Потім у звіті розміщується смуга заголовка, тобто компонент QRBand1,властивість BandType якого рівна rbTitle. На цю смугу поміщаєтьсякомпонент QRLabel, у властивість Caption якого записується рядок,що позначає заголовок даного звіту. Потім додаєтьсяще одна смуга QRBand2 і її властивості BandTypeприсвоюється значення rbDetail. На цій смузі містяться чотири елементи QRDBText,що зв'язуються з полями Tab_nom,Name,Dolgn іOtdel таблиці firm.db.
На наступному кроці в звіті розміщуєтьсякомпонент QRSubDetail. Даний компонент зв'язується з підлеглою таблицею:його властивості DataSet присвоюється значення Таbl2. На цій смузімістяться три компоненти QRDBText, що зв'язуються з полями Mes, Dniі Zarpl таблиці zarplata.db. Нарешті, у поле компонента QRBand2розміщаються заголовки стовпців, що відповідають відображуваним полям підлеглоїтаблиці
У результаті з підлеглої таблиці виводиться помісячна інформаціяпро виплату зарплати для кожного співробітника, дані про яке утримуються вголовній таблиці.
Композитний звіт.Композитним (складним, складеним) називаєтьсязвіт, що поєднує в собі кілька простих звітів, що випливають при друці один заіншим.
Для створення композитного звітувикористовується компонент QRCompositeReport />. Об'єднаннязвітів здійснюється в оброблювачі події OnAddReport шляхом додавання назввідповідних звітів у список властивості Report даного компонента. Церобиться приблизно в такий спосіб:
Procedure TForm3.QRCompositeReportlAddReports (Sender: TObject);
begin
QRCompositeReport1.Reports.Add
(Forml.QuickRep1);
QRCompositeReport1.Reports.Add
(Form2.QuickRep1);
end;
У приведеному прикладі композитний звіт складається з двох звітів:QuickRep1, що був раніше визначений у формі Form1, і QuickRep1,визначений у формі Form2. Назви звітів збігаються, тому що на дві різніформи був поміщений новий компонент звіту, що за замовчуванням одержує ім'я QuickRep1.Природно, розроблювач може за бажанням змінити ім'я звіту. Друк і попереднійперегляд складеного звіту виробляються так само, як і для простих звітів,наприклад, за допомогою методу Preview:
1.3. Іншепрограмне забезпечення для побудови звітів.
FastReport
Необхідність написання власного компонента для побудови звітів виниклав 1997 році, під час розробки системи обліку заробітної плати. Специфікою такоїсистеми є велика кількість форм звітності, необхідність легкого настроюванняїхнього зовнішнього вигляду. Існуючі доступні системи побудови звітів не малипотрібні характеристики, тому було прийняте рішення про розробку власногогенератора звітів. Концепція була запозичена з 1С-Бухгалтерії 6.0 для Windows — основним елементом звіту є довільним образом обрамлений прямокутник ізбагаторядковим текстом усередині; у тексті можуть утримуватися змінні — рядка вквадратних дужках. Ця концепція виявилася досить життєздатною — незважаючи нате, що в найпершій версії генератора застосовувався тільки один бэнд — рядокданих, це дозволяло будувати багаторівневі звіти.
Пізніше, у1998 році, генератор звітів оформляється у виді компонента (спочатку це бувпросто набір модулів, що підключаються,). З цього моменту він одержує назву«FastReport» і починає стрімко нарощувати функціональність. Насьогоднішній день FastReport — це цілком візуальний генератор звітів, тобтобільшість звітів можна побудувати, користуючись тільки мишею.
CrystalReport
Популярний пакет генераторазвітів Crystal Report призначений для створення звітів презентабельного видурізного типу: табличні запити до баз даних, створення діаграм, OLAP дані.
Висновок
Курсова роботабула розроблена на основі об’єктно-орієнтованого середовища програмування Delphi. В ході виконання курсовоїроботи були розглянуті основні компоненти які призначені для виводу інформаціїна принтер в середовищі програмування. Було створено приклади програм яківикористовували різні компоненти закладки QReport. Зокрема було створено додаток, якийдозволяє працювати із графічним звітом, звітом створеним на основі баз даних,та звітом, який друкує текстову інформацію з поля Memo.
Списоквикористаної літератури:
Друкованіджерела:
1. Delphi 7. Для профессионалов, Кенту М.,Издательство Питер. 2004, Книга, 1101 с.
2. Программирование в среде Delphi 7. Глушаков С. В., Клевцов А. Л.Изд. 2-е дополненное м переработанное. –Харьков, 2003, 528с.
3. Программирование в Delphi 6. Архангельский А. Я.
Інтернетресурси:
4. www.delphimastak.ru
5. www.delphimaster.ru
6. www.delphi.narod.ru