Если в базе null, то выводить ноль.

отредактировано 12:37 Раздел: FastReport 3.0
Добрый день!
Во-первых, нужно, чтобы вместо пустоты там, где в базе ничего нет, выводился ноль.
Во-вторых, чтобы сумма двух пустых значений тоже отображалась, как 0.
Эти проверки скорее всего нужно делать в OnBeforePrint? Но объктов Memo у меня много, так что желательно назначить им один и тот же обработчик...
Подскажите, пожалуйста, как наиболее рационально и универсально добится цели...
Заранее спасибо, если натолкнёте на разумную мысль.

Комментарии

  • отредактировано 12:37
    написал:
    Подскажите, пожалуйста, как наиболее рационально и универсально добится цели...
    В запросе!!!


    Надо еще учесть, что возможно это строковая переменная, а мы ей число будем присваивать.
  • отредактировано 12:37
    aseroff написал:
    В запросе!!!
    В каком ещё запросе? ;)
  • отредактировано 12:37
    aseroff написал:


    Надо еще учесть, что возможно это строковая переменная, а мы ей число будем присваивать.
    Те поля для, которых я это буду применять содержат числа...
  • отредактировано 12:37
    Пробовал так:
    if <Grants."GRANT_SIZE">=NULL
      then TfrxMemoView(Sender).text:='0';
    
    Нифига ;)
  • отредактировано November 2006
    В дизайнере отчетов (дерево объектов) выберите Report -> EngineOptions и установите ConvertNulls в False.
  • отредактировано 12:37
    Ничего не поменялось ...
  • отредактировано November 2006
    написал:
    Ничего не поменялось ...
    Где меняли в дизайнере отчетов (т.е. в самом отчете) или у компонента отчета TfrxReport ?
  • отредактировано 12:37
    написал:
    Где меняли в дизайнере отчетов (т.е. в самом отчете) или у компонента отчета TfrxReport ?
    Менял в дизайнере отчётов. К тому же если прибить ConvertNulls, то потом сумма хначений двух полей, одно из которых =null не выводится... ;)
    И ваще, наверное подход к этому всему неверный...
  • отредактировано November 2006
    Проблему решил по-другому. С другого конца: всем нужным полям назначил обработчик в Delphi
    procedure TDM.tblGrantsGRANT_SIZEGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      Text:=FloatToStr(Sender.AsFloat);
    end;
    
    И всё. ;)
  • отредактировано December 2006
    А чё через СКЛ запрос нельзя чтоли? Написать в нем что-то типа
    select 
      isnull(t1.myField, 0) craftyField -- :)
    from t1
    
    И всё - если поле не заполнено вернется 0.

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

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