数据结构如下:
A表(客户信息): 序号,姓名,地址
b表(消费信息): 序号,客户序号,消费物品,数量,金额需要生成如下报表,关键是格子如何绘制?
┏━━━━┳━━━━━┳━━━━┳━━━━━┳━━━┳━━━━┓
┃ 姓名   ┃地址      ┃消费合计┃ 消费物品 ┃数量  ┃ 金额   ┃
┣━━━━╋━━━━━╋━━━━╋━━━━━╋━━━╋━━━━┫
┃        ┃          ┃        ┃ 物品A    ┃ 4    ┃ 80.00  ┃
┃张三    ┃地址1     ┃100.00  ┣━━━━━╋━━━╋━━━━┫
┃        ┃          ┃        ┃物品B     ┃ 5    ┃ 20.00  ┃
┣━━━━╋━━━━━╋━━━━╋━━━━━╋━━━╋━━━━┫
┃        ┃          ┃        ┃物品A     ┃ 5    ┃ 100.00 ┃
┃        ┃          ┃        ┣━━━━━╋━━━╋━━━━┫
┃李四    ┃地址2     ┃ 150.00 ┃物品B     ┃ 5    ┃ 20.00  ┃
┃        ┃          ┃        ┣━━━━━╋━━━╋━━━━┫
┃        ┃          ┃        ┃物品C     ┃10    ┃ 30.00  ┃
┣━━━━╋━━━━━╋━━━━╋━━━━━╋━━━╋━━━━┫
┃王五    ┃地址3     ┃75.00   ┃物品D     ┃3     ┃ 75.00  ┃
┗━━━━┻━━━━━┻━━━━┻━━━━━┻━━━┻━━━━┛
现在只能做成这个样子:
┏━━━━┳━━━━━┳━━━━┳━━━━━┳━━━┳━━━┓
┃ 姓名   ┃地址      ┃消费合计┃ 消费物品 ┃数量  ┃ 金额 ┃
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 张三       地址1       100.00    物品A     ┃ 4    ┃ 80.00  
                                  物品B     ┃ 5    ┃ 20.00   
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  李四     地址2        150.00    物品A     ┃ 5    ┃ 100.00  
                                  物品B     ┃ 5    ┃ 20.00   
                                  物品C     ┃10    ┃ 30.00  
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  王五     地址3       75.00      物品D     ┃3     ┃ 75.00   
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

解决方案 »

  1.   

    你可以在你现有Memo的后面再放一些Memo,颜色是透明D,它们的作用就是用来画出表格中的竖线。
    明白偶的意思么?步骤如下:
    1. "张三","地址"这些Memo由于“压缩重复值”,所以虽然有三条记录,但是只会显示一行,好,你有数据了。下一步你要做的就是补全表格线而已。
    2. 在"张三","地址"等缺线的表格后面放上一些空的Memo,它的边框由你定,按你这张表,只需要画出左右两侧的线就行了,然后把这个Memo的填充色选成透明色,切记,这个空Memo不要“压缩重复值”。
    3. 预览。效果出来了吧?一层Memo负责数据显示,另一层Memo负责表格线的绘制。^_^,我去年夏天也做报表,琢磨了好几天才想出这个办法,FastReport的确是个好东西。
      

  2.   

    加一个Group band,设置其属性中的condition(好像是这个属性)为'name,address'
      

  3.   

    to  chuchu(维他命C),
    还有个问题请教你,我这个报表时使用一个主数据和一个子报表实现的,不知道还有没有其他更好的方法阿?
      

  4.   

    to  chuchu(维他命C):
      要怎样让张三,地址1等垂直居中呢?
      

  5.   

    这样合计出现在子项之前的,最好还是用程序生成,然后传出来。虽然用脚本也可以实现,但是那比较麻烦,而且脚本多了,报表预览的速度也就慢了。
    用脚本的办法是定义一个数组,每个单元记录一个汇总值,然后记得把报表设为2遍报表。
    脚本中这样写:
    if not finalpass then
      SumCost := SumCost + ...;  //汇总;
    else
      Memo1.Text := [SumCost];   //显示;
      

  6.   

    如果合计在子项后面,累加工作可以放在子项Band的脚本中执行。
      SumCost := 数量 * 金额; //当然,这里指的是变量
    如果合计在子项前面……你还是不要用脚本了,挺复杂,:D
      子项Band的脚本里面做累加
      合计Band的脚本里面需要通过Finalpass来判断是否显示