2017-06-05 55 views
1

我在此寻求解决方案。每个月我都有一个dbf。在每个dbf中有两列名为A和B,A是一系列数字,B是vlookup,并且如果列A中的值未出现在1月的列A中,我想在2月份将列B替换为“新” ,反之亦然,“老”。我的代码如下:Foxpro替换为“”不在

REPLACE ALL B WITH "Old" 
REPLACE ALL B WITH "New" FOR A NOT IN (sele A FROM &filejanuary) 

谢谢。

回答

1

以上评论者很接近。
使用SQL UPDATE命令...

* --- Replace ALL Feb.B with "Old" --- 
UPDATE February SET February.B = 'Old' 

* --- Now change Feb.B to "New" for Applicable Conditions --- 
UPDATE February SET February.B = 'New' ; 
    WHERE February.A NOT IN (SELECT A FROM January) 

注 - 也有VFP命令的方法

* --- Replace ALL Feb.B with "Old" --- 
SELECT February 
REPLACE ALL February.B WITH "Old" 

* --- Relate table January to table February through Field A --- 
SELECT January 
SET ORDER TO A && Assumes Index built on Jan with Expression = A 

SELECT February 
SET RELATION TO A INTO January 
* --- Replace ALL Feb.B with "New" for No Related A in Jan --- 
REPLACE ALL B WITH "New" FOR EMPTY(January.A) 

好运

+0

是的,我已经使用@Dhugalma的命令完成了它。感谢这两个。 –

+0

当你说“上面的评论员很近”时,你的意思是什么?什么部分不适合你?你可以在SQL和VFP中使用许多不同的形式来做同样的事情。 @昂艺威,它不是很接近目标。你不应该以假设作出决定并先尝试。顺便说一句,“关闭”代码甚至可以在VFP5中工作。 –

0
update February set February.B = 'Old' 
update February set February.B = 'New' ; 
    where not exists (select * from January where January.A = February.A) 
+0

我认为该命令可以用于其他SQL语言,但不能直接在FoxPro中使用 –

+0

该代码也适用于fox pro。当说到狐狸亲时,你在说哪个版本? –

+0

对于迟到回复感到抱歉,我目前使用VFP7.0 –

0

此外,如果你想用的xBase,那么它如果在January.A上有一个索引,它会简单得多。(可以说它的标签是JanA--谁真的可以命名字段A,B ......):

select February 
replace all B with iif(seek(February.A, 'January', 'JanA'), 'Old', 'New')