Построение перекрестной таблицы-шахматки (универсальная функция)

Функция создания перекрестной таблицы (развертки - шахматки) в виде: первые колонки - информационные поля, затем числовые поля с именами N_... (число этих полей каждый раз будет разное), последнее поле - Итого по горизонтали (опционально).

Построение перекрестной таблицы-шахматки (универсальная функция)

Алгоритм: из источника создается промежуточная выборка по заданному условию, в которой методом разворачивания по Информационным полям и полю Группировки производится слияние (группировка) записей с числовой обработкой группы "слитых" строк по Информационному полю на основе выражения (по умолчанию - это SUM). На основе промежуточной отсортированной выборки строится Кросс-таблица путем добавления и заполнения в ней сводных числовых колонок (разворачиванием) по значению Группирующего поля и добавления строк по значению составного ключа нформационных полей.

Функцию можно использовать автономно или в составе Генератора Отчетов DBRAD32 - в качестве предварительно создаваемой таблицы для Кросс-отчета, который "умеет" выводить в Word и форматировать переменное число колонок (т.н. блок числовых колонок), перенося по полосам колонки, не помещающиеся на страницу. Из FLD-файла генератор автоматически загружает заголовки блока числовых колонок, вычисленные в функции. В результате клиент получает законченный отчет для любой выборки из источника данных. Пример такого Кросс-отчета см. на www.dbrad32.narod.ru ("Автономный генератор отчетов"). Функцию построения кросс-таблицы можно вызывать в методе Load Кросс-шаблона или в тексте Макро-шаблона (входящего в составной отчет Макро+Кросс ).

Для демонстрации работы функции распакуйте архив и запустите файл cross.prg.

Выражаю благодарность Юрию Ч. за окончательное тестирование функции.

Автор: Дм.Баянов

Автор публикации

не в сети 3 месяца

admin

Комментарии: 1Публикации: 123Регистрация: 10-12-2000
Вложенные файлы
#
Название
Тип файла
Размер
1 190cross .zip 15,95 КБ
Материалы по теме
Оставить комментарий
//////////////// ///////////////
Авторизация
*
*
Генерация пароля