Вычисление значения формулы в Memo

отредактировано 23:01 Раздел: FastReport 4.0
Добрый день, люди знающие! Подскажите пожалуйста выход из такой ситуации: у меня есть поле Memo, в котором содержится формула примерно следующая [(<Otkos."SUM">+<P_per."P_PER">*('+IntToStr(zp_otkos)+'+('+IntToStr(zp_zadelka)+'*<Shov_2."COUNT">)))*<Otkos2."COUNT">]. В зависимости от значений <P_per."P_PER">, <Shov_2."COUNT"> и <Otkos2."COUNT"> значение формулы, вычисляемое выводимое в итоге в Memo, может быть разным. А эти переменные параметры берутся SQL-запросами из БД. Соответственно, для каждой записи из БД итоговое значение будет разным. Мне нужно просуммировать итоговые значения по N записям из БД. Как мне это можно сделать? Мне представляется вариант с накоплением в глобальную переменную суммы по ходу первого прохода построения отчета. Но как вычислить эту формулу для каждого набора данных?
Или, может, есть другой путь и я зациклился на этом варианте решения и не вижу его?
Подскажите пжлст!

Комментарии

  • FokewolfFokewolf Киев
    отредактировано 23:01
    soap написал: »
    Добрый день, люди знающие! Подскажите пожалуйста выход из такой ситуации: у меня есть поле Memo, в котором содержится формула примерно следующая [(<Otkos."SUM">+<P_per."P_PER">*('+IntToStr(zp_otkos)+'+('+IntToStr(zp_zadelka)+'*<Shov_2."COUNT">)))*<Otkos2."COUNT">]. В зависимости от значений <P_per."P_PER">, <Shov_2."COUNT"> и <Otkos2."COUNT"> значение формулы, вычисляемое выводимое в итоге в Memo, может быть разным. А эти переменные параметры берутся SQL-запросами из БД. Соответственно, для каждой записи из БД итоговое значение будет разным. Мне нужно просуммировать итоговые значения по N записям из БД. Как мне это можно сделать? Мне представляется вариант с накоплением в глобальную переменную суммы по ходу первого прохода построения отчета. Но как вычислить эту формулу для каждого набора данных?
    Или, может, есть другой путь и я зациклился на этом варианте решения и не вижу его?
    Подскажите пжлст!

    А IF THEN Memo.Text :=... ELSE IF THEN Memo.Text :=... ELSE Memo.Text :=... в коде скрипта не подойдет?
  • отредактировано 23:01
    Добрый день.
    Нашел решение проблемы. Пошел совершенно другим путем. Если кому интересно, могу поделиться.
    В обработчике события onBeforePrint для страницы написал цикл по всем отсортированным записям, внутри которого высчитывал для каждой итерации (по сути - записи) значение формул, подставляя в них результаты sql-запросов из базы. Таким образом, накапливал в глобальную переменную сумму получаемых значений, которую потом вывел в отдельном мемо.

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

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