Search Results for

    Show / Hide Table of Contents

    Заполнение таблицы вручную

    Как мы уже знаем, есть две разновидности кросс-таблицы: объекты "Кросс-таблица БД" и "Кросс-таблица". Все это время мы работали с первым объектом, который привязывается к данным из таблицы БД и автоматически заполняет себя при запуске отчета. Рассмотрим второй объект – "Кросс-таблица".

    Этот объект не привязан к данным из БД. Вы должны сами позаботиться о заполнении таблицы данными. У этого объекта похожий редактор, только здесь вместо полей БД надо выбрать количество измерений в заголовках таблицы и в ее ячейках:

    Рассмотрим работу с объектом "Кросс-таблица" на примере. Положим на лист отчета объект и настроим его свойства так, как показано на предыдущем рисунке: количество уровней в заголовке строк – 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 можно точно так же использовать для объекта "Кросс-таблица БД". Это позволяет добавлять в кросс-таблицу данные, которых нет в источнике данных, привязанном к объекту. Либо, если такие данные есть, они суммируются с данными из таблицы.

    Back to top © 1998-2024 ООО «Быстрые отчеты»