Формат числа

отредактировано 10:47 Раздел: FastReport 3.0
Есть вот такая строка и она работает
Memo14.Text := 'Итого по [DriverReportData."FNAME"] перерасход [FormatFloat(''0.00'',<SUM(<DriverReportData."DFUELCOUNT">, DetailData1>)]';
Но мне нужно вывести значение противоположное сумме. Не могу понять куда поставить знак "-" чтобы всё заработало. куда не ставлю у меня всё время вываливаются ошибки при выполнеии скрипта
Если же не использовать форматирование то можно написать
[-SUM(<DriverReportData."DFUELCOUNT">, DetailData1>)]
то всё работает нормально

Комментарии

  • отредактировано 10:47
    И ещё попутно вопрос на тему форматирования
    Расход [b][CommonFuelData."FuelType"][/b] с [b][FormatDateTime('dd.mmmm.yyyy',<CommonFuelData."FDate">)][/b] по [b][FormatDateTime('dd.mmmm.yyyy',<CommonFuelData."SDate">)][/b]
    
    При попытке сформировать отчёт выдаёт ошибку

    Memo1: Error in expression 'FormatDateTime('dd.mmmm.yyyy',<CommonFuelData."FDate">)': ')' expected

    Что я пишу не так?
  • отредактировано 10:47
    по второму вопросу: скорее всего, язык скрипта - C++Script (на PascalScript все ок), а значит, выражения надо писать на нем (вместо 'dd.mmmm.yyyy' надо "dd.mmmm.yyyy").
  • отредактировано 10:47
    AlexTZ написал:
    скорее всего, язык скрипта - C++Script (на PascalScript все ок), а значит, выражения надо писать на нем (вместо 'dd.mmmm.yyyy' надо "dd.mmmm.yyyy").
    И правда а я и не заметил что у меня с++ стоит. Благодраю
    А вот что с первым делать
  • отредактировано 10:47
    написал:
    А вот что с первым делать
    Так пробовал?
    Memo14.Text := 'Итого по [DriverReportData."FNAME"] перерасход -[FormatFloat(''0.00'',<SUM(<DriverReportData."DFUELCOUNT">, DetailData1>)]'
    
  • отредактировано 10:47
    Пробовал не работает
  • отредактировано 10:47
    Еще, в выражении неправильно расставлены скобки: в самом конце перепутаны местами угловая и круглая. Да и SUM заключать в угловые не обязательно.
  • отредактировано 10:47
    Noskov написал:
    Еще, в выражении неправильно расставлены скобки: в самом конце перепутаны местами угловая и круглая. Да и SUM заключать в угловые не обязательно.
    В данном случае SUM нужно заключать в угловые. А выражение я действительно немного неправильно написал. На самом деле оно у меня выглядит вот так
    [code]
    Memo14.Text := 'Итого по [DriverReportData."FNAME"] Перерасход [FormatFloat(''0.00'',<SUM(<DriverReportData."DFUELCOUNT">, DetailData1)>)]';

    Но сути дела это не меняет. Всё равно не работает
  • отредактировано 10:47
    SUM уже давно не требуется заключать в угловые. Тут, скорее всего, другое - агрегатные ф-и парсятся при старте отчета. Если описанный код выполняется в главном скрипте, то все должно сработать, если в каком-то из событий, то агрегатная ф-я будет просто не видна ядру.
  • отредактировано 10:47
    SUM вызывается из OnBeforePrint. Однако всё расчитывается нормально.
    Проблема в том что есть строка
    Memo14.Text := 'Итого по [DriverReportData."FNAME"] Перерасход [FormatFloat(''0.00'',SUM(<DriverReportData."DFUELCOUNT">,DetailData1))]';
    
    Как сделать чтобы выводилось чисто обратное получившейся сумме.
  • отредактировано 10:47
    Если рассчитывается нормально - значит, в момент старта отчета такая агрегатная ф-я уже где-то в отчете фигурирует.
    Я же имею в виду следующее: если сделать, к примеру, в ReportTitle.OnBeforePrint что-то типа Memo2.Text := '[SUM(1)]' где Memo2 - мемка на reportsummary, не увидите ничего. Потому что в момент парсинга агрегатов (при старте отчета) мемка была еще пустая. Скрипт же не парсится.
  • отредактировано 10:47
    Ну с этим более менее понятно, однако вопрос так и остался открытым:
    Как сделать чтобы выводилось чисто обратное получившейся сумме?
  • отредактировано 10:47
    -[SUM]
    [-SUM]
  • отредактировано 10:47
    Заработало таким вот образом, странно раньше так же вроде пробовал делать не получалось
    Memo14.Text := 'Итого по [DriverReportData."FNAME"] Перерасход
    [FormatFloat(''0.00'',-SUM(<DriverReportData."DFUELCOUNT">,DetailData1))]';

    Благодарю за помощь

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

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