Проблема при использовании Sum

отредактировано 04:24 Раздел: FreeReport
здравствуйте, уважаемые!

давеча решил попробовать FreeReport, и по ходу наткнулся на одну багу. в отчёте я использовал агрегатную функцию Sum (что-то вроде [Sum([field3]*[field4])], а также [Sum([field3])]. и в том и другом случае результат содержал сумму правильного значения и значения в первой строке обрабатываемого набора данных. полазив в отладчике минут пять по коду, пришёл к выводу, что агрегатная функция вызывается дважды для первой строки. причём в первый раз значения беруться до вызова метода GetValue.

конечно, я допускаю, что сделал что-то не то, будучи ещё мало знаком с этими компонентами, но тем не менее, даже если это фича, а не бага, если на эти грабли наткнулся я, кто-то другой тоже обязательно на них наткнётся.

если кому-то будет интересно, могу выложить или прислать тестовый проект (он очень маленький), а также более подробно описать контекст.

а может быть, кто-то даже знает решение.

Комментарии

  • отредактировано 04:24
    Нашёл проблему и её решение сам. я просто не указал при вызове sum, что необходимо суммировать только по конкретному бэнду. короче, сам дурак, пропустил второй параметр. хотя, конечно, побочный эффект с точки зрения стороннего наблюдателя странный, нелогичный. если это так важно передать бэнд, над которым надо выполнить агрегатную функцию, почему бы не сделать этот параметр обязательным?

    решение проблемы - передать в качестве второго параметра имя бэнда.

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

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