SubReports
Есть проблема,
мне надопечатать несколько вложенных друг в друга отчетов.
На первом subreport'е все нормально, а на втором (вложенном в первый subreport) уже начинаются глюки:
если поставить subreport'у свойство PrintOnParent, то он перестает отображаться, если убрать, то гранийы начинают некорректно печататься.
Как это можно исправить или обойти???
мне надопечатать несколько вложенных друг в друга отчетов.
На первом subreport'е все нормально, а на втором (вложенном в первый subreport) уже начинаются глюки:
если поставить subreport'у свойство PrintOnParent, то он перестает отображаться, если убрать, то гранийы начинают некорректно печататься.
Как это можно исправить или обойти???
Комментарии
сделать больше, т.е. она должна быть не меньше, чем высота данных на текущем MasterData-бэнде + высота MasterData-бэнда 2-го Subreport-а.
При этом у 2-го Subreport-а PrintOnParent = False;
Так по-моему получается. Я так думаю, что границы сбываются из-за того, что данные из Subreport-а не влазят на тот MasterData-бэнд куда они встраиваются.
Необходимо сделать некоторое объединение по определенным столбцам.
необходимо сделать таблицу с несколькими вертикальными объединениями (см. приложенный рисунок).
Есть.
Можно управлять границами Memo и видимостью текста.
Тогда можно для тех ячеек, данные которых не должны повторяться, установить SuppressRepeated:= True;(предварительно нужным образом отсортировав)
А линии рамки устанавливать по алгоритму:
если не начало и не конец датасета и если Memo.Text = '' (а лучше Trim(Memo.Text) = '') then Memo.Frame.Typ:= ftLeft + ftRight
а если начало датасета или Memo.Text <> '', то Memo.Frame.Typ:= ftLeft + ftRight + ftTop
ну и если конец датасета, то то Memo.Frame.Typ:= ftLeft + ftRight + ftBottom
что-то в этом роде
Возникают несколько мелких неприятностей.
Вы не учли случай, когда количество данных превышает одну страницу. В результате вашего алгоритма последняя строчка на странице не будет подчеркнута (если на следущей странице еще идут данные этого же объединения).
Или, если колонки идут по старшенству слева направо, и значение во второй колонке одинаково для первой и второй строк изи первой колонке. В результате получается некрасивое объединение. Придется писать дополнительный код.
Вывод.
В данном случае намного проще и функционалнее использовать подотчеты.
Я, собственно, уже добился желаемого результата (при помощи подотчетов), правда немного кривовато, но отображается именно так как надо.
Просто, очень бы хотелось знать, как это можно сделать не прибегая к шаманству.