пустое значение агрегатного выражения
Обычный master-detail отчет, агрегатка сумма печатается в DetailFooter
Если выражение написать прямо в Memo7 (назовем способ статическим) то все работает
Если динамически в коде перед печатью отчета вот так:
Memo7.Text := '[SUM(Round(<Query2."SALEPRICE">*<Êóðñ2>/(<Êóðñ1>*<Îêðóãëÿòü äî>))*<Îêðóãëÿòü äî>*<Êîëè÷åñòâî>,DetailData1)]';
то не печатает. (Сорри за кодировку русских переменных. Редактор в фастрепорте оччень нехороший.)
Если одновременно в разных memo вывести статику и динамику по одному и тому же агрегатному выражению и полю то печатаются оба... Но! Если статически вычислить другое агрегатное значение по другому полю Query3."PRICE2" то динамическое по старому полю Query2."SALEPRICE" не вычисляется !!!
Пусто!
FR 3.18 Stable
Если выражение написать прямо в Memo7 (назовем способ статическим) то все работает
Если динамически в коде перед печатью отчета вот так:
Memo7.Text := '[SUM(Round(<Query2."SALEPRICE">*<Êóðñ2>/(<Êóðñ1>*<Îêðóãëÿòü äî>))*<Îêðóãëÿòü äî>*<Êîëè÷åñòâî>,DetailData1)]';
то не печатает. (Сорри за кодировку русских переменных. Редактор в фастрепорте оччень нехороший.)
Если одновременно в разных memo вывести статику и динамику по одному и тому же агрегатному выражению и полю то печатаются оба... Но! Если статически вычислить другое агрегатное значение по другому полю Query3."PRICE2" то динамическое по старому полю Query2."SALEPRICE" не вычисляется !!!
Пусто!
FR 3.18 Stable
Комментарии
Если в мемке есть SUM(<Query2."SALEPRICE">), то такая ф-ция ИМЕННО С ЭТИМ ПОЛЕМ/ВЫРАЖЕНИЕМ будет возвращать значение и в скрипте. Если вам не надо выводить на печать значение агрегатной ф-ции, то просто сделайте Visible-false для мемки и используйте агрегатную ф-цию в скрипте.
Как видно из кода я ничего в скрипте не вычисляю. Я значению Мемо присваиваю то что будет вычилсяться во время генерации отчета... Это строка.
Со стороны отчета это выглядит одинаково... Ну подумайте сами.
Написать я прямо в Мемо руками или перед печатью отчета это сделано из скрипта?
Я описал, что прописаное руками работает, а прописанное из скрипта (тоже самое) - не работает. И если в двух Мемо одно из которых заполнено руками, а другое из скрипта написано одно и тоже выражение - то выводятся оба... Но если разные выражения то выводится только то что записано руками!!!!
Проблема возникла при переносе отчета из версии 2.54 в версию 3.18
В 2.54 все работало в 3.х а именно в 3.18 не работает.
Не в OnBeforePrint для страницы или OnStartReport для отчета, а ИМЕННО В РАЗДЕЛ ИНИЦИАЛИЗАЦИИ.
Связано это с особенностями построения списка вычисляемых выражений с aggregate-функциями.
Кнопка OK вызывает обработчик в котором и происходит присвоение параметров объектам ТЕКСТ. Это является секцией инициализации или нет?
Второе.
На отчете в ФУТЕРЕ два объекта ТЕКСТ
Один содержит выражение вставленное из дизайнера.
Другой пустой, и выражение настраивается именно в этом обработчике.
Если выражения одинаковые - отображаются оба!
Если выражения разные, например разные поля в агрегатке, отображается только первое!
Это особенность или баг?
Я склонен считать это багом. Поскольку в 2.54 это работало, а в 3-ке нет. Причем не однозначно не работает, а "условно" работает.
Спасибо.
В этот объект ТЕКСТ, куда подставляются агрегатки, вручную запердолил все выражения с агрегатками которые у меня могут быть выбраны пользователем... А код оставил, как было. Тормозить стал больше.
Именно выкрутился. Хотя есть еще масса способов. Но другие способы требуют более значительной переработки отчетов, а когда их сотни, терпение кончается быстро.
Я бы сделал что? Момент сканирования отчета на предмет агрегаток я бы вынес непосредственно перед к моменту перед формированием листа. Когда пользователь уже ввел все данные перед построением отчета.
Спасибо.
Сделано.
Спасибо...