Оба компонента имеют свойства DataView, DataField и CalcType.

Оба компонента имеют свойства DataView, DataField и CalcType. Два первых определяют набор данных и поле, значения которого будут использоваться при вычислении, третье определяет агрегатную функцию. Функция COUNT может быть применена к полю любого типа, остальные функции определены только для числовых полей.

Чтобы определить момент срабатывания вычислительного компонента, нужно вве­сти в полосу отчета, в которой отображаются значения группы, компонент CalcController (контроллер), отображаемый только в дереве отчета, и ссылку на него поместить в свойство Controller вычислительного компонента. При печати полосы с контрол­лером он передаст ссылающимся на него вычислительным компонентам сообще­ние, которое приведет к срабатыванию компонента, то есть к реализации очередного цикла вычислений. В результате после завершения печати групповых данных вычислительный компонент накопит значение нужной агрегатной функции.

Для оформления итоговой полосы отчета, показан­ного на рис.7, на нее помещаются два вычислительных компонента CalcText. В свойствах DataView обоих компонентов указана ссылка на нуж­ный объект отображения данных (DataView1). Первый компонент подсчитывает общее количество значений поля Company, поэтому его свойство CalcType должно иметь значе­ние ctCount. Второй компонент вычисляет среднее значение поля TaxRate, поэтому для него свойство CalcType задается равным значению ctAverage, а свойства DataView и DataField ссылаются на DataView1 и TaxRate. На полосу DataBandl, в которой отобража­ются данные группы записей, предварительно помещается невидимый компонент CalcController1, и ссылка на него должна быть указана в свойствах Controller вычислительных компонентов. На рис.8 показаны полосы  проекта отчета.

Подпись: Рис.8. Проект отчета с группировкой данных

 

Создание отчета с информацией из главной и подчиненной таблиц с помощью Мастера. Сформируем отчет, выводящий сведения о поставщиках партий (из таблицы Vendors) и поставленных партиях товаров (из таблицы Parts, которая подчинена главной таблице Vendors).  В этом отчете содержатся данные из одной записи главной таб­лицы и все записи связанной с ней подчиненной таблицы. Для подготовки таких отчетов в дизайнере отчетов предусмотрен мастер, который вызывается командой Tools | ReportWizards| Master/DetailReport.

Для создания требуемого отчета выполним следующие действия.

1.           В форму приложения, создаваемого в системе, поместим два компонента  TTableи кнопку, настроим их на связь с главной и подчиненной таблицами в базе данных и генерацию отчета. Связывать компоненты между собой необязательно, так как эта связь будет создана в проекте отчета.

2.           Поместим в форму компонент TRvProject и два связных компонента TRvTableConnectionи свяжем их по отдельности с разными компонентами TTable.

3.           Сохраним проект приложения в отдельной папке (например, Отчет5) командой File | SaveProjectAs.

4.           Запустим утилиту RaveReportsDesigner, создадим новый проект отчета командой File | Newи в новом проекте отчета командой File | NewDataObjectсоздадим два объекта данных DirectDataView, связав их с компонентами RvTableConnection1 и RvTableConnection2, ранее размещенными в форме сохраненного приложения.

5.           Работая в дизайнере отчетов, вызовем Мастер создания отчета (командой Tools | ReportWizards | Master/DetailTable) и с его помощью сгенерируем проект отчета, содержащего все столбцы  таблицы Parts и столбцы VendorName, City, State, Countryтаблицы Vendors (рис.9).

6.           Сохраним в папке, содержащей сохраненный проект приложения, файл проекта отчета командой File | Save, оставив предлагаемое по умолчанию имя Project1.rav

7.           Осуществим предварительный просмотр сформированного отчета, нажав клавишу F9 или выбрав команду File | ExecuteReport(рис.10).

8.           Вернувшись в систему C++Builder, установим в свойстве ProjectFileкомпонента RvProject1 ссылку на файл проекта отчета.

9.           Запустим приложение на выполнение и сформируем отчет, воспользовавшись кнопкой ОТЧЕТ, имеющейся в форме.

 

Ссылка на основную публикацию
Adblock detector