2017-06-05 54 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')