数据为
A001 B001
A001 B002
A001 B003打印成
B001
A001 B002
B003

解决方案 »

  1.   

    估计要用交叉表才能实现,没做过这方面的
    可以构筑成主细表,要按照主细表的话,
    可以很容易实现:
    A001
          B001
          B002
          B003
    这种格式
      

  2.   

    楼主用用子报表试试看. delphi中有例子的
      

  3.   

    二楼说的就能解决,但是看这样的表的结构,不是很合理,有很大的冗余。
    数据为
    A001 B001
    A001 B002
    A001 B003打印成
    B001
    A001 B002
    B003
    如果你要这样做报表的话,还不如:
    数据ID    数据       ID    数据    
    1         A001       1     B001
    2         A002       1     B001
    这样你取数据的时候就没有冗余了。
      

  4.   

    TO kingbenz (乱草) 
    我刚发现的,你可以试试,
    在master data中把包含变量A00的memo的FrameTyp设为8,B00的memo的FrameTyp设为15,然后在含有A00的memo上右键,选中suppress repeated values,
    执行时是这样的形式-------------------------
                         A001   1      B001    1    
                                1 -------------1
                                1      B002    1
                                1 -------------1
                                1      B003    1
                                1 -------------1
    不知道是不是你要的形式
      

  5.   

    建一个主报表,两个子报表。两个子报表用的字段都要用一个Query查询的。SupReport1中只放显示部门的那个字段。SupReport2放和SupReport1相对应的字段。都用master data,在SupReport1中的Memo把suppress选成True。
    在主报表里把两个子报表这样排列:
    ---------------------
    SupReport1|SupReport2    <--两个子表并排放置
              |
              |
              |
              |
              |
    ---------------------
    然后在From中用Query把SupReport1中显示的记录数统计出来,传到Fastreport中。在Fastreport中定义变量,我这里定义变量countnum。
    下来在SupReport1中master data的OnBeforePrint属性里写上:
    begin
       MasterHeader1.Height:=[countnum]*28/4;
    end  
    这样就能实现:
    一一一一一一一一一一一一
    1    1 张三 1 1000 1
    1    1 李四 1 2000 1
    1    1 王五 1 3000 1
    1    1 张三 1 1000 1
    1销售部 1 李四 1 2000 1
    1    1 王五 1 3000 1
    1    1 张三 1 1000 1
    1    1 李四 1 2000 1
    1    1 王五 1 3000 1
    一一一一一一一一一一一一
    这样的效果。
    但是这样只能对一个部门的打印,达到上面的格式。如果是一次打印多个部门的,那么你就要对MasterHeader 和 MasterData 的 Height 属性自己研究一下了,看看怎么样设置他们的值比较合适。
      

  6.   

    "MasterHeader1.Height:=[countnum]*28/4;"
    忘记说了上面的28是 MasterHeader和MasterData的默认高度,这里你不一定写28可以自己定义。不过两个子表中所有的Band的Height的初始值最好都一样,这样定位才准确。
      

  7.   

    忘记说了在我说的方法里,SupReport1中MasterHeader和MasterData都要放,SupReport2中只放MasterData。