回 帖 发 新 帖 刷新版面

主题:关于两表操作的似乎很简单的难题。,,,晕@@@@

有量张表,表a和表b
两表的字段举例如下
表a:
编号   姓名   金额   银行帐号
1       aa     300    0
2       bb     300    0
3       cc     300    0       
4       dd     300    0
5       ee     300    0
表b:
编号    姓名     银行帐号
4        dd       4465656
2        bb       4644464
5        ee       4545545

我想吧表b的银行帐号按照编号对应填到表a
想起来好像很容易
怎么做起来这么困难啊
晕啊 。。。。
抓狂

下面是我的代码
不知道错在哪里
运行起来好像都停不了
use 表a
sele 2
use 表b
index on 编号 tag bh
sele 1
index on 编号 tag bh
set relation to 编号 into 2   %%%关联
sele 1
go top
do while !eof()
scan
update 表a set 表a.银行帐号=表b.银行帐号 where 表b.编号=表a.编号
endscan 
skip
enddo
sele 1
browse last

回复列表 (共5个回复)

沙发

我没有去试,从理论上讲是这样
USE 表b IN 0 &&最小工作区打开表b
INDEX on 姓名 TO sy_name UNIQUE &&建立姓名索引不要重复记录
USE 表a IN 0 &&最小工作区打开表a
SELECT 表b &&选择表b
DO whil !EOF(表b)
    *-用表b中的'银行帐号'替换表a中的'银行帐号',条件是表a的姓名=表b的姓名
    REPLACE 表a.银行帐号 WITH 表b.银行帐号 WITH ALLTRIM(表a.姓名) == ALLTRIM(表b.姓名)
    SKIP IN 表b &&到下一条,
ENDDO

板凳

所有版本都可以用:

SELECT 表b
INDEX ON 编号 TO 表b编号 
SELECT 表a
UPDATE ON 编号 FROM 表b REPLACE 表a.银行帐号 WITH 表b.银行帐号

3 楼

vfp 9 版本:

UPDATE 表a from 表b SET 表a.银行帐号 = 表b.银行帐号 WHERE 表a.编号 = 表b.编号

4 楼

使用循环应该这样:

USE 表a IN 0
SELECT 0
USE 表b
SCAN
    UPDATE 表a SET 表a.银行帐号=表b.银行帐号 WHERE 表b.编号 = 表a.编号
ENDSCAN  

5 楼

我一般用cbl518老师的“循环”方式:因为“编号”是“唯一”的,有了一一对应关系,紧紧抓住了“编号唯一”这点,也容易理解!层次分明!当然,用VFP9时,cbl518老师在3楼的语句简洁!

我来回复

您尚未登录,请登录后再回复。点此登录或注册