作者在 2022-01-18 13:54:19 发布以下内容
VFP 用一个库内容更新另一个库(6.0和9.0解决方案)
*!* 用一个库内容更新另一个库:
*!* VFP 6.0版
USE FWZ ALIAS FWZ IN 0
USE FWZ1 ALIAS FWZ1 IN 0
*********建立索引加快速度
SELECT FWZ
INDEX ON ZXH TAG ZXH
set order to zxh
SELECT FWZ1
INDEX ON ZXH TAG ZXH
set order to zxh
*********建立索引加快速度
SELE FWZ1
UPDATE ON ZXH FROM FWZ REPLACE FS WITH IIF(FWZ.XB='男',13,15)
*!* VFP 9.0版
update fwz1 set fs=IIF(FWZ.XB='男',13,15) from fwz WHERE fwz1.zxh=fwz.zxh
说明
VFP 6.0中的UPDATE实际对应了两种 命令形式。UPDATE 命令形式 和 update - sql 命令形式,语法分别来自于FOXPRO和 其他数据库的SQL语言
但6.0中的UPDATE -SQL 命令功能并不强,限制也比较多,针对本问题反而操作不便。
所以在这里使用的是VFP 6.0的UPDATE 命令,需要条件是 对应的数据表已经打开,如果建立索引并排序可以加快速度,在命令中使用ON,REPLACE 关键字,是FOXPRO的命令延伸。
VFP 9.0的命令更接近于其他数据库,比如SQLserver,mysql等。比较通用,功能也更为强大。
*!* 用一个库内容更新另一个库:
*!* VFP 6.0版
USE FWZ ALIAS FWZ IN 0
USE FWZ1 ALIAS FWZ1 IN 0
*********建立索引加快速度
SELECT FWZ
INDEX ON ZXH TAG ZXH
set order to zxh
SELECT FWZ1
INDEX ON ZXH TAG ZXH
set order to zxh
*********建立索引加快速度
SELE FWZ1
UPDATE ON ZXH FROM FWZ REPLACE FS WITH IIF(FWZ.XB='男',13,15)
*!* VFP 9.0版
update fwz1 set fs=IIF(FWZ.XB='男',13,15) from fwz WHERE fwz1.zxh=fwz.zxh
说明
VFP 6.0中的UPDATE实际对应了两种 命令形式。UPDATE 命令形式 和 update - sql 命令形式,语法分别来自于FOXPRO和 其他数据库的SQL语言
但6.0中的UPDATE -SQL 命令功能并不强,限制也比较多,针对本问题反而操作不便。
所以在这里使用的是VFP 6.0的UPDATE 命令,需要条件是 对应的数据表已经打开,如果建立索引并排序可以加快速度,在命令中使用ON,REPLACE 关键字,是FOXPRO的命令延伸。
VFP 9.0的命令更接近于其他数据库,比如SQLserver,mysql等。比较通用,功能也更为强大。
建议大家升级到9.0.
还可以这样:
Use 表1
Index On 字段1 To 表1_ls
Set Order To 表1_ls
Use 表2 In 0
Select 表2
Set Relation To 字段1 Into 表1 && 如字段不是完全比配也可以这样:Set Relation To Left(字段1,3) Into 表1
Replace All 字段2 With 表1.字段2