我是用QREPORT作的報表,就是還有一個問題,因為我是用GROUP和DETAIL作主從關系的,我想解決如果某一個GROUP下面沒有DETAIL數據的時候,把這個DETAIL隱藏,這樣要怎么做呢?

解决方案 »

  1.   

    試試在qrgroup的afterprint事件,檢查detail字段是否有值,如沒有把detailband高度為0或enable=false
      

  2.   

    好的,我去試試,還有一個問題,就是報表里面有一個數據,我想打印成兩列,如下:
    項目經理:X-名稱-X X------聯系方式------X  項目副經理:X-名稱-X X-------聯系方式-------X
      施工員:X-名稱-X X-- ---聯系方式------X      質檢員:X-名稱-X X------聯系方式-------X
      材料員:X-名稱-X X------聯系方式------X      安全員:X-名稱-X X------聯系方式-------X
      庫管員:X-名稱-X X-----聯系方式-------X      核算員:X-名稱-X X-----聯系方式-------X
      資料員:X-名稱-X X-----聯系方式------X      技朮員:X-名稱-X X------聯系方式--------X該如何實現呢?謝謝!
      

  3.   

    還有,問一下,afterprint和beforeprint有什么區別呢 
      

  4.   

    把quickrep1.pages.columns設為2,報表可打兩欄
    一個在列印前發生,一個在列印后發生
      

  5.   

    我試了,不可以,下面是我的代碼:
    with ads_finish do
      begin
        cl_de_id := fieldbyname('cl_de_id').AsString;
        str_sql := 'select * from PPS_DE_DETAIL where de_id='''+cl_de_id+'''';
        with ADOC_temp do
        begin
          close;
          commandText := str_sql;
          open;
          while eof do
          begin
            QRBand3.Enabled := false;
          end;
        end;
        next;
      end;
      

  6.   

    經過測試表明,按照上面的方法是可以達到,只出現當明細沒有資料時,只出現groupheader,把detail隱掉,我是寫在groupheader的afterprint事件中,我用的是一個view,主從都在裡面,A1是groupheader中的expression,C1字段放在detail中,在afterprint事件中:if adoquery1.fieldbyname('C1').asstring='' then
      detailband.enabled:=false
    else
      detailband.enabled:=true;
      

  7.   

    每一個groupheader在afterprint時就檢查一下,當前的master是否有相應detail資料
      

  8.   

    我是直接在detail的afterprint事件中寫的,請您能不能再講清楚一點呢?
      

  9.   

    在groupheader的afterprint事件中写,上面写的还是比较清楚了