Мастер-Деталь на разных Page (Альбомная-Портретная)

отредактировано 06:45 Раздел: FastReport 4.0
Приветствую.

Мне нужно сделать вот что.

Есть Мастер-Деталь запрос. Для него надо построить табличку. Данная табличка строится на листе Альбомного формата.

Но после таблички должны печататся все документы, входящие в эту табличку.

Получается взаимосвзять Master-Detail1-Detail1. Такой пример в Демо примерах фаста есть, он так и зовется )))


Только у меня чуть чуть по другому. Detaile2 должен печататься на листах Портретного вида. И что гораздо хуже в зависимости от типа - должна печататся разная форма !!!...

Отчет, если по сути, прост - табличка в которой указаны позиции кратко (Master-Detail1). Затем должны идти сами накладные (Detail2+чилды -см. ниже, я описал как я сделал что то подобное, но все листы были одного типа).... Просто табличка широкая -должна быть на альбомном листе, а накладные Портретном.... Собсна у мну вопрос как енто сделать...


Совсем недавно, к моему счасть, все страницы в отчете были Портретного режима. Поэтому я сделал данный отчет очень просто - первый Мастер-Деталь стандартно распечатал (просто табличка) - а вот со вторым деталем схитрил (как я указал выше мне нужно в зависимости от типа документа печатать разную форму) - я сделал Detaile2 невидимым а в скрипте сделал простейшую проверку по типу документа - и после чего печатал разные чилды (с помощью Engine.ShowBand (Child1) :) . А уже на чилад были СабРепорты (можно было бы и на чилде нарисовать, но тогда просто некрасиво плучается - отчет становится визуально огромным очень - поэтому на кажом чилде был СабРепорт и уже в саб репорте я печатал форму)!!! Получилось все просто класно и логично с минимумом скриптов.

Ну так вот. А теперь появилась необходимость главную табличку (Мастер-Деталь) сделать Альбомной.... И все рухнуло )))))


Вообще ФастРеп позволяет печатать отчет из различных типов листов. Для этого нужно просто создать новый Page и указать его тип. Но я застрял (((((((( Я кинул чилд на каждый из листов (думал что при печати чилда - он распечатается с настройкаими того Листа, на котором расположен)... НО НЕТ, оказалось не так (((((( Чилд распечатался с настройками того листа, который печатал чилда (даже не смотря на то, что чилд распологался на отдельном листе, у которого НЕ СТОЯЛО настройки Печатать на предыдущем листе, и также у чилда был включен параметр StartNewPAge)....



Собственно в этом и вопрос - как распечатать разные страницы отчета Связаные связью Мастер-Деталь (объекты page) в зависимости от типа.


Сейчас две проблемы у меня:
1.Думал сделать это с поомщью датасетов - но там проблема что надро привязать их сущностью Мастер-Деталь, но в Фасте Репорте на новой странице нельзя распологать детальные датасеты сами посебе !!!!!!! Т.е. там обязательно должны быть Датасеты первого уровня !!!!
2. Соотвественно если не привязывать Мастер-Деталью, то предпологаю что нужно использовать Мастер датасет с 1 виртуальной записью. Но тогда надо как то решать проблему того, что как то печатать только нужный датасет (ну на примере чилда у меня в описании... Как то так... Сам пока не придумал как сделать на Датасетах это)


Если что то не понятно в задаче могу уточнить что не ясно...

Комментарии

  • отредактировано 06:45
    Я наваял рисунок - надеюсь он поможет понять что мне нужно.


    На рисунке идет снчалоа обычнейший мастер-деталь в виде таблицы на альбомном листе. А вот затем идет интересное - затем идут опять детали, но развернутые в Портретном виде. И все бы ничего - но эти вот вторые детали могут состоять из различных типов листов. Т.е. в зависимости от типа - должна печататся своя форма.

    Еще раз отмечу что пока весь отчет состоял из единого формата листов - все решалось ОЧЕНЬ просто - я просто кидал второй дата-бенд, на нем ничего не печатал, а в его скрипте делал проверку по типу и печатал нужный Чилд-бенд... А вот после смены листов такое уже не работает ((((( Оказалось что чилд (даже если он кинут на другой Page, у которого другие параметры листа) печатается на том листе и с теми параметрами - на кототором дана команда Engine.ShowBand

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

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