Кросс бэнды для новичка !!!

starcomputerstarcomputer Украина, Донецк
отредактировано 01:42 Раздел: FastReport 2.xx VCL
;) Помогите кто-нибудь разобраться новичку с кросс-бэндами.

Насколько я понял из документации (а больше из форума), чтобы создать отчет с кросс-бэндами, нужно сначала препарировать все данные, создать уже готовый запрос, в котором все уже просуммировано, а затем уже строить отчет ??? ;)
Но тогда зачем все эти кросс-бэнды ? Такой отчет можно создать одним простым запросом с помощью TRANSFORM ..... PIVOT операторов.
Наверно я все таки чего-то не понял (хоть бы разработчики дали в демке пример с базой данных, а не отвлеченное нумерование столбцов).

А задача такая, есть большая база данных, есть запрос, который выбирает из нее ВСЕ.
Поля базы (к примеру):
Область, Город, Район, Количество_жителей.
Как с помощью кросс-бэндов получить допустим такую таблицу:

Город1 Город2 Город3 ....
Область1 - Cell -
Область2
Область3

Cell - это понятно суммарное количество жителей.
Пробовал уже как угодно, даже по одному из обсуждений в форуме создал запрос DISTINCT Область FROM DataBase ;)
Однако результат один и тот же либо ничего, либо получаю первую из областей и длинный список цифр каждый раз начинающийся с новой страницы (этак страниц на 200), либо при обработке отчета где-то на 500-600 странице виснет DELPHI.
Ни разу распределения не получил, хотя-бы какого нибудь.
Можно конечно и создать специальные запросы но ....

Очень прошу подкидывать любые идеи, а то времени мало ;)
Можно на ящик starcomputer@narod.ru

С уважением и ожиданием, Сергей.

