Створення звіту з групуванням записів за певним полем

Припустимо, що є таке завдання:

Створити звіт на основі таблиці «Книги», записи згрупувати по області знань, розрахувати вартість книг по кожному шифру книги, по групі записів з однакової галузі знань та відомості загалом:

Список книг

Шифр книгиНазваАвториКількість екз.ЦінаВартість книг
Область знань
Разом
Загальний підсумок

Порядок створення звіту із групуванням записів наступний.

1. Спочатку, слід створити запит на вибірку даних із таблиць Розділи знань (Razd_zn) і Книги (Knigi) зі створенням обчислюваного поля «Вартість книг» та сортуванням даних по полю «Область знань».

Щоб створити запит, необхідно помістити на головну форму компонентQuery із закладкиBDE - . Як DataBaseName вибрати ім'я бази даних. Як SQL компонент слід ввести запит наступного виду (клацнувши по кнопці …):

SELECT R.R_zn, K.Sh_kn, K.Nazv, K.Avt, K.Kol_ikz, K.Zena, (K.Zena*K.Kol_ikz) As Stoim

FROM Knigi K, Razd_zn R

Where K.Kod_r = R.Kod_r

ORDER BY R.R_zn

Активувати запит, вибравши як Active - true.

2. Після створення запиту слід помістити на головну форму компонентRvQueryConnections із закладкиRave - . У його властивостіQuery необхідно вказати ім'я запиту -Query1.

3. Потім необхідно перейти в утиліту створення звітівRaveDesigner, вибравши пункти менюTools/Rave Designer.

Подальші дії здійснюються утилітоюRave Designer.

4. Якщо під час завантаженняRave Designer відкрився якийсь звіт, слід вибрати пунктменюFile/New. Відкриється вікно створення нового звіту.

Наступний крок –створення джерела даних для звіту. Для цього вибирають пункт менюFile/New Data Object. У вікні зі списком необхідно вибратиDirect Data View і натиснути кнопку «Next ». У вікні слід вибратиRvQueryConnection1 і натиснути кнопку «Finish ».

5. Далі потрібно сформувати структуру звіту. На порожню область звіту слід помістити компонентRegion із закладкиReport - . Усі компоненти структури даних звіту наноситимуться на цей компонент. Компонент Region (сірого кольору) слід розтягнути по білому аркушу, залишивши невеликі білі поля.

6. На компонентRegion потрібно помістити кілька компонентівBand та один компонентDataBand із закладки Report - і в наступному порядку.

Band1 – тут розміщуватиметься заголовок звіту;

Band2 – шапка таблиці звіту;

Band3 – значення поля угруповання даних звіту;

DataBand1 – дані звіту;

Band4 - результат за групами даних звіту;

Band5 – загальний результат за даними звіту.

7. Тепер потрібно налаштувати властивості компонентів структури звіту.

Для компонентаBand1 слід вибрати властивістьBandStyle і клацнути по кнопці . У вікні в групі опційPrint Location треба включити опціюBody Header. Аналогічно слід увімкнути опцію:

дляBand2 – Row Header;

дляBand3 – Group Header;

дляBand4 – Group Footer;

дляBand5 – Body Footer.

Для компонентаDataBand1 необхідно у властивостіDataView вказати значенняDataView1 (або DataView2, залежно від імені джерела даних).

8. НакомпонентиBand1 іBand2 (заголовок та шапка таблиці звіту) слід розмістити компонентиText із закладкиStandard ( ) і задати їм необхідні значення ( наприклад: у властивостіText вказати назву; у властивостіFont вибрати шрифт MS Sanc Serif та інші характеристики шрифту; у властивостіFontJustify вказати вирівнювання). Для промальовування шапки таблиці слід скористатися компонентамиHLine іVLine із закладкиDrawing ( і ).

9. Для налаштування заголовка та підсумку групи використовують компонентиBand3 таBand4. У властивостіGroupDataView обох компонентів слід вказатиDataView1 (або інше джерело даних), а в поліGroupKey – R_zn (R_zn - це поле «Розділ знань», якому здійснюватиметься угруповання даних). У поліControllerBand слід вказатиDataBand1 (область даних, яка групуватиметься).

Для виведення на екран значення поля групування на компонентBand3 слід помістити компонентDataText із закладкиReport ( ). У його властивостяхDataView таDataField слід вказати джерело даних (DataView1 або якийсь інший) і R_zn відповідно.

10. На компонентіDataBand1 слід розмістити компонентиDataText для відображення значень полів даних таблиці. У його властивостяхDataView таDataField слід вказати джерело даних (DataView1 або якийсь інший) і вибрати ім'я поля зі списку. Також для підрахунку підсумкової суми по полю «Вартість» наDataBand1 слід помістити компонентCalcController із закладкиReport ( ). Він є невидимим компонентом – до його властивостей можна звернутися лише через дерево об'єктів (перебуває у правій частині екрана). В данномуУ разі зміни властивостей цього компонента не потрібно.

11. На компонентіBand4 (підсумок груп) слід розмістити компонентCalcText із закладкиReport ( ). У його властивостіDataView слід вказати джерело даних (DataView1 або якийсь інший), у властивостіDataFieldStoim (поле «Вартість »), у властивостіController -CalcController1 (щоб зв'язати поле з областю даних).

12. Аналогічні операції слід зробити і на компонентіBand5 (загальний підсумок), помістивши на ньому компонентCalcText (налаштування його властивостей будуть такими ж).

13. Можна також додати ряд написів, що пояснюють (компонентText ).

14. Далі слід зберегти звіт за допомогою команди менюFile/Save, задавши файл проекту будь-яке ім'я (наприкладProject1.rav абоProject2.rav, або якесь інше).

Закрити утилітуRaveDesigner і повернутися до Delphi.

Вигляд звіту як редагування представлений на рис. 5.1.

створення
Мал. 5.1. Вигляд звіту в режимі редагування

15. Потім слід помістити на форму, де знаходиться головне меню, компонентRvProject із закладкиRave ( ). У його властивостіProjectFile слід вказати ім'я файлу проекту звіту та шлях до нього.

16. Створити в програмі обробник натискання будь-якої кнопки або вибору пункту меню (наприклад, подвійне клацання по пункту меню) і включити до нього наступний рядок:

RvProject1.Execute; (або RvProject2.Execute;)