Създаване на отчет, групиращ записите по определено поле

Да предположим, че имаме следната работа:

Създайте отчет въз основа на таблицата „Книги“, групирайте записи по област на знанието, изчислете цената на книгите за всеки код на книга, за група записи от една и съща област на знанието и отчета като цяло:

Списък с книги

Код на книгатаИмеавториБрой копияЦенаЦената на книгите
Област на знанието
Обща сума
общо

Процедурата за създаване на отчет с групиране на записи е следната.

1. Първоначално трябва да създадете заявка за избор на данни от таблиците Раздели знания (Razd_zn) и Книги (Knigi) със създаване на изчисленото поле „Цена на книги“ и сортиране на данните по полето „Област знания“.

За да създадете заявка, поставете компонентаQuery от разделаBDE в главната форма - . В свойството DataBaseName изберете името на базата данни. В SQL свойството на компонента въведете заявка от следната форма (като щракнете върху бутона …):

ИЗБЕРЕТЕ R.R_zn, K.Sh_kn, K.Nazv, K.Avt, K.Kol_ikz, K.Zena, (K.Zena*K.Kol_ikz) Като Стоим

ОТ Knigi K, Razd_zn R

Където K.Kod_r = R.Kod_r

ПОРЪЧКА ОТ R.R_zn

Активирайте заявката, като изберете свойството Active - true.

2. След като създадете заявката, поставете компонентаRvQueryConnections от разделаRave в главната форма - . В свойствотоQuery трябва да посочите името на заявката -Query1.

3. След това трябва да отидете до помощната програма за отчитанеRaveDesigner, като изберете елементите от менютоИнструменти/Rave Designer.

По-нататъшните действия се извършват от помощната програмаRave Designer.

4. Ако се отвори отчет при зареждане наRave Designer, изберете елементаменюФайл/Ново. Ще се отвори прозорец за създаване на нов отчет.

Следващата стъпка е дасъздадете източник на данни за отчета. За да направите това, изберете елемента от менютоФайл/Нов обект с данни. В отворения прозорец със списък изберетеDirect Data View и щракнете върху бутона "Next ". В прозореца, който се показва, изберетеRvQueryConnection1 и щракнете върху бутона "Край ".

5. След това трябва да създадете структурата на отчета. КомпонентътРегион от разделаОтчет трябва да бъде поставен върху празната област на отчета - . Всички компоненти на структурата на данните на отчета ще бъдат приложени към този компонент. Компонентът Region (сив) трябва да се плъзга през целия бял лист, оставяйки малки бели полета.

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

Band1 - тук ще бъде поставено заглавието на доклада;

Band2 - заглавка на отчетната таблица;

Band3 – стойност на полето за групиране на отчетните данни;

DataBand1 - отчетни данни;

Band4 - общо по групи отчетни данни;

Band5 - общият резултат според отчета.

7. Сега трябва да зададете свойствата на компонентите на структурата на отчета.

За компонентаBand1 изберете свойствотоBandStyle и щракнете върху бутона. В прозореца, който се отваря, в групата опцииМестоположение за печат активирайте опциятаЗаглавка на основния текст. По същия начин активирайте опцията:

заBand2 - Заглавка на ред;

заBand3 - Заглавие на група;

заBand4 - Долен колонтитул на група;

заBand5 - Долен колонтитул на тялото.

За компонентаDataBand1 задайте свойствотоDataView наDataView1 (или DataView2, в зависимост от името на източника на данни).

8. ВключеноКомпонентиBand1 иBand2 (заглавка и заглавка на таблицата на отчета), поставете компонентитеText от разделаStandard ( ) и задайте необходимите стойности за тях (например: в свойствотоText посочете името; в свойствотоFont изберете шрифта MS Sanc Serif и други характеристики на шрифта; вF ontJustify свойство, посочете подравняване nie). За да начертаете заглавката на таблицата, използвайте компонентитеHLine иVLine от разделаDrawing ( и ).

9. КомпонентитеBand3 иBand4 се използват за задаване на заглавката на групата и общата сума. В свойствотоGroupDataView на двата компонента трябва да посочитеDataView1 (или друг източник на данни), а в полетоGroupKey - R_zn (R_zn е полето "Knowledge Section", по което ще бъдат групирани данните). В полетоControllerBand трябва да посочитеDataBand1 (областта с данни, която ще бъде групирана).

За да покажете стойността на полето за групиране на компонентаBand3, поставете компонентаDataText от разделаОтчет ( ). В неговите свойстваDataView иDataField трябва да посочите източника на данни (DataView1 или друг) и съответно R_zn.

10. Поставете компонентитеDataText върху компонентаDataBand1, за да покажете стойностите на полетата с данни на таблицата. В неговите свойстваDataView иDataField посочете източника на данни (DataView1 или друг) и изберете името на полето от списъка. Освен това, за да изчислите общата сума за полето "Разходи" наDataBand1, поставете компонентаCalcController от разделаОтчет ( ). Това е невидим компонент - неговите свойства могат да бъдат достъпни само през дървото на обектите (разположено от дясната страна на екрана). В товаслучай, промяната на свойствата на този компонент не е необходима.

11. Поставете компонентаCalcText от разделаОтчет ( ) върху компонентаBand4 (общо по групи). В свойствотоDataView посочете източника на данни (DataView1 или някое друго), в свойствотоDataField -Stoim (полето "Cost"), в свойствотоController -CalcController1 (за да свържете полето с областта с данни).

12. Подобни операции трябва да се извършат с компонентаBand5 (обща сума), като върху него се постави компонентътCalcText (настройките на неговите свойства ще бъдат същите).

13. Можете също да добавите поредица от обяснителни надписи (компонентТекст ).

14. След това запазете отчета, като използвате командата от менютоФайл/Запазване, като дадете име на файла на проекта (напримерПроект1.rav илиПроект2.rav или друго).

Затворете помощната програмаRaveDesigner и се върнете към Delphi.

Изгледът на отчета в режим на редактиране е показан на фиг. 5.1.

групиращ
Фиг. 5.1. Изглед на отчет в режим на редактиране

15. След това трябва да поставите компонентаRvProject от разделаRave ( ) във формата, където се намира главното меню. В неговото свойствоProjectFile посочете името на файла на проекта на отчета и пътя до него.

16. Създайте в програмата манипулатор за натискане на бутон или избор на елемент от менюто (например двукратно щракване върху елемент от менюто) и включете следния ред в него:

RvProject1.Execute; (или RvProject2.Execute;)