水晶报表这样的功能怎么实现??
产品数据库: ID 产品名称 规格
001 wwwwwwww wwww
002 qqqqqqqq qqqq
003 dddddddd dddd
004 ssssssss ssss
005 eeeeeeee eeee
销售数据库:iD 产品名称 规格 数量
001 wwwwwwww wwww 10
002 qqqqqqqq qqqq 20
001 wwwwwwww wwww 15
005 eeeeeeee eeee 10
005 eeeeeeee eeee 15
报表要实现的功能:ID 产品名称 规格 数量
001 wwwwwwww wwww 25
002 qqqqqqqq qqqq 20
003 dddddddd dddd
004 ssssssss ssss
005 eeeeeeee eeee 25
[解决办法]
直接管理是不行的,用外关联保证数据不丢失(004)
SELECT a.ID, a.产品名称,a.产品规格,b.数量
FROM CSDN_20100812_产品 a LEFT OUTER JOIN CSDN_20100812_销售b ON a.ID=b.iD
这样就可以得到结果全集,然后再做个汇总就行了,可以在SQL里直接做,或者在水晶报表里实现。
1:SQL 法
SELECT x.ID, x.产品名称,x.产品规格, Sum(x.数量) as 数量
from
( SELECT a.ID, a.产品名称,a.产品规格,b.数量
FROM CSDN_20100812_产品 a LEFT OUTER JOIN CSDN_20100812_销售b ON a.ID=b.iD)
as x
Group by x.ID, x.产品名称,x.产品规格
2:水晶报表法,在水晶报表中设置两个表外关联
然后设置模板
[解决办法]
在这种数据情况下,你想实现什么效果呢?
如果是
按人分组,显示全部产品的销售列表(包含该人没有销售,但是产品代码表中有的数据)
这样的话,直接做外关联是不行的,可以采用union一个空表的方法
首先说一下,你的数据库设计是有问题的
1:产品表和人员销售表 字段设计重复,严重的违反了范式设计要求
stocktemp中,应该只有ID,姓名,产品ID和数量4个字段
(当然,可能有特殊要求需要这样设计,但是一般意义上应该只要这4个字段)
进一步说,姓名这个也应该单独建表,这里应该放一个姓名ID
2:关联字段类型设置错误
产品表ID为数值型,但是在stocktemp中产品ID为文本型,不能直接关联
(当然,可能你是用产品名称关联的。。)
撇开这些不谈。。 把stocktemp中产品ID改为数值型后
在Access中,构造如下语句
实际关联数据 union 一个笛卡尔积的0数据集(为了保证产品全部显示)
并进行聚合
语句如下
Selecta.姓名, a.ID, a.产品名称, a.规格, a.单价, a.折扣, Sum(a.数量) as 数量(SELECT stocktemp.姓名, product.ID, product.产品名称, product.规格, product.单价, product.折扣, stocktemp.数量FROM product INNER JOIN stocktemp ON product.ID = stocktemp.产品IDUNION ALL SELECT stocktemp.姓名, product.ID, product.产品名称, product.规格, product.单价, product.折扣, 0 as 数量FROM product,stocktemp) as aGroup Bya.姓名, a.ID, a.产品名称, a.单价, a.折扣
[解决办法]
没有源代码,除了写了个SQL,一句代码也没写。
把这个查询作为一个SQL语句,手工创建一个dateset里的datatable
然后参考下文,完成数据传递
至于报表设计,就是拖拖拉拉的工作了
【水晶报表内功心法】--PUSH模式样板招式 [推荐]
但是,你的折扣怎么算的,毕竟折扣不像数量直接sum就行了
[解决办法]
做一个公式x1
Sum(总额,分组字段)*Sum(数量,分组字段)
然后把x1放到组页眉或组页脚,即可。