报表的格式类似于这样
班别 产品编号 实际产量 废品量 
一班 
     xa00      1000     10
     xa01      1000     10
.....
分组统计:     8000      90   二班 
     xa01      1100     20
     xa00      1100     20
.....
分组统计:     9000     100三班 
     xa02      1100     20
     xa03      1100     20
.....
分组统计:     9000     100总合计:       100000    1000我想让格式变成如下的格式:
报表的格式是这样的
例如:班别 产品编号 实际产量 废品量 
一班 xa00      1000     10
     xa01      1000     10
.....
分组统计:     8000      90   二班 xa01      1100     20
     xa00      1100     20
.....
分组统计:     9000     100三班 xa02      1100     20
     xa03      1100     20
.....
分组统计:     9000     100总合计:       100000    1000

解决方案 »

  1.   

    設個變量,在打印Detail時,設為True, 打印SubDetail時,如果是True,就打印班級碼,然後馬上設為False; 嘿嘿。
      

  2.   

    我用BCB
    sousouwjh(sousouwjh)
    我没太明白,能在细点说一下么
      

  3.   

    procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
      ShowTag:=True;
    end;procedure TForm1.QRSubDetail1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
      if ShowTag=True then
      begin
        Qrlabel1:=Table1.Fieldbyname('¯Z¯Å').asstring;
      end;
      ShowTag:=False;
    end;
      

  4.   

    procedure TForm1.QRDetail1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
      ShowTag:=True;
    end;procedure TForm1.QRSubDetail1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
      if ShowTag=True then
      begin
        Qrlabel1:=Table1.Fieldbyname('Banji').asstring;
      end;
      ShowTag:=False;
    end;//Qrlabel1 放在QRSubDetail1 顯示班級
      

  5.   

    sousouwjh(sousouwjh) 
    我试了你的代码,没有实现我想要的效果。没做任何处理之前,打印出来的格式是这样的
    班别 产品编号 实际产量 废品量 
    一班 
         xa00      1000     10
         xa01      1000     10
    .....
    分组统计:     8000      90   二班 
         xa01      1100     20
         xa00      1100     20
    .....
    分组统计:     9000     100三班 
         xa02      1100     20
         xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000我想要的格式是这样的
    班别 产品编号 实际产量 废品量 
    一班 xa00      1000     10
         xa01      1000     10
    .....
    分组统计:     8000      90   二班 xa01      1100     20
         xa00      1100     20
    .....
    分组统计:     9000     100三班 xa02      1100     20
         xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000用了你的代码之后,格式是这样的
    班别 产品编号 实际产量 废品量 
    一班 
    一班  xa00      1000     10
    一班  xa01      1000     10
    .....
    分组统计:     8000      90   二班 xa01      1100     20
    二班 xa00      1100     20
    .....
    分组统计:     9000     100三班 xa02      1100     20
    三班 xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000
      

  6.   

    用了你的代码之后,格式是这样的
    班别 产品编号 实际产量 废品量 
    一班 
    一班  xa00      1000     10
    一班  xa01      1000     10
    .....
    分组统计:     8000      90   
    二班
    二班 xa01      1100     20
    二班 xa00      1100     20
    .....
    分组统计:     9000     100
    三班
    三班 xa02      1100     20
    三班 xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000
      

  7.   

    ShowTag 是全局變量,而且你要把QRDetail1的Height設為0
      

  8.   

    QRDetail1的Height設為0后,结果是这样的
    用了你的代码之后,格式是这样的
    班别 产品编号 实际产量 废品量  
    一班  xa00      1000     10
    一班  xa01      1000     10
    .....
    分组统计:     8000      90   
    二班 xa01      1100     20
    二班 xa00      1100     20
    .....
    分组统计:     9000     100
    三班 xa02      1100     20
    三班 xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000也和我的设想不一样啊,我想让班组的类别只出现在每组的第一行,如下
    用了你的代码之后,格式是这样的
    班别 产品编号 实际产量 废品量 
    一班  xa00      1000     10
          xa01      1000     10
    .....
    分组统计:     8000      90   
    二班 xa01      1100     20
         xa00      1100     20
    .....
    分组统计:     9000     100
    三班 xa02      1100     20
         xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000
      

  9.   

    void __fastcall TfrmRepWasterTeamStat::QRBand3BeforePrint(
          TQRCustomBand *Sender, bool &PrintBand)
    {
        ShowTag = true;
    }
    //---------------------------------------------------------------------------void __fastcall TfrmRepWasterTeamStat::QRSubDetail1BeforePrint(
          TQRCustomBand *Sender, bool &PrintBand)
    {
       if(ShowTag == true)
       {
          QRLabel25->Caption = frmDm->qryRep1->FieldByName("Team")->AsString;
       }
       ShowTag = false;
       //Qrlabel1 放在QRSubDetail1 顯示班級
    }
    //---------------------------------------------------------------------------
      

  10.   

    //detail对应的query             
     strSql="select team from teamInfo order by Id";
                  frmDm->qryRep1->Close();
                  frmDm->qryRep1->SQL->Clear();
                  frmDm->qryRep1->SQL->Add(strSql);
                  frmDm->qryRep1->Open();
                  frmDm->dsRep1->DataSet = frmDm->qryRep1;
                  frmDm->ADOQ_Rep2->DataSource = frmDm->dsRep1;
                  //
    //subdetail对应的query
                  strSql="select j.ProductNo,j.Team,Ajl,Wjl,Asx,Wsx from";
                  strSql+=" (select ProductNo,Team,sum(ActualQty) as Ajl,sum(WasterQtyT) as Wjl from gwkBaseData";
                  strSql+=" where WPNo='101' and ProductNo<>'' and Team like '%班%' and ";
                  strSql+= strFaculty;
                  strSql+=" group by productNo,Team) as j left join";
                  strSql+=" (select ProductNo,Team,sum(ActualQty) as Asx,sum(WasterQtyT) as Wsx from gwkBaseData";
                  strSql+=" where WPNo='114' and ProductNo<>'' and Team like '%班%' and ";
                  strSql+= strFaculty;
                  strSql+=" group by productNo,Team) as s";
                  strSql+=" on j.productNo=s.productNo";
                  strSql+=" where (isnull(Ajl,0)+isnull(Asx,0))<>0 and j.Team = :Team";
                  frmDm->ADOQ_Rep2->Close();
                  frmDm->ADOQ_Rep2->SQL->Clear();
                  frmDm->ADOQ_Rep2->SQL->Add(strSql);
                  frmDm->ADOQ_Rep2->Open();
      

  11.   

    也和我的设想不一样啊,我想让班组的类别只出现在每组的第一行,如下
    用了你的代码之后,格式是这样的
    班别 产品编号 实际产量 废品量 
    一班  xa00      1000     10
          xa01      1000     10
    .....
    分组统计:     8000      90   
    二班 xa01      1100     20
         xa00      1100     20
    .....
    分组统计:     9000     100
    三班 xa02      1100     20
         xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000不對嗎?
      

  12.   

    QRDetail1的Height設為0后,结果是这样的
    用了你的代码之后,格式是这样的
    班别 产品编号 实际产量 废品量  
    一班  xa00      1000     10
    一班  xa01      1000     10
    .....
    分组统计:     8000      90   
    二班 xa01      1100     20
    二班 xa00      1100     20
    .....
    分组统计:     9000     100
    三班 xa02      1100     20
    三班 xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000也和我的设想不一样啊,我想让班组的类别只出现在每组的第一行,如下
    班别 产品编号 实际产量 废品量 
    一班  xa00      1000     10
          xa01      1000     10
    .....
    分组统计:     8000      90   
    二班 xa01      1100     20
         xa00      1100     20
    .....
    分组统计:     9000     100
    三班 xa02      1100     20
         xa03      1100     20
    .....
    分组统计:     9000     100总合计:       100000    1000
      

  13.   

    void __fastcall TfrmRepWasterTeamStat::QRBand3BeforePrint(
          TQRCustomBand *Sender, bool &PrintBand)
    {
        ShowTag = true;
    }
    //---------------------------------------------------------------------------void __fastcall TfrmRepWasterTeamStat::QRSubDetail1BeforePrint(
          TQRCustomBand *Sender, bool &PrintBand)
    {
       if(ShowTag == true)
       {
          QRLabel25->Caption = frmDm->qryRep1->FieldByName("Team")->AsString;
       }
       else
       {
          QRLabel25->Caption ='';
        }
       ShowTag = false;
       //Qrlabel1 放在QRSubDetail1 顯示班級
    }