Странное поведение Detaildata + Groupfooter
Добрый день!
Столкнулся со следующей проблемой :
Создан отчет, в котором есть GroupHeader*,MasterData, DetailData, GroupFooter*.
* - GroupHeader в отчет не выводится, в нем нет никаких полей из датасэтов.
* - В GroupFooter вычисляемое поле (SUM по всем записям и их значениях в колонке в DetailData).
Работает все замечательно, но иногда возникают странные ситуации , причина появления которых, мне не понятна, а именно :
К MasterData приклеиваются не DetailData, как должно быть, а значения MasterData следующей записи.
Прикладываю 2 скриншота:
Как должно работать, и собственно как работает.
Неправильное поведение, которое иногда возникает.
Буду благодарен за любой совет!
Столкнулся со следующей проблемой :
Создан отчет, в котором есть GroupHeader*,MasterData, DetailData, GroupFooter*.
* - GroupHeader в отчет не выводится, в нем нет никаких полей из датасэтов.
* - В GroupFooter вычисляемое поле (SUM по всем записям и их значениях в колонке в DetailData).
Работает все замечательно, но иногда возникают странные ситуации , причина появления которых, мне не понятна, а именно :
К MasterData приклеиваются не DetailData, как должно быть, а значения MasterData следующей записи.
Прикладываю 2 скриншота:
Как должно работать, и собственно как работает.
Неправильное поведение, которое иногда возникает.
Буду благодарен за любой совет!
Комментарии
Здесь важно именно правильно настроить наборы данных.
У меня Detail-отношения используются постоянно, никаких проблем пока не возникало. Использую FIBPlus в качестве датасетов.
Хочу прояснить ситуацию.
Итак, если мы сформируем отчет по всем записям, мы увидим сформированный отчет.
Записи будут выглядеть примерно так:
На данном скриншоте мы видим что все сформировано правильно,
к каждой записи MasterData, их 2 (красный прямоугольник) относится какое-то количество записей DetailData(зеленый прямоугольник).
Прошу обратить внимание, как только цикл закончился по записям DetailData относящимся к MasterData - формируется GroupFooter, в котором присутствует поле
'Общее количество дней на визирование', значение которого находится в обозначенном красном круге.
Это значение - сумма цифр в оранжевых кругах.
Так же немаловажно отметить что после формирования GroupFooter можно увидеть отступ, по отношению к следующей записи MasterData.
Пролистав далее сформированный отчет, находим ту самую ситуацию:
Видим что так же как и на первом скриншоте , записей MasterData - две.
НО! Самое интересное как именно они организованы.
В красном прямоугольнике - MasterData запись номер 1. Будем принимать ее за Record1.
Относительно Record1 - 3 записи DetailData(зеленый прямоугольник).
Собственно на 3 итерации DetailData, FastReport должен был закончить приклеивать записи к Record1 и отрисовать GroupFooter и сделать отступ.
Этого к сожалению не произошло и мы видим что желтый прямоугольник - еще одна запись MasterData(Record2) приклеенная к Record1.
Что не мало важно, так это то, что к Record2 так же соответствуют две записи DetailData
Далее в оранжевом прямоугольнике мы видим сумму значений последней колонки справа всех записей DetailData, как относящихся к Record1 так и к Record2,
что является в корне неправильным поведением.
Надеюсь, я прояснил ситуацию.
Что самое интересное, причину появления я так и не установил и закономерность появления мне до сих пор не понятна.
То есть, ситуация может не появится в отчете где миллион записей, но может и произойти где записей всего 50.
https://dropmefiles.com/IbcXY