从另一个表vfp6更新

时间:2016-10-25 02:48:36

标签: visual-foxpro foxpro

我试图在VPF6中执行此操作:

Update Table1 From table2 Where table1.id = table2.id ;
Set table1.name = table2.name

我只从@EdPecyna找到VFP9的解决方案:visual foxpro - need to update table from another table

非常感谢

2 个答案:

答案 0 :(得分:2)

您无法在VFP 6中的一个命令中执行此操作,因为该版本中的SQL引擎不支持“更新来自”。所以你必须写一些代码。

假设' id'在两个表格中都是独一无二的:

select table2
scan
    update table1 where table1.id = table2.id set table1.name = table2.name
endscan

答案 1 :(得分:1)

在VFP6中,你需要像Alan B.已经展示的那样在循环中完成它。

但是,如果您通过VFPOLEDB使用VFP9引擎,则可以使用您在VFP5或VFP3中尝试过的样式。这有时非常有用,允许您执行旧版本中不可用的SQL。即:

Local cn
cn = createobject('adodb.connection')
cn.ConnectionString = 'Provider=VFPOLEDB;Data Source=c:\MyDataFolder\'
cn.Open()
cn.Execute('set exclusive off')
cn.Execute('Update table1 set name=table2.name from table2 where table1.Id=table2.id')
cn.Close()