主题:如何汇总统计? 小弟实在想不出什么办法!
yuanyu117
[专家分:150] 发布于 2007-03-09 22:00:00
我有一个收货表"inrec",另一个出货表"outrec",
各有recid,date,movt,inqty(outrec),remarks
现在,需要一个统计,统计出所以机芯(movt字段)的出入数,当然有些有收货而没有出货,
我用了select...inner join..on.
结果, 只能显示有收货也有出货的数据,
无法查到所有的库存货.....
即无显示有收货而没有出货的数据!
求求各位大侠..急急急....
在线等!
最后更新于:2007-03-12 14:45:00
回复列表 (共25个回复)
11 楼
moz [专家分:37620] 发布于 2007-03-12 13:59:00
看一下你的VFP版本号是不是VFP9
12 楼
yuanyu117 [专家分:150] 发布于 2007-03-12 14:43:00
是VFP6,那怎么办呢?
一定要VFP9吗?
13 楼
moz [专家分:37620] 发布于 2007-03-12 14:59:00
没有桥的时候,请自己找小艇过河.
14 楼
esailor [专家分:2650] 发布于 2007-03-12 15:03:00
我的代码是在vfp 9下测试通过的,保证没问题
楼主,你用的VFP的版本是多少?
有可能VFP 9上的某些功能在其它以前的版本上可能不好用或不能用。
15 楼
yuanyu117 [专家分:150] 发布于 2007-03-14 08:41:00
真的没有其他办法了吗?
有没有什么可以在VFP6中可以实现的办法呢?
各位大哥....拜托拜托!!!!
16 楼
zfxs_wang [专家分:180] 发布于 2007-03-18 12:35:00
你不要老想着用一条命令解决所有的问题
我建议你创建一个表单,在表单上添加一个表格,在表格的INIT()事件中创建一个临时表(临时表包含date,movt,inqty,outrec)字段,定义表格为5列,使表格和临时表关联,同时给临时表创建索引.
如:
create cursor tt1 (date d,movt c(4),inqty n(6),outqty n(6))
select tt1
index on movt tag movt
set order to movt
select inrec
go top
scan
seek inrec.movt in tt1
if found('tt1')
replace tt1.inqty with tt1.inqty+inrec.inqty in tt1
else
insert into tt1(movt,inqty)values(inrec.movt,inrec.inqty)
endif
endscan
select outrec
go top
scan
seek outrec.movt in tt1
if found('tt1')
replace tt1.outqty with tt1.outqty+outrec.outrec in tt1
else
insert into tt1(movt,outqty)values(inrec.movt,outrec.outrec)
endif
endscan
go top in tt1
with thisform.grid1
.rowsource='tt1'
.rowsourcetype=6
.column1.controlsource='tt1.movt'
.column2.controlsource='tt1.inqty'
.column3.controlsource='tt1.outqty'
.column4.controlsource='tt1.inqty-tt1.outqty'
.refresh()
endwith
17 楼
yuanyu117 [专家分:150] 发布于 2007-03-21 19:22:00
回16楼:
谢谢,先收藏,找个时间来试试....
18 楼
zfxs_wang [专家分:180] 发布于 2007-03-25 11:20:00
你不要试图用一条命令解决所有的问题.用我这个办法试试如何?
创建一个表单,在表单上添加一个表格控件,在表格的INIT事件中添加如下代码:
CREATE CURSOR LSB (movt C(4),intotal N(5),outtotal N(5))
SELECT LSB
INDEX ON MOVT TAG MOVT
SET ORDER TO MOVT
SELECT INREC
GO TOP
SCAN
SEEK INREC.MOVT IN LSB
IF FOUND('LSB')
REPLACE lsb.intotal WITH lsb.intotal+inrec.inqty in lsb
ELSE
INSERT INTO LSB VALUES (inrec.movt,inrec.inqty,0)
ENDIF
ENDSCAN
SELECT OUTREC
GO TOP
SCAN
SEEK OUTREC.MOVT IN LSB
IF FOUND('LSB')
REPLACE lsb.outtotal WITH lsb.outtotal+outrec.outrec in lsb
ELSE
INSERT INTO LSB VALUES (inrec.movt,0,outrec.outrec)
ENDIF
ENDSCAN
select lsb
go top
with thisform.grid1
.columncount=4
.recordsource='lsb'
.recordsourcetype=1
.column1.controlsource='lsb.movt'
.column1.header1.caption='机芯'
.column1.header1.alignment=2
.column2.controlsource='lsb.intotal'
.column2.header1.caption='进货数量'
.column2.header1.alignment=2
.column3.controlsource='lsb.outtotal'
.column3.header1.caption='出货数量'
.column3.header1.alignment=2
.column4.controlsource='lsb.intotal-lsb.outtotal'
.column4.header1.caption='库存数量'
.column4.header1.alignment=2
.refresh()
endwith
&&根据你的叙述,inrec.inqty记录入库表的入库数量,outrec.outrec记录出库表的出库数量
19 楼
yuanyu117 [专家分:150] 发布于 2007-03-27 20:10:00
谢谢你,
可是我现在想插一句语句就是看不出应该插到哪个位置,
请高手指点一下:
select * from lsb where movt=thisform.combo1.displayvalue
20 楼
yuanyu117 [专家分:150] 发布于 2007-03-28 16:30:00
谁能帮帮我啊?
我只是想用个COMBO控件来查询相关的数据而已....
我来回复