从两个表中搜索和替换值VFP 9

时间:2018-09-04 16:45:17

标签: visual-foxpro foxpro dbf

我有一个大学项目的bdf文件,我想从另一个表中给定匹配条件的值,测试每条记录(它们具有相同的id_number,但它们没有满足其他条件)。我一直坚持这样做,因为进行替换时,它仅从表中获取第一个参考值(而不是满足条件的值)。 那些没有条件1.Mp_id == d2.po的人将在参考表中添加ship2,对于不满足条件的其余部分,则添加ship2以寻找参数{ {1}}从参考表中检索prod_code

ship2

非常感谢!

2 个答案:

答案 0 :(得分:1)

不幸的是,“向您提供”代码并没有“教给您”有关如何执行此操作的任何信息。
下面的代码很快被编写下来,并且没有经过测试,但是,如果您花一些时间观看推荐的教程视频,则应该能够确定以下内容是否对您有用,如果不能,那么可能需要更改什么。

USE Ruta2 + "REFERENCE.dbf" IN 0 ALIAS d2 EXCL  && Open 'Child' table
SELECT D2
INDEX ON po TAG Po  && Index table on po field values
INDEX ON prod TAG Prod  && Index table on prod field values
SET ORDER TO po  && 'Activate' 'child' table Po index

USE Ruta + "FILE.dbf" IN 0 ALIAS d1   && Open 'Parent' table
SELECT D1
ALTER TABLE d1 ADD COLUMN ship c(10) &&create new column to fill in the reference
SET RELATION TO id INTO D2  && set relation such that d1.id = d2.po
REPLACE ALL d1.ship with d2.ship2 FOR !EMPTY(d2.po)

SELECT D2
SET ORDER TO Prod  && 'Activate' 'child' table Prod index
SELECT D1
SET RELATION TO prod_code INTO D2  && set relation such that d1.prod_code = d2.prod
REPLACE ALL d1.ship WITH d2.ship2 FOR !EMPTY(d2.prod) AND d1.Mp_id != d2.po  

祝你好运

答案 1 :(得分:1)

正如我所说,如果没有一些示例数据和示例输出,您不清楚要做什么。

您可以使用以下单个更新语句替换在... enddo时执行的操作:

Update d1 ;
    Set ship = d2.ship ;
    from d2 ;
    where d1.Mp_Id == d2.po Or d1.Prod_Code == d2.Prod