вычисляемое значение

отредактировано 16:41 Раздел: FastReport 4.0
Здравствуйте работаю с FR4.9.32ENT под Delphi 2010 вот, отчет мастердетальный с чартом . хочю сделать вычисление в memo вот и не знаю как сделать в скрипте попытался написать вот это : MEMO17.text:= floatTostr(strTofloat(MEMO6.text)-strTofloat(SysMemo2.text)); но фаст репорт ругается. а суть вопроса в том что я хочу посчитать значение отображаемое [frxDBDDatset1.''Цена_д''] -минус [SUM(<frxDBDataset2."Сумма">,DetailData1)] а как сделать не знаю . во вложении две картинки.

Комментарии

  • gpigpi
    отредактировано 16:41
    Если в <frxDBDDatset1.''Цена_д''> всегда число, то попробуйте так:
    [<frxDBDDatset1.''Цена_д''> - SUM(<frxDBDataset2."Сумма">,DetailData1)]
  • отредактировано 16:41
    gpi написал: »
    Если в <frxDBDDatset1.''Цена_д''> всегда число, то попробуйте так:
    [<frxDBDDatset1.''Цена_д''> - SUM(<frxDBDataset2."Сумма">,DetailData1)]
    <frxDBDDatset1.''Цена_д''> = 12
    SUM(<frxDBDataset2."Сумма">,DetailData1) = 11
    ответ должен быть 1
    а в итоге в отчете вот как 12 - 11 вот мне нужен скрипт который производил арифметические действия
  • gpigpi
    отредактировано 16:41
    написал:
    ответ должен быть 1
    а в итоге в отчете вот как 12 - 11 вот мне нужен скрипт который производил арифметические действия
    Если прописать
    [frxDBDDatset1.''Цена_д''] -минус [SUM(<frxDBDataset2."Сумма">,DetailData1)] ,
    то результат будет 12 - 11
  • отредактировано 16:41
    gpi написал: »
    Если прописать
    [frxDBDDatset1.''Цена_д''] -минус [SUM(<frxDBDataset2."Сумма">,DetailData1)] ,
    то результат будет 12 - 11

    да признаю свою лошарость мы месье были обсалютно правы =))
  • отредактировано 16:41
    Есть вот такой скрипт:

    var DolgFB: Real;

    procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
    begin
    DolgFB:=SUM(<frxFB."SumDolg">,MasterData3);
    end;

    в процессе выполнения возникает ошибка "Could not convert variant of type (Null) into type (Double).
    Что неправильно?
  • gpigpi
    отредактировано 16:41
    написал:
    Использование агрегатных функций в скрипте

    Особенность агрегатной функции – она должна быть использована внутри объекта "Текст", после чего к ней можно обращаться в скрипте. Если использовать агрегатную функцию только в скрипте (без использования в объекте "Текст"), то будет выдано сообщение об ошибке. Так происходит потому, что для корректной работы агрегатной функции она должна быть привязана к определенному бэнду.
  • отредактировано November 2012
    "Использование агрегатных функций в скрипте

    Особенность агрегатной функции – она должна быть использована внутри объекта "Текст", после чего к ней можно обращаться в скрипте. Если использовать агрегатную функцию только в скрипте (без использования в объекте "Текст"), то будет выдано сообщение об ошибке. Так происходит потому, что для корректной работы агрегатной функции она должна быть привязана к определенному бэнду."

    Аналогичная ошибка: "Could not convert variant of type (Null) into type (Double)".

    в скрипте
    ...
    S := SUM(<frxDBDataset1."S17">+<frxDBDataset1."S18">+<frxDBDataset1."S19">,MasterData1,1);
    ...

    На бэнде GroupFooter1 в Memo2
    выражение [SUM(<frxDBDataset1."S17">+<frxDBDataset1."S18">+<frxDBDataset1."S19">,MasterData1,1) #n%2,2f].

    Цитата из документации очень туманна. :)
    Что означает: "Особенность агрегатной функции – она должна быть использована внутри объекта "Текст""
    Можно пример на основе предыдущего или этого поста.

    Спасибо.
  • gpigpi
    отредактировано 16:41
    написал:
    Что означает: "Особенность агрегатной функции – она должна быть использована внутри объекта "Текст""
    Если в скрипте есть
    SUM(<frxDBDataset1."S17">+<frxDBDataset1."S18">+<frxDBDataset1."S19">,MasterData1,1)
    то и в мемо должно быть
    [SUM(<frxDBDataset1."S17">+<frxDBDataset1."S18">+<frxDBDataset1."S19">,MasterData1,1)]
  • отредактировано November 2012
    Спасибо.

    К сожалению, это не всегда срабатывает.
    В последнем отчете пришлось просуммировать поля в запросе в отдельные поля,
    а в бэнде и скрипте проставить эти поля. По одному полю вместо суммы полей.
    Только тогда все заработало.

    На мой взгляд, устанавливать соответствие выражения в бэнде и скрипте не удобно.
    Проще для использования именованные выражения, например, <Memo1.Value> :)

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

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