Заполнение таблицы вручную |
Как мы уже знаем, есть две разновидности кросс-таблицы: объекты "Кросс-таблица БД" и "Кросс-таблица". Все это время мы работали с первым объектом, который привязывается к данным из таблицы БД и автоматически заполняет себя при запуске отчета. Рассмотрим второй объект – "Кросс-таблица".
Этот объект не привязан к данным из БД. Вы должны сами позаботиться о заполнении таблицы данными. У этого объекта похожий редактор, только здесь вместо полей БД надо выбрать количество измерений в заголовках таблицы и в ее ячейках:
Рассмотрим работу с объектом "Кросс-таблица" на примере. Положим на лист отчета объект и настроим его свойства так, как показано на предыдущем рисунке: количество уровней в заголовке строк – 1, в заголовке колонок – 2, в ячейке – 1. Чтобы заполнить таблицу данными, воспользуемся обработчиком события OnBeforePrint объекта:
PascalScript:
procedure Cross1OnBeforePrint(Sender: TfrxComponent); begin with Cross1 do begin AddValue(['Ann'], [2001, 2], [1500]); AddValue(['Ann'], [2001, 3], [1600]); AddValue(['Ann'], [2002, 1], [1700]);
AddValue(['Ben'], [2002, 1], [2000]);
AddValue(['Den'], [2001, 1], [4000]); AddValue(['Den'], [2001, 2], [4100]); end; end;
C++ Script:
void Cross1OnBeforePrint(TfrxComponent Sender) { Cross1.AddValue(["Ann"], [2001, 2], [1500]); Cross1.AddValue(["Ann"], [2001, 3], [1600]); Cross1.AddValue(["Ann"], [2002, 1], [1700]);
Cross1.AddValue(["Ben"], [2002, 1], [2000]);
Cross1.AddValue(["Den"], [2001, 1], [4000]); Cross1.AddValue(["Den"], [2001, 2], [4100]); }
В обработчике необходимо добавить нужные данные в таблицу с помощью метода TfrxCrossView.AddValue. Этот метод имеет три параметра, каждый из которых является массивом значений типа Variant. Первый параметр – это значения строки, второй – значения столбца, третий – значения ячеек. Заметьте – количество значений в каждом массиве должно соответствовать настройке объекта! В нашем случае объект имеет один уровень в заголовке строк, два уровня в заголовке колонок и один уровень ячеек – соответственно, мы передаем в AddValue одно значение для строк, два значения для столбцов и одно значение для ячеек.
Запустив отчет на выполнение, мы увидим следующее:
Метод AddValue можно точно так же использовать для объекта "Кросс-таблица БД". Это позволяет добавлять в кросс-таблицу данные, которых нет в источнике данных, привязанном к объекту. Либо, если такие данные есть, они суммируются с данными из таблицы.
|