我用的是qReport(delphi自带的报表),在我的数据库中有一个字段,为1或0,但是我要在报表中显示‘是’或‘否’,不知如何解决??

解决方案 »

  1.   

    用计算字段
    当然更好是在SQL里面就写好
    select case where 字段='0'then '否' else '是' end from 表
      

  2.   

    可以用循环先将数据导入一个公共表CF_Public(举个例子)中,如果那个字段为'0',则导出的值为'否',如果为'1',则导出的为'是',以下一段例子公供参考:
    with ADOQY_Public do
        begin
          Close;
          SQL.Clear;
          SQL.Add('delete from CF_Public');
          ExecSQL;
          close;
          sql.Clear;
          sql.Add('select * from CF_Public');
          open;
        end;
      ADOQY_ChanFu.First;
      while not ADOQY_ChanFu.Eof do
        begin
          ADOQY_Public.Append;
          ADOQY_Public.Fieldbyname('c7').AsString:=ADOQY_ChanFu.fieldbyname('FM_Date').AsString;
          if ADOQY_ChanFu.FieldByName('Sex_M').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c8').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c8').AsString:='';
          if ADOQY_ChanFu.FieldByName('Sex_F').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c9').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c9').AsString:='';
          if ADOQY_ChanFu.FieldByName('GaoWei_Y').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c10').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c10').AsString:='';
          if ADOQY_ChanFu.FieldByName('GaoWei_N').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c11').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c11').AsString:='';
          if ADOQY_ChanFu.FieldByName('XiGuan_Y').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c12').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c12').AsString:='';
          if ADOQY_ChanFu.FieldByName('XiGuan_N').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c13').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c13').AsString:='';
          ADOQY_Public.FieldByName('c14').AsString:=ADOQY_ChanFu.fieldbyname('XinSheng_F').AsString;
          if ADOQY_ChanFu.FieldByName('ZhuYuan_F').AsBoolean=true then
            ADOQY_Public.Fieldbyname('c15').AsString:='√'
          else
            ADOQY_Public.Fieldbyname('c15').AsString:='';
          ADOQY_Public.FieldByName('c16').AsString:=ADOQY_ChanFu.fieldbyname('W_Memo').AsString;
          ADOQY_Public.Post;
          ADOQY_ChanFu.Next;
        end;
      //-------------------------
      if Application.FindComponent('ChanFu_Info_PrintFrm')=nil then
        ChanFu_Info_PrintFrm:=TChanFu_Info_PrintFrm.Create(self);
      ChanFu_Info_PrintFrm.QRLabel1.Caption:=ADOQY_Public.fieldbyname('c1').AsString+'登记表';
      ChanFu_Info_PrintFrm.QuickRep1.Preview;
      ChanFu_Info_PrintFrm.Free;