| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:请教库文件多条件查找并报表的问题
只看楼主 加入收藏
mxmsdqd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
请教库文件多条件查找并报表的问题
现有一原料库(车间盘点),fildes:日期,品名,平方,单价,其中品名有重复数据,相同品名有相同单价的,也有不同单价的,要求报表时,统计时(例如统计本月库存)是从上月18日至本月18日为本月库存量,不同单价的相同原料要分开统计,我的程序结果总不是我想要的,想请教原因,谢谢大家!
附上源程序
command1.click
set safety off
set dele on
&&清空临时表
sele syjc_1  &&临时表1
go top
do while .t.
IF EOF()
      EXIT
   ENDIF
IF .not.EOF()
dele
endif
skip
loop
enddo
&&清空临时表
sele syjc  &&临时表2
go top
do while .t.
IF EOF()
      EXIT
   ENDIF
IF .not.EOF()
dele
endif
skip
loop
enddo

sele 车间盘点 &&原料库
go top
do while .not.eof()
loca for date() > ctod(str(year(date()))+"-"+str(thisform.text1.value-1)+"-"+str(18)).and.date() < ctod(str(year(date()))+"-"+str(thisform.text1.value)+"-"+str(19))
do while found()
&&找日期等于选择月份的记录,拷至syjc——1表

sele syjc_1
go bottom
appe blan
repl 品名 with 车间盘点.品名
repl 单价 with 车间盘点.单价
repl 平方 with 车间盘点.平方
repl 金额 with 车间盘点.金额
sele 车间盘点
continue
enddo
enddo

sele syjc_1&&向syjc表传送统计好的记录
js=0
go top
do while .not.eof()
js=js+1
if eof()
exit
endif
if .not.eof()
go js
endif
store 品名 to pm
store 平方 to pf
store 单价 to dj
store 金额 to je
sele syjc
go bottom
appe blan
repl 品名 with pm
repl 单价 with dj
repl 平方 with pf
repl 金额 with je
sele syjc_1
if .not.eof()
skip
loca for 品名=syjc.品名.and.单价=syjc.单价 rest
do while found()
sele syjc
repl 平方 with 平方+syjc_1.平方
repl 金额 with 金额+syjc_1.金额
sele syjc_1
dele
continue
enddo
endif
sele syjc_1
enddo
搜索更多相关主题的帖子: 源程序 统计 
2011-05-18 08:30
go2011
Rank: 6Rank: 6
等 级:侠之大者
帖 子:56
专家分:445
注 册:2011-4-21
收藏
得分:20 
感觉你程序的循环有些混乱,试着改写了一下,不知是否是你原来的意思,供参考。

set safety off
set dele on
&&清空临时表
sele syjc_1  &&临时表1
zap

&&清空临时表
sele syjc  &&临时表2
zap

sele 车间盘点 &&原料库
set filter to [查找条件]  &&你原来的查找条件正确吗?似乎你的表差一个时间字段
go top
do while not eof()
&&将符合查找条件的记录拷至syjc_1表(如果syjc_1和车间盘点表结构一致,可直接使用append from更简单)
sele syjc_1
appe blan
repl 品名 with 车间盘点.品名,单价 with 车间盘点.单价,平方 with 车间盘点.平方,金额 with 车间盘点.金额
skip
enddo

&&统计数据
sele syjc_1
repl 平方 with 平方+平方,金额 with 金额+金额 all    &&这是你原来的统计方法,我不太明白,照抄在这里

&&向syjc表传送统计好的记录(不知你为什么要二个临时表,根据你的程序来看,一个syjc表就够了,也许你另有用处)
sele syjc
appen from syjc_1

&&清空syjc_1
sele syjc_1
zap


