专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 报表

水晶报表这样的功能如何实现?

发布时间:2010-06-13 14:07:57 文章来源:www.iduyao.cn 采编人员:星星草
水晶报表这样的功能怎么实现??
产品数据库: 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数据集(为了保证产品全部显示)
并进行聚合

语句如下
C# code
Select
a.姓名, 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.产品ID
UNION ALL
 SELECT stocktemp.姓名, product.ID, product.产品名称, product.规格, product.单价, product.折扣, 0 as 数量
FROM product,stocktemp
) as a
Group By
a.姓名,
 a.ID, 
a.产品名称,
 a.单价, 
a.折扣

------解决方案--------------------
没有源代码,除了写了个SQL,一句代码也没写。

把这个查询作为一个SQL语句,手工创建一个dateset里的datatable
然后参考下文,完成数据传递

至于报表设计,就是拖拖拉拉的工作了

【水晶报表内功心法】--PUSH模式样板招式 [推荐]

但是,你的折扣怎么算的,毕竟折扣不像数量直接sum就行了
------解决方案--------------------
做一个公式x1

Sum(总额,分组字段)*Sum(数量,分组字段)

然后把x1放到组页眉或组页脚,即可。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: