1000分求这报表,请问,这是不是最难的报表呀?高手快出手相助呀! 过了今晚,就要挨骂了,救命呀!! 帮UP者有分 (100分)

  • 主题发起人 主题发起人 通济桥
  • 开始时间 开始时间

通济桥

Unregistered / Unconfirmed
GUEST, unregistred user!
http://www.fstelecom.net.cn/count/report.zip
里面有数据表的!急呀
 
看来只好用脚本
 
to kkyy :
脚本能实现吗?怎么实现?请指点!
 
没有人会吗???
 
应该有办法的。
先把数据表转换一下。
再分组统计应没有问题目。
把表用sql语名转换成
日期 A 车间 B车间 ...
1/1 ........
........
再用分组汇总统计。
这应该可以。 办法很笨。
 
to zhj09 :
有没有直接简单一点的方法呀?
这样转换,数据多了,会很慢吧,而且转换以后,做成这样的报表也还有问题呀
 
word 做成模板,然后操作word写入数据
 
to 雨人:
你做过这样的模板报表吗? 有没有例子呀,给多点提示,谢了
 
雨人这样也是一个办法,
脚本吗,就象ASP做网页一样,只要不怕复杂,什么样的格式做不出来?
 
大哥呀,明天要交货了呀,其它的都做好了,我没时间改用其它控件了呀
这种方法,我真的还没有头绪呀,有没有好一点的方法完成呀,真的要命呀
 
to 通济桥
首先要清楚你的报表类型是什么。
它外面是一个交叉表,按照工厂和除库日期进行的交叉表。它并不是
很难。里面是一个简单的表。
但是将它们放到一起,那就是一个问题了!因为一般的交叉表都是细
目为数值型的(比如这里的数量),可这里却将合同号开了进去,实在
是变了样。
明白了问题所在,就可以想办法解决。
解决方案的核心是将这个交叉表转化为一般的表,它的结构可以如下
合同号 出库期 A工厂出库量 B工厂出库量 C工厂出库量 ... 数量
(有多少工厂就有多少个xxx出库量字段)
如何办到了?
解决方案之一:(不推荐,仅作参考)
简单的方法是使用多个联合Union语句(数量和xxx出库量字段的个数一样)
SQL如下:
SELECT 合同号, 出庫期, 数量 AS A工厂出库量,0 AS B工厂出库量,0 AS C工厂出库量,数量
FROM [order]
WHERE ((工厂='A'))
union
SELECT 合同号, 出庫期,0,数量,0, 数量
FROM [order]
WHERE ((工厂='B'))
union
SELECT 合同号, 出庫期,0,0,数量, 数量
FROM [order]
WHERE ((工厂='c'));
但是并没有将它们合并,再分组汇总一下即可.SQL语句如下:
select 出庫期,合同号,sum(A工厂出库量),sum(B工厂出库量),sum(C工厂
出库量),sum(数量)
from [ByFactory]
group by 出庫期,合同号;
byFactory是前一步生成的查询名。
完成了这一步,下面的报表也就不难了。我就不说了。
这是使用多步做成的。
这种方法的问题在于
1.使用了Union,它的速度令人担忧,如果你的数据量不大的话,没有什么
问题。如果过多的话,请使用存储过程实现这些SQL而不是使用这种复杂的
嵌套的SQL。性能是没有问题的。
2.多步查询,在Access还可以,其它的我没有做过,(因为我是采用的是
存储过程实现,所以不是问题)

解决方案之二:(推荐)
幸好在Access现在(我指的是AccessXP)提供了新的SQL语句(我不很确定)
可以使用一个简单的SQL语句完成上面的工作。如下:
TRANSFORM Sum(order.数量) AS 数量之Sum
SELECT order.出庫期, order.合同号
FROM [order]
GROUP BY order.出庫期, order.合同号
PIVOT order.工厂;
这是一个交叉表,可以形成相同的数据集,很简单,性能可以满足,但是
可能Pivot语句是TSQL的新增语法吧!(在Access XP或者SQL Server2000中
应当是有的,但是在Access97可能就没有,我不是很确定)。
题外话。
另外说一句,这种问题在做中国式报表的时候常常会碰到,它和西方的开
发工具总是不那么协调,不可能有什么直接的解决方案。我在实际的开发
中总结的最好的解决方案是劝说客户转变管理思维。(按道理应当是这样
,可是实际上。。。)
这两种方式我都用你的数据试过.没问题。
to zhj09
和你的思路一样
 
好,先谢了,我再研究研究,看来今晚又不能睡了
 
看看这个,有点像
http://61.135.139.207/china/chanpin/jiazu/excelShow/ConvertExcel.htm
 
后退
顶部