[ 本帖最后由 go2011 于 2011-5-18 21:05 编辑 ]
2011-05-18 18:10
mxmsdqd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-17
收藏
得分:0 
首先,谢谢go2011的回复,不过有些问题可能我需要解释一下
第一,为省事,这些数据表我都加到form的数据环境里了,不能用zap,我试过,因为不能独占
第二,查找条件为loca for date() > ctod(str(year(date()))+"-"+str(thisform.text1.value-1)+"-"+str(18)).and.date() < ctod(str(year(date()))+"-"+str(thisform.text1.value)+"-"+str(19))
就是text1输入月份,时间段是这个月减去一个月的18日之后到这个月19日之前的时间段。程序应该是验证通过了。
第三,syjc_1和syjc还有车间盘点的库结构完全一样,用这么多的目的是,我不大会用查询和视图,所以车间盘点符合记录的拷贝至syjc_1,不会破坏车间盘点库的数据,,再从syjc_1找相同品名,相同价格的数据拷贝至syjc,并且金额和平方数累加,相同品名不同价格的单独列出,再用syjc的库作为最终报表
思路大概是这样,请大家指教,谢谢!
2011-05-19 09:05
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
建议楼主花点时间学习一下selcet语句的使用,肯定会收到事半功倍的效果。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-05-19 11:23
go2011
Rank: 6Rank: 6
等 级:侠之大者
帖 子:56
专家分:445
注 册:2011-4-21
收藏
得分:0 
明白你的意思了,再试改程序如下,供参考
set safety off
set dele on
&&清空临时表
sele syjc_1  &&临时表1
zap
sele syjc  &&临时表2
zap

sele 车间盘点 &&原料库
set filter to [查找条件]
go top

&&将符合查找条件的记录拷至syjc_1表
sele syjc_1
appe from 车间盘点

&&向syjc表传送记录并进行统计
sele syjc_1
do while not eof()
scat memvar
sele syjc
loca for 品名=syjc_1.品名.and.单价=syjc_1.单价
if found()
repl 平方 with 平方+m.平方,金额 with 金额+m.金额
else
appe blan
gath from memvar
endif
sele syjc_1
skip
enddo

&&清空syjc_1
sele syjc_1
zap

二点说明:
1.数据表加到form的数据环境里也能用zap,只是要在数据环境相关表的属性中把Exclusive设成.T.
2.你的查找条件虽然在语法上没错,程序可以验证通过,但应该是查不到记录,因为查找条件没有和数据表记录有联系,也就是说数据表中没有一个时间字段来符合你查找的时间要求。

[ 本帖最后由 go2011 于 2011-5-20 00:53 编辑 ]
2011-05-20 00:52
mxmsdqd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-17
收藏
得分:0 
终于得到我想要的结果了,虽然最终的程序还是自己改好的,但还是要感谢go211的大力帮助,谢谢!
附通过的程序供参考(在字段内有日期字段)

set safety off
set dele on
&&清空临时表
sele syjc_1  &&临时表1
zap
sele syjc  &&临时表2
zap

sele 车间盘点 &&原料库
go top
set filter to date() > ctod(str(year(date()))+"-"+str(thisform.text1.value-1)+"-"+str(18)).and.date() < ctod(str(year(date()))+"-"+str(thisform.text1.value)+"-"+str(19))


&&将符合查找条件的记录拷至syjc_1表
sele syjc_1
appe from 车间盘点

&&向syjc表传送记录并进行统计
sele syjc_1
do while .t.
if eof()
exit
endif
go top
sele syjc
go bottom
appe blan
repl 品名 with syjc_1.品名
repl 单价 with syjc_1.单价
repl 平方 with syjc_1.平方
repl 金额 with syjc_1.金额
go bottom
sele syjc_1
dele
loca for 品名=syjc.品名.and.单价=syjc.单价
if found()
sele syjc
repl 平方 with 平方+syjc_1.平方,金额 with 金额+syjc_1.金额
sele syjc_1
dele
continue
endif
sele syjc_1
go top
loop
enddo

&&清空syjc_1
&&sele syjc_1
&&zap
sele 车间盘点
set filter to
2011-05-20 16:45
快速回复:请教库文件多条件查找并报表的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029350 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved