这个报表用怎么做? (50分)

  • 主题发起人 主题发起人 一条大鱼
  • 开始时间 开始时间

一条大鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个数据表,结构如下:
发货日期 订单ID 小计
共三个字段,现要求做出如下报表:
1996
季度 订单数目 销售额
3 61 63,985
4 82 129,331
1997
季度 订单数目 销售额
1 92 143,703
2 92 145,655
3 105 144.320
4 109 175.169
................
大家注意,报表里的三个字段都是统计字段
我已经在数据表里加了一个计算字段“季度”, 我用FastReport弄了好几天都弄不出来,其实这就是ACCESS里自带的数据库Northwind(罗斯文),报表也是里面的“按年度汇总销售额”报表,用ACCESS很容易就能做出来,可是用FastReport就太难了,请大侠指点。
 
看看delphi自带的demo
 
不是很困難!
 
你可以先建立一个视图
Create View BB (
DATENAME(yyyy,发货日期) 年份
DATENAME(q,发货日期) 季度,
订单ID,
小计
)
AS
SELECT 发货日期,发货日期,订单ID,小计 FROM <发货数据表>;
然后使用一个可以写SQL语句的 TDataSet 按如下的SQL语句打开这个视图
SELECT
年份,
季度,
COUNT(订单ID) AS 订单数目,
SUM(小计) AS 销售额
FROM BB
GROUP BY 年份,季度;
就可以得到你要的结果
以上是在SQL SERVER 上测试通过的
 
如果是通过SQL的话是可以实现,可是我想像ACCESS那样,很容易地不通过修改数据库就能建出报表行不行呢?
 
创建一个虚拟表,然后将统计结果加入到虚拟表中
 
我做过类似的报表
首先将需要打印的数据通过sql语句查询到,同时计算出统计结果
然后通过insert语句建立一个临时表存放 季度 订单数目 销售额并把上述的统计结果添到临时表中
打印的select语句是在临时表中取的!
 
其实用FastReport一样的很简单!
首先通过SQL从日期中产生出相应的年及季度,然后按年、季度进行两次分组,然后用count(ID),sum(销售额).
具体band如下:
group header1(condition = 年)[年字段]
group header2(condition = 季度)[季度 ][ 订单数目][销售额]
group footer1 [季度字段] [count(id)] [sum(销售额)]
 
select t1.fieldname1,t2.fieldname2,t3.fieldname3 from tabel t1
left join (select count (fieldname2) from table group by datetime ) t2 on ..
left join (select count (fieldname3) from table group by datatime) t3 on
group by datatime
只是参考
你可以用别名来解决
 
我认为先建一个临时表然后将统计好数据导入。
 
多人接受答案了。
 
后退
顶部