从一个数据库表里面往另一个数据库表里面导入数据问题
我有一个数据库表 人员信息.dbf,另外有一个数据库表 报送.dbf,两个表的结构完全一样。报送.dbf数据库表里面有一个字段 bs,其中bs有1、2、3三种,其中1代表新增,2代表减少,3代表信息变更。我想实现的功能是将 报送.dbf里面的所有bs等于1的记录添加到 人员信息.dbf里,将 报送.dbf里面的所有bs等于2的记录从 人员信息.dbf里删除,将 报送.dbf里面的所有bs等于3的记录跟新 人员信息.dbf里的相应记录。记录之间通过字段“身份证号”识别。
我写的代码如下,但是没有实现我的功能,请高手指点:
_dwmc=thisform.combo1.value
_bdy=thisform.text1.value
_FILE = GETFILE('dbf')
IF TRIM(_FILE) == ''
CLOSE ALL
RETURN
ENDIF
RE = ;
MESSAGEBOX('从' + TRIM(_FILE) + '引入已处理的新增库,是否进行???',292,'数据引入信息窗口')
IF RE = 6
sele 4
use &_file
COPY TO ttemp.dbf
use
sele 3
use ttemp
_bdy1=bdy
use
if _bdy1=_bdy
sele 3
set filt to bs=2 or bs=3
do while !eof()
_xm=姓名
_sfzh=身份证号
sele 2
locate all for 姓名=_xm and 身份证号=_sfzh
if found()
dele
endif
skip
enddo
set filt to
sele 4
use
sele 3
use
sele 2
pack
APPEND FROM ttemp for bdy=_bdy.and.bs=1
APPEND FROM ttemp for bdy=_bdy.and.bs=3
RE = MESSAGEBOX('*** 数据已引入 ***',64,'信息窗口')
dele file ttemp.dbf
sele 1
use 单位信息
thisform.release
else
MESSAGEBOX('所选库中数据与要引入的月份不一致,请核实!',64,'信息窗口')
sele 1
thisform.release
endif
else
return
ENDIF
[解决办法]
*-- VFP6.0 用如下代码
Delete From 人员信息 Where 身份证号 In (Select 身份证号 From 报送 Where 报送.bs=2 Or 报送.bs=3)
Pack In 人员信息
Select 人员信息
Append From 报送 For bs=1 Or bs=3