注册 登录
编程论坛 VFP论坛

VF中两表数据替换,求帮助

nfd168 发布于 2021-03-09 10:32, 1935 次点击
将B表的数据填加到A表对应的表里,求帮助。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
9 回复
#2
wengjl2021-03-09 11:18
容易的,你传附件上来嘛
#3
nfd1682021-03-09 14:20
回复 2楼 wengjl
只有本站会员才能查看附件,请 登录
#4
wangzhiyi2021-03-09 14:39
第一,数据表文件不能用a-j单字母作为文件名,因为已给系统留作工作区代码;第二,建议楼主用关联后修改。你现在写的命令是VFP6.0的命令,VFP9以后的UPDATA改为SQL语句。
sele 1
use bbb.dbf
inde on ksh to a
sele 2
use aaa.dbf
inde on ksh to b
SET RELATION TO ksh INTO a
REPLACE ALL cj WITH a.ywcj FOR kmdm='01'
只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2021-3-9 14:52编辑过]

#5
nfd1682021-03-09 15:07
回复 4楼 wangzhiyi
谢谢
#6
吹水佬2021-03-09 15:49
最好能说明一下B表字段的含意,就不用去猜想。
不知猜得对不对
只有本站会员才能查看附件,请 登录

程序代码:
CREATE CURSOR kmb (kmdm C(2), km C(4))
INSERT INTO kmb    VALUES ("01","YWCJ")
INSERT INTO kmb    VALUES ("02","SXCJ")
INSERT INTO kmb    VALUES ("04","WLCJ")
INSERT INTO kmb    VALUES ("05","HXCJ")
INSERT INTO kmb    VALUES ("06","SWCJ")
INSERT INTO kmb    VALUES ("07","ZZCJ")
INSERT INTO kmb    VALUES ("08","LSCJ")
INSERT INTO kmb    VALUES ("09","DLCJ")
INSERT INTO kmb    VALUES ("31","WYCJ")
INDEX on kmdm TAG kmdm

USE a ALIAS ab IN 0
USE b ALIAS bb IN 0

SELECT bb
INDEX on ksh TAG ksh
SELECT ab
SET RELATION TO ksh INTO "bb", kmdm INTO "kmb"
REPLACE ALL cj WITH IIF(!EMPTY(ksh),EVALUATE("bb."+kmb.km),0)
SELECT * FROM ab




[此贴子已经被作者于2021-3-9 15:57编辑过]

#7
wengjl2021-03-09 17:53
程序代码:
   CLOSE DATABASES
   SELECT 0
   USE b ALIAS kg
   SELECT 0
   USE a ALIAS bmk
   SELECT kg
   SCAN
     cksh=kg.ksh
     FOR i=3 TO FCOUNT()
       zdmc=FIELD(i)
       zdm='KG.'+ZDMC
       DO case
         CASE zdmc='YWCJ'
            ckmdm='01'
         CASE zdmc='SXCJ'
            ckmdm='02'
         CASE zdmc='WLCJ'
            ckmdm='04'
         CASE zdmc='SWCJ'
            ckmdm='06'
         CASE zdmc='ZZCJ'
            ckmdm='07'
         CASE zdmc='LSCJ'
            ckmdm='08'
         CASE zdmc='DLCJ'
            ckmdm='09'
         CASE zdmc='WYCJ'
            ckmdm='31'
         CASE zdmc='HXCJ'
            ckmdm='05'         
       ENDCASE        &&& 将字段名转换为学科代码,以用于查找
       SELECT bmk
       LOCATE FOR bmk.ksh=cksh AND bmk.kmdm=ckmdm
       IF FOUND()
         REPLACE bmk.cj WITH EVALUATE(zdm)
       ENDIF
       SELECT kg
     ENDFOR
   ENDSCAN
#8
foxprosue2021-03-09 19:32
学习
#9
sdta2021-03-10 10:17
正常情况下,应该先有A表,然后再有B表,不知道楼主这样做的原因为何,能说说吗

[此贴子已经被作者于2021-3-10 11:41编辑过]

#10
sdta2021-03-10 10:25
B 表 成绩字段有 9 个,而 A 表 km 内容只有 6 个,并且顺序也不一样。
1