我放一个Memo,输入[adoquery1."price"],在数据库中Price字段是数值型,充许Null。
现在要求当Price值为零或Null时报表输出空白,否则的话输出数值。
如何做?

解决方案 »

  1.   

    1. 在Memo中放入变量,比如[price]
    2. 在下面插入代码
       price:='';
       if [adoquery1."price"]<>0 then
          price:=[adoquery1."price"];
    3. 当然你可以进一步用函数FormatFloat规范输出格式
      

  2.   

    FastReport中,每个字段都有隐藏零值的属性。
      

  3.   

    FastReport中,每个字段都有隐藏零值的属性。其它的实现请参考:procedure TMainForm.frDBDataSet1Next(Sender: TObject);
    begin
        if RadioButton1.Checked = True then
        begin
            if (DM.BB_ADOQuery.Fields[0].Value = 2) or (DM.BB_ADOQuery.Fields[0].Value = 3)
            or (DM.BB_ADOQuery.Fields[0].Value = 4) or (DM.BB_ADOQuery.Fields[0].Value = 6) or (DM.BB_ADOQuery.Fields[0].Value = 7)
            or (DM.BB_ADOQuery.Fields[0].Value = 9) or (DM.BB_ADOQuery.Fields[0].Value = 10) or (DM.BB_ADOQuery.Fields[0].Value = 12)
            or (DM.BB_ADOQuery.Fields[0].Value = 14) or (DM.BB_ADOQuery.Fields[0].Value = 15) or (DM.BB_ADOQuery.Fields[0].Value = 17)
            then
                frReport1.FindObject('line21').Visible := False
            else
                frReport1.FindObject('line21').Visible := True;
            if DM.BB_ADOQuery.Fields[0].Value >= 18 then
                frReport1.FindObject('line36').Visible := False
            else
                frReport1.FindObject('line36').Visible := True;
        end
        else if RadioButton2.Checked = True then
        begin
            if (DM.BB_ADOQuery.Fields[0].Value = 2) or (DM.BB_ADOQuery.Fields[0].Value = 3)
            or (DM.BB_ADOQuery.Fields[0].Value = 4) or (DM.BB_ADOQuery.Fields[0].Value = 6) or (DM.BB_ADOQuery.Fields[0].Value = 7)
            or (DM.BB_ADOQuery.Fields[0].Value = 8) or (DM.BB_ADOQuery.Fields[0].Value = 10) or (DM.BB_ADOQuery.Fields[0].Value = 11)
            or (DM.BB_ADOQuery.Fields[0].Value = 13)
            or (DM.BB_ADOQuery.Fields[0].Value = 14) or (DM.BB_ADOQuery.Fields[0].Value = 16) or (DM.BB_ADOQuery.Fields[0].Value = 18)
            or (DM.BB_ADOQuery.Fields[0].Value = 19) or (DM.BB_ADOQuery.Fields[0].Value = 21)
            then
                frReport1.FindObject('line21').Visible := False
            else
                frReport1.FindObject('line21').Visible := True;
            if (DM.BB_ADOQuery.Fields[0].Value >= 22) and (DM.BB_ADOQuery.Fields[0].Value <= 24) then
                frReport1.FindObject('line36').Visible := False
            else
                frReport1.FindObject('line36').Visible := True;
        end
        else
        begin
        end;
    end;
      

  4.   

    只要设置HIDEZERO为TRUE,就可以了,