Курсовая работа: Засоби виводу інформації на принтер в об’єктно-орієнтованому середовищі програмування Delphi

На мал. 9 показаний зразковий вид вікна попереднього перегляду сформованого звіту.

В звіті може застосовуватися і більш складне групування даних, оскільки кожна група може, у свою чергу, мати вкладену групу.

Побудова звіту для зв'язаних наборів даних. У тих випадках, коли потрібно створити звіт на основі даних, одержуваних з декількох таблиць БД, можна здійснити двома способами.

1.За допомогою компонента Query об'єднати дані з декількох таблиць в один набір даних, після чого будувати звіт звичайним чином, аналогічно тому, як було показано вище.

2.Створити кілька наборів даних (по одному на кожну таблицю) і з'єднати ці набори між собою зв'язком майстер-детальний, використовуючи їх властивості MasterSource і Master Fields . Далі для відображення інформації зі зв'язаних наборів даних у звіті застосовуються компонент 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 присвоюється значення Та bl 2 . На цій смузі містяться три компоненти QRDBText, що зв'язуються з полями Mes , Dni і Zarpl таблиці zarplata.db. Нарешті, у поле компонента QRBand2 розміщаються заголовки стовпців, що відповідають відображуваним полям підлеглої таблиці

У результаті з підлеглої таблиці виводиться помісячна інформація про виплату зарплати для кожного співробітника, дані про яке утримуються в головній таблиці.

Композитний звіт. Композитним (складним, складеним) називається звіт, що поєднує в собі кілька простих звітів, що випливають при друці один за іншим.

Для створення композитного звіту використовується компонент QRCompositeReport . Об'єднання звітів здійснюється в оброблювачі події OnAddReport шляхом додавання назв відповідних звітів у список властивості Report даного компонента. Це робиться приблизно в такий спосіб:

Procedure TForm3.QRCompositeReportlAddReports (Sender: TObj ect);

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 - це цілком візуальний генератор звітів, тобто більшість звітів можна побудувати, користуючись тільки мишею.

Crystal Report

Популярний пакет генератора звітів Crystal Report призначений для створення звітів презентабельного виду різного типу: табличні запити до баз даних, створення діаграм, OLAP дані.


Висновок

К-во Просмотров: 249
Бесплатно скачать Курсовая работа: Засоби виводу інформації на принтер в об’єктно-орієнтованому середовищі програмування Delphi