------------------------------------------
|业务组  | 项目         |  成本 |   其他 | 
------------------------------------------
|一组    |市调问卷报广1 |  5000 |   2000 |
|        |--------------------------------
|        |市调问卷报广2 |  3000 |   1000 |
------------------------------------------
|小计                   |  8000 |   3000 |
------------------------------------------
其他小组同上
------------------------------------------
|总计                   |  8000 |   3000 |
------------------------------------------我要实现这样的功能,数据是放在一个表中的,

解决方案 »

  1.   

    可以实现的
    两种方法
    |小计                   |  A8000 |   B3000 |
    ------------------------------------------
    其他小组同上
    ------------------------------------------
    |总计                   |  C8000 |   D3000 |
    1。在ABCD处分别设置好Memo名称,然后在外面把数据算好以后在打印的时候直接Add到这几个相应的Memo上
    2。外面数据表用dxDBGrid,这个的三方控件有一个自己的功能就是有总计的功能,然后按照1。把相应的字段设置好就可以了
      

  2.   

    FastReport也完全可以实现这样的报表
    需要借助分组来实现首先是主数据的Band关联到那个表
    然后在前面放个“分组头”的band,双击设定分组方式为“[业务组]”
    分组头的高度设成0
    再在主数据Band的后面放个“分组脚”,上面放“小计”的Memo,值为“[SUM(Table1."成本")]”
    “总计”数据放在“主项脚”上,与“小计”差不多至于每组数据只有第一行显示组名,可以在组名称的Memo里面写脚本,就是双击后的“begin...end”部分,脚本可以这样写:
    begin
       if [LINE]=1 then
         Memo := [Table1."业务组"]
       else
         Memo := '';
    end;
      

  3.   

    更正一下[LINE]应该为[LINE#],即本组内的行号
      

  4.   

    to :shotking(小金)
    至于每组数据只有第一行显示组名,可以在组名称的Memo里面写脚本,就是双击后的.....这个memo放在哪里的是分组头中,还是主项数据中.我放在主项数据中,但是没有显示
      

  5.   

    很easy的问题
    关于组别显示:
    假设你的组别字段是issno,在master data那个band的onbeforeprint 代码如下:if [ADOQuery1."ISSNO"]<>old_iss then
      memo2.lines[0]:=[ADOQuery1."ISSNO"]
    else
      memo2.lines[0]:='';old_iss:=[ADOQuery1."ISSNO"];关于小计和合计:
    分组你会不会?不会的话再讲吧,
    在group footer 放一下memo,内容是[SUM([ADOQuery1."ISSQTY"])]
    假设issqty是你的成本字段.
    这就是每组小计了。总计:放一个report summary的band ,放一个跟上面讲的一模一样的memo在上面 ,
    就是这么整的~ 
      

  6.   

    if [ADOQuery1."ISSNO"]<>old_iss then
    请问old_iss 是什么??
      

  7.   

    照前面shotking(小金) 的作法,还有一个没有解决,业务组没有显示
      

  8.   

    我试了一下,没有问题的
    begin
      if [LINE#]=1 then
        Memo := [Table1."业务组"]
      else
        Memo := '';
    end
    代码写在主数据的最前面那个,就是要显示业务组的Memo上
      

  9.   

    if [ADOQuery1."ISSNO"]<>old_iss then
    请问old_iss 是什么??
    回复人: sayhi(sayhi) ( ) 信誉:100 old_iss 就是一個變量,fastreport 裡變量 不需要定義啊。
    用來記錄上一筆記錄的"業務組"
    你照著我的代碼寫,准沒錯。