我在用QuickReport做報表時,顯示出來如下:
產品編號   部件名稱     規格       工序        工時
aaaa        123        10*10      bbbb        0.25
aaaa        123        10*10      cccc        0.3
aaaa        123        10*10      dddd        0.5
我想得到
產品編號   部件名稱     規格       工序        工時
aaaa        123        10*10      bbbb        0.25
                                  cccc        0.3
                                  dddd        0.5
也就是要它重復的值去掉,還有就是怎樣才能顯示豎線,而現地的報表只能顯示橫線,請指教,謝謝

解决方案 »

  1.   

    放三个TQRLeble到Detail里,
    这 三个TQRLeble分别存放aaa,123,10*10,
    定义三个全局变量a,b,c,临时记录三个TQRLeble的值
    在Detail的beforePrint里判断如果即将要赋给三个TQRLeble的值跟a,b,c的值相同,
    即三个TQRLeble的值为空;如果即将要赋给三个TQRLeble的值跟a,b,c的值不同,即改变a,b,c 的值(这时三个TQRLeble的值也就不会是空啦竖线可以用TQRLeble的属性为“|”来做,一个TQRLeble不够可用两个
      

  2.   

    EasyGood(.)謝謝你的幫助,因為這幾天搬廠,沒有上網,現在豎線問題是解決了,你說放三個TQRLeble到Detail里,可我的內容是用QRDBText來顯示的,這樣的代碼具體要怎樣寫,請指教
      

  3.   

    我現在用這樣的語句
      a:=QRDBText1.DataField;
      if QRDBText1.DataField=a then
      QRDBText1.DataField:=' ';
    顯示卻全為空,我想知道怎樣得到QRDBText1.DataField的下一筆,因為上面的語句其實賦給它的始終是自己本身所以都為空。
      

  4.   

    a:=QRDBText1.DataField;
    你这样赋的值都是a都是等于那个字段的名,当然都是空的了,
    你用什么控件来查数据的?TADOQuery?
    如果是你可以这样子:
    TADOQuery.sql.clear;
    TADOQuery.sql.text:='你的查询语句‘;
    TADOQuery.open;
    TQRLable1.Caption:=TADOQuery.filebyname('產品編號').asstring;
    TQRLable2.Caption:=TADOQuery.filebyname('部件名稱').asstring;
    TQRLable3.Caption:=TADOQuery.filebyname('規格').asstring;
    这样就可以把值赋到三个TQRLable里了
    之后再用a:=TQRLable1.Caption
            if a=TQRLable1.Caption then
               //XXXXXXXXXXXXX
      

  5.   

    先把a初始化为空
    在Detail的beforePrint里这样写:
      if TADOQuery.filebyname('產品編號').asstring<>a then
      being
        a:=TADOQuery.filebyname('產品編號').asstring;
        TQRLable1.Caption:=TADOQuery.filebyname('產品編號').asstring;
        TQRLable2.Caption:=TADOQuery.filebyname('部件名稱').asstring;
        TQRLable3.Caption:=TADOQuery.filebyname('規格').asstring;
      end你试试吧,
      

  6.   

    为什么不在SQL语句里面下下功夫?