25.10.2006, 16:19 | #1 |
Участник
|
Наблюдаю уже не раз следующий глюк. Расскажу по порядку.
Был у меня группированный отчёт, который строился по 1-й табличке, имел секции групхеадер, боди, групфутер и группировался по одному полю типа Code. Всё работало и печаталось прекрасно, но затем возникла необходимость группировать по 2-м полям: первое типа Date, второе - то что было раньше. Было добавлено соответствующее поле типа Date в ключ таблицы, этот ключ был выбран в отчёте и подправлено после GroupTotalFields. После этого отчёт стал строить строить непонятно что, т.е. конечно понятно, но не понятно почему. В общем в самом начале он зачем-то печатает 2 одинаковые секции групхеадер вместо положенной 1-й, а в конце также 2 секции групфутер. Подобное я уже подмечал при изхготовлении другого отчёта группирующегося по полю типа Date. Решал извращаясь - отрубал руками через CurrReport.SHOWOUTPUT(FALSE); лишние секции. Это реально глюк или я просто что-то не понимаю и не так делаю? |
|
25.10.2006, 16:30 | #2 |
Участник
|
TOTALSCAUSEDBY - помогает определить, для какого поля из числа тех, по которым группируют данные возникло событие ..
Example If you are designing a report where you group records according to the contents of several fields, and you do not want to output the group header section when the Item field changes, use C/AL code like this in the OnPreSection trigger of the section: IF CurrReport.TOTALSCAUSEDBY = FIELDNO(Item) THEN CurrReport.SHOWOUTPUT(FALSE); |
|
25.10.2006, 16:59 | #3 |
Участник
|
Я этого не знал. Всё хорошо, но ведь если у меня для каждого уникального сочетания 2-х полей по которым группируют должна быть группа с соответствующими секциями, то ведь это совершенно не означает что мне надо исключать вывод для конкретного поля. Мне надо лишь исключать те случаи, когда группа и по одному и по другому полю возникают одновременно, а для этого мне TOTALSCAUSEDBY не будет полезно - всё равно надо извращаться.
|
|
25.10.2006, 18:13 | #4 |
NavAx
|
Да не надо извращаться.
Вот есть у Вас, к примеру, аж 5 штук этих самых груптоталфилдов. В итоге рисуете 5 групфутеров. На первом рисуете поля, которые будут отображать для самого глубоковложенного груптоталфилда и пишете на OnPreSection: CurrReport.SHOWOUTPUT := (TOTALCAUSEDBY = FieldNo(FirstGroupTotalField)); На втором групфутере аналогично, но уже CurrReport.SHOWOUTPUT := (TOTALCAUSEDBY = FieldNo(SecondGroupTotalField)); и т.п. Нужно всего лишь по групфутеру на каждое из груптоталфилдов, а не на каждое уникальное сочетание.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
25.10.2006, 20:38 | #5 |
Участник
|
Да мне собственно нужно было, чтоб на любые сочетания груптоталфилдов выводился 1 хеадер и 1 футер. Решил путём ввода переменной, хранящей значение первичного ключа датаитема. С помощью неё я проверяю выводилась ли секция для данного превичного ключа и если да, то не вывожу её.
|
|