Комментарии

  • отредактировано 01:42
    написал:
    А задача такая, есть большая база данных, есть запрос, который выбирает из нее ВСЕ.
    Поля базы (к примеру):
    Область, Город, Район, Количество_жителей.
    Как с помощью кросс-бэндов получить допустим такую таблицу:

    Город1 Город2 Город3 ....
    Область1 - Cell -
    Область2
    Область3

    Ээээээ ... Это реальный пример или ты его только что придумал ?
    Я вот сижу и думаю - может ли один и тотже город попадать в несколько областей ? ;) ) ИМХО такой кросс отчёт нафиг никому не нужен - могу объяснить почему... У тебя данные c CELL будут заполнены ТОЛЬКО НА ОДНОМ пересечении Область-Город !!!
  • starcomputerstarcomputer Украина, Донецк
    отредактировано 01:42
    написал:
    Ээээээ ... Это реальный пример или ты его только что придумал ?
    Я вот сижу и думаю - может ли один и тотже город попадать в несколько областей ? ) ИМХО такой кросс отчёт нафиг никому не нужен - могу объяснить почему... У тебя данные c CELL будут заполнены ТОЛЬКО НА ОДНОМ пересечении Область-Город !!!

    Ну пример нереальный, но очень близкий.

    ... один город в несколько областей ....
    Город конечно нет, а вот название ....... ;)

    А вообще согласен, пример не очень ;)
    Если нужно другой, то замени поле Город на поле Наименование_банка, а поле Количество_жителей на поле Количество_клиентов_банка.
    Согласись, что филиалы одного и того-же банка могут быть в разных областях и городах.
    Но суть не в этом, мне не важно сколько ячеек будут заполнены (будут конечно и пустые), мне нужно разобраться как вообще построить кросс-отчет (без кросс-таб, это использую сейчас, оставляет желать лучшего) на таком примере.

    Спасибо за интерес к чужим проблемам, это редкость ;) !!!
  • MichaelMichael планета Земля
    отредактировано 01:42
    Честно говоря, проблемы не вижу, ну да ладно ;)
    Мы можем указать источник данных (здесь назначается только один источник данных), с которым будет связан cross-tab object, и расположить поля источника данных по соответствующим полям отчета (заголовкам «header» по вертикали или горизонтали и, собственно, размножаемым ячейкам).
    То есть поле города из твоего примера надро всунуть именно туда.
    Хотелось бы отметить возможность создавать сложные заголовки, что сразу же мгновенно отображается в дизайнере

    По поводу результатов и суммирования:

    Как мы можем видеть, готовый отчет, подобно MS Excel, свободно разбивает на необходимое число страниц. Сходство с MS Excel еще более усиливается тем, что здесь можно задать вывод промежуточных результатов (subtotals), для самих же результатов доступны такие функции:
    Sum – сумма;
    Min – минимальное значение;
    Max – максимальное значение;
    Average – среднее значение;
    Count – число значений.

    Вроде бы всё. Скоро постараюсь статьи выложить на эту тему.
  • starcomputerstarcomputer Украина, Донецк
    отредактировано 01:42
    написал:
    Хотелось бы отметить возможность создавать сложные заголовки, что сразу же мгновенно отображается в дизайнере

    А как !!!
    В строках - понятно ;)
    А в столбцах ?

    Я попробовал сделать вертикальную ориентацию заголовков столбцов и наткнулся на то, что даже при выключенном WordWrap и автоматической ширине слова в заголовке режутся. Похоже высоту заголовка столбца нельзя сделать больше какой-то определенной (какой ?).

    Потом можно ли сделать сложные заголовки столбцов, типа:
    |1111111111111|
    |
    |
    |22222|2222222|
    |
    |
    |33|33|33|33|33|
    |c1|c2|c3|c4|c5 |

    Где с1 - с5 это поля, которые я ввожу в поле ячеек.
    Я пробовал вносить несколько полей в ячейки - выводятся, что ОЧЕНЬ радует, я такое давно искал (TRANSFORM ...... PIVOT увы .... ;) ), но выводятся одно под одним и естественно без подписей.

    С уважением,




  • отредактировано 01:42
    Посмотрите несколько примеров "Advanced cross-tab" из демки demos\reports, там есть и сложные заголовки строк, и столбцов, и то и другое вместе. На 90 градусов поворота нет.
  • starcomputerstarcomputer Украина, Донецк
    отредактировано 01:42
    2 AlexTZ
    написал:
    Посмотрите несколько примеров "Advanced cross-tab" из демки demos\reports, там есть и сложные заголовки строк, и столбцов, и то и другое вместе. На 90 градусов поворота нет.

    Да, верно, есть такая демка. Я уже и раньше рассматривал, но думал, может упустил что ;)

    Дело в том, что как ни крути кросс-таб, такой вот формы:

    Год
    месяц1
    месяц2
    месяц3
    покупка--- покупка-- покупка--
    (сум)
    (ср)
    (кол)
    а
    1000
    100
    10
    б
    800
    90
    12
    в
    900
    80
    11

    из него не получишь.
    А такая форма как раз и более привычна бывшим советским бюрократам, кому мы отчеты сдаем.

    С уважением,
  • отредактировано 01:42
    Да, штатными средствами не получишь. Но если сформировать запрос таким образом, чтобы он сам возвращал сумму/среднее/кол-во - то без проблем.
  • starcomputerstarcomputer Украина, Донецк
    отредактировано 01:42
    написал:
    Да, штатными средствами не получишь. Но если сформировать запрос таким образом, чтобы он сам возвращал сумму/среднее/кол-во - то без проблем.

    А я так их и получаю ! ;)
    А вот как их вывести в виде:


    МЕСЯЦ
    МЕСЯЦ
    МЕСЯЦ

    |
    |
    |
    |
    |
    |
    |
    ПОКУПАТЕЛЬ--СУММА---СРДН---КЛВ----СУММА---СРДН---КЛВ
    |
    |
    |
    |
    |
    |
    |
    альфа
    100
    10
    10
    бета
    200
    20
    10
    гамма
    300
    30
    10
    ........
    |
    |
    |
    |
    ИТОГО:
    600
    60----[X?]

    никак не соображу !
    Да и по моему в ячейку TOTAL ([X?]) нельзя вставить свою формулу ?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.