------------------------------------------
|业务组 | 项目 | 成本 | 其他 |
------------------------------------------
|一组 |市调问卷报广1 | 5000 | 2000 |
| |--------------------------------
| |市调问卷报广2 | 3000 | 1000 |
------------------------------------------
|小计 | 8000 | 3000 |
------------------------------------------
其他小组同上
------------------------------------------
|总计 | 8000 | 3000 |
------------------------------------------我要实现这样的功能,数据是放在一个表中的,
|业务组 | 项目 | 成本 | 其他 |
------------------------------------------
|一组 |市调问卷报广1 | 5000 | 2000 |
| |--------------------------------
| |市调问卷报广2 | 3000 | 1000 |
------------------------------------------
|小计 | 8000 | 3000 |
------------------------------------------
其他小组同上
------------------------------------------
|总计 | 8000 | 3000 |
------------------------------------------我要实现这样的功能,数据是放在一个表中的,
两种方法
|小计 | A8000 | B3000 |
------------------------------------------
其他小组同上
------------------------------------------
|总计 | C8000 | D3000 |
1。在ABCD处分别设置好Memo名称,然后在外面把数据算好以后在打印的时候直接Add到这几个相应的Memo上
2。外面数据表用dxDBGrid,这个的三方控件有一个自己的功能就是有总计的功能,然后按照1。把相应的字段设置好就可以了
需要借助分组来实现首先是主数据的Band关联到那个表
然后在前面放个“分组头”的band,双击设定分组方式为“[业务组]”
分组头的高度设成0
再在主数据Band的后面放个“分组脚”,上面放“小计”的Memo,值为“[SUM(Table1."成本")]”
“总计”数据放在“主项脚”上,与“小计”差不多至于每组数据只有第一行显示组名,可以在组名称的Memo里面写脚本,就是双击后的“begin...end”部分,脚本可以这样写:
begin
if [LINE]=1 then
Memo := [Table1."业务组"]
else
Memo := '';
end;
至于每组数据只有第一行显示组名,可以在组名称的Memo里面写脚本,就是双击后的.....这个memo放在哪里的是分组头中,还是主项数据中.我放在主项数据中,但是没有显示
关于组别显示:
假设你的组别字段是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在上面 ,
就是这么整的~
请问old_iss 是什么??
begin
if [LINE#]=1 then
Memo := [Table1."业务组"]
else
Memo := '';
end
代码写在主数据的最前面那个,就是要显示业务组的Memo上
请问old_iss 是什么??
回复人: sayhi(sayhi) ( ) 信誉:100 old_iss 就是一個變量,fastreport 裡變量 不需要定義啊。
用來記錄上一筆記錄的"業務組"
你照著我的代碼寫,准沒錯。