Ошибка при делении на нуль

отредактировано 16:10 Раздел: FastReport 3.0
В обектах Мемо содержатся некоторые выражения типа
[<переменная1>/<переменная2>]. Если переменная2 окажется нулем, FR3 выдаст ошибку и откажется строить отчет.

В FR2.XX было иначе: При делении на нуль в результате получался нуль, что хотя и неверно с точки зрения математики, зато удобно - отчет благополучно был построен.

Вопрос. Можно ли как-нибудь настроить FR3, чтобы не выдавал ошибки при делении на нуль и выстраивал отчет? Согласитесь, не удобно постоянно помнить о возможности такой ошибки и расставлять во все обработчики OnBeforePrint условия типа:
If <переменная2><>0 then Memo1.Text:='[<переменная1>/<переменная2>]'
  else Memo1.Text:='-'

Комментарии

  • отредактировано 16:10
    Нет необходимости ставить обработчик, можно сделать так(в memo):
    [IIF((<переменная2> = 0),0,<переменная1>/<переменная2>)]
    
  • отредактировано November 2005
    В принципе [IIF((<переменная2> = 0),0,<переменная1>/<переменная2>)] удобнее, конечно. По сути тоже-самое, просто нагляднее... Спасибо.
  • отредактировано 16:10
    если источник - SQL-сервер типа Oracle, можно прямо в тексте запроса:
    SELECT case when kol = 0 then 0 else summa / kol end cena
    from <myTable>
    
  • xvvxvv
    отредактировано 16:10
    Ага, а если результат это выражение в три километра?
    можно конечно select * from select ..., но когда это уже и так 5й уровень вложености...
    хотя если знаменатель километр или выражение сложное (много знаменателей) - то и правда лучше считать на сервере.

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

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