首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

愁呀,仓库物品管理系统分类统计数据。()

2012-08-07 
愁呀,仓库物品管理系统分类统计数据。……。…………(在线等)用的ACCESS数据库加DELPHI,现在有三个表,一个物品信息

愁呀,仓库物品管理系统分类统计数据。……。…………(在线等)
用的ACCESS数据库加DELPHI,现在有三个表,一个物品信息表,一个入库表,一个出库表
现在要统计出一个月的出入库明细,比如五月份A物品出库几个,入库几个,还剩几个,这个已经实现了
可现在要一次性统计几个月的并按月分开显示在一个窗体,就不知道怎么用SQL实现了
 str:='SELECT stock.编码, Sum(enterwh.入库数量) AS 入库总计,'
  +'Sum(outwh.出库数量) AS 出库总计'
  +' FROM (stock LEFT JOIN (select * from outwh where left(出库时间,7)="2012-06") AS a ON stock.编码 = a.编码) LEFT JOIN (select * from enterwh where left(入库时间,7)="2012-06") AS b ON stock.编码 = b.编码'
  +' GROUP BY stock.编码';

这个代码是统计出2012年6月份的,同样我可以在窗体上放个日期选择组件来实现换着日期查出不同月的,可如果要统计一个日期段的不知道怎么搞,比如,我要统计出1月到6月每月的出入库明细,就是说动态的选择日期范围,然后显在DBGRID中,有没有别的方法更方便实现分类统计的,有做过仓库管理系统的朋友给个思路就行不要求有代码
就想实现

[解决办法]
left(出库时间,7) 1月到6月 beteen 。。and 不行?
[解决办法]
这个貌似要写存储过程的,access貌似不支持存储过程
[解决办法]
我认为你要把之前每个月的统计数据存储下来,查询的时候直接调用即可,
不需要写这么复杂的SQL或者存储过程。
[解决办法]
对ACCESS不熟悉,好像ACCESS没有像ORACLE里面的FULL OUTER JOIN?
不知道这样行不

SELECT c.月份,c.编码, Sum(c.入库总数量) AS 入库总计,
Sum(c.出库总数量) AS 出库总计
from
(
select a.编码,a.出库月份 月份,a.出库总数量 ,b.入库总数量
(
select 
left(出库时间,7) 出库月份,编码,Sum(出库数量) 出库总数量 
from outwh 
group by left(出库时间,7),编码
) as a
left join 
(
select left(入库时间,7) 入库月份,编码,Sum(入库数量) 
from enterwh
group by left(入库时间,7),编码
) as b
on a.编码=b.编码 and a.出库月份=b.入库月份
union 
select b.编码,b.入库月份 月份,a.出库总数量 ,b.入库总数量
(
select 
left(出库时间,7) 出库月份,编码,Sum(出库数量) 出库总数量 
from outwh 
group by left(出库时间,7),编码
) as a
right join 
(
select left(入库时间,7) 入库月份,编码,Sum(入库数量) 
from enterwh
group by left(入库时间,7),编码
) as b
on a.编码=b.编码 and a.出库月份=b.入库月份
) c
[解决办法]
很单简啊:用ClientDataSet1 数据集,超复杂的报表都搞得掂。
  
先在ClientDataSet1定义好字段用以下语句初始化: IF ClientDataSet1.Active Then ClientDataSet1.EmptyDataSet else
 ClientDataSet1.CreateDataSet; (在建立事件中),关闭事件用 ClientDataSet1.close;

-----------------------------用SQL 提取1--7月份的数据,判定是那一个月份的就INSERT到ClientDataSet1中搞定。注:如果不能运行,要用regsvr32 c:\MIDAS.DLL 注册。目录是MIDAS.dll
所有的目录,一般COPY到系统目录中或程序执行目录。
 不明问我:谢谢

热点排行