下面是个热心朋友写的,我运用在实际中,但是报错.请教
有2个DBF。一个为a.dbf.一个为b.dbf
在a里一个这样的字段dm1.下面有记录
dm1
1
120
23
....
在b里一个这样的字段dm2.下面也有记录
dm2
22
120
23
1
.....
现在我想写个语句把其中b.dbf中的记录如果在a.dbf中的记录也有就找出来。该如何写啊
************************************************************************************
下面是个热心朋友写的,我运用在实际中,但是报错
sele 1
use d:\gdk.dbf
sele 2
use d:\bd59999.dbf
copy to temp
use temp
sele 1
go top
do while not eof()
zd1=stock_ac2
zd2=inv_code ************报字段inv_code 没有方向,但是这个字段肯定存在,上面加句
****sele 2就不报.请问如何解决
sele 2
loca for stock_ac2=zd1 and inv_code=zd2 and not dele()
if found()
dele
endif
sele 1
if not eof()
skip
endif
enddo
sele 2
copy to 3.dbf for dele()
use 3.dbf
reca all
clos data
问题点数:20、回复次数:8Top
1 楼cdbqss1(胖胖)回复于 2004-09-01 21:56:08 得分 0
select * from b where b.dm2 in (select a.dm1 from a)行不?
Top
2 楼dfwxj(清风)回复于 2004-09-02 00:15:08 得分 0
字段不明Top
3 楼apple_8180(十豆三)回复于 2004-09-02 09:13:13 得分 0
你的d:\gdk.dbf 没有inv_code字段,如果不行,你把gdk.dbf 和bd59999.dbf的所有字段告诉我。Top
4 楼okzdf(okzdf)回复于 2004-09-02 10:05:59 得分 0
胖胖說的對,用嵌套SQL語句可以完成!Top
5 楼fuchongpppp(天冷不宜私奔)回复于 2004-09-02 11:25:16 得分 0
网友胖胖写的在FOXPRO里面执行不了Top
6 楼apple_8180(十豆三)回复于 2004-09-02 12:55:18 得分 20
**我得知你这两表的字段,把代码改了一下:你试一下,肯定没问题:
sele 1
use d:\gdk.dbf
sele 2
use d:\bd59999.dbf
copy to temp
use temp
sele 1
go top
do while not eof()
zd1=stock_ac2
sele 2
loca for inv_code=zd1 and not dele()
if found()
dele
endif
sele 1
if not eof()
skip
endif
enddo
sele 2
copy to 3.dbf for dele()
use 3.dbf
reca all
clos dataTop
7 楼dfwxj(清风)回复于 2004-09-03 00:34:20 得分 0
if not eof()
skip
endif
这三行代码是什么意思?看不懂,在外层循环时已经用到了“not eof()”这个条件,所以在循环休内这个表达式永远是.t.!Top
8 楼apple_8180(十豆三)回复于 2004-09-03 08:50:23 得分 0
**dfwxj(清风)说的有道理,那么最精简代码为下:
sele 1
use d:\gdk.dbf
sele 2
use d:\bd59999.dbf
copy to temp
use temp
sele 1
go top
do while not eof()
zd1=stock_ac2
sele 2
loca for inv_code=zd1 and not dele()
if found()
dele
endif
sele 1
skip
enddo
sele 2
copy to 3.dbf for dele()
use 3.dbf
reca all
clos data
Top




