标题:刚学VFP,请教一个简单的问题
只看楼主
jspxygy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-1-13
结帖率:50%
已结贴  问题点数:20 回复次数:9 
刚学VFP,请教一个简单的问题
因为要处理一些DBF文件,刚刚开始学习VFP.有个问题请教大家

两张表大致的样式如下:
表1
代码   姓名    总分   语文   数学  英语   物理  ...  
32003  李军
32005  宋晓丽
32006  何玉峰
32009  钟志刚
32012  刘化松
...     ...

表2
代码    数学   英语
32001   121    92
32002   98     93
32003   126    94
32004   106    84
32005   96     88
...     ...    ...

任务:根据代码,把表2中的成绩写入到表1中

我写的代码如下:

update 表1 set 英语=表2.英语 from (select 英语 from 表2)  where  表2.代码=表1.代码

运行时,系统提示"命令中有不能识别的短语或关键字"

求教:
1.如何改正这个代码?
2.还有没有别的写法?我试着用scan写了一下,也没成功.如果用scan写,该怎么写啊?

(PS:最好写细点啊,我是急用先学,还没学好呢,单位就让干活了,真的没办法)
搜索更多相关主题的帖子: 英语 update 宋晓丽 where 
2012-01-13 10:42
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:4 
vfp9
update 表1 set 表1.英语=表2.英语 where 表2.代码=表1.代码

2012-01-13 11:18
r411
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2011-5-6
得分:4 
update 表1 SET 语文=表2.语文,数学=表2.数学,英语=表2.英语,物理=表2.物理 from 表2 where 表1.代码=表2.代码
replace all 总分 with val(语文)+val(数学)+val(英语)+val(物理)

忘记说了,这个是9.0的

[ 本帖最后由 r411 于 2012-1-13 11:57 编辑 ]
2012-01-13 11:34
jspxygy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-1-13
得分:0 
晕了,我用的是VFP6.0
用了你的代码,居然还是报错
2012-01-13 11:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:4 
這個情形不需要把表2的數據抄到表1的,否則你劃分成兩個表就沒有意義了。表1不需要有那些成績字段。用合併查詢指令可以把兩個表合併成一個表,你自己查一查指令清單。

授人以渔,不授人以鱼。
2012-01-13 11:56
jspxygy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-1-13
得分:0 
以下是引用TonyDeng在2012-1-13 11:56:21的发言:

這個情形不需要把表2的數據抄到表1的,否則你劃分成兩個表就沒有意義了。表1不需要有那些成績字段。用合併查詢指令可以把兩個表合併成一個表,你自己查一查指令清單。
这两张表,其实就是个样式.
事实上,我需要将二十多张表的数据,按照一定的条件,写到一张表中.
2012-01-13 12:57
软件服务
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:344
专家分:736
注 册:2011-12-23
得分:4 
select 表1
scan
lc代码=表1.代码
select 表2
loca for 代码=lc代码
if !eof()
select 表1
repl 英语 with 表2.英语
endif
endscan

 
2012-01-13 13:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
多少張表都是一樣的

授人以渔,不授人以鱼。
2012-01-13 13:22
软件服务
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:344
专家分:736
注 册:2011-12-23
得分:0 
程序代码:
select 表1

 scan

 lc代码=表1.代码

 select 表2

 loca for 代码=lc代码

 if !eof()

 select 表1

 repl 英语 with 表2.英语

 endif

 select 表3

 loca for 代码=lc代码

 if !eof()

 select 表1

 repl 英语 with 表2.英语

 endif

 select 表4

 loca for 代码=lc代码

 if !eof()

 select 表1

 repl 英语 with 表2.英语

 endif

 select 表5

 loca for 代码=lc代码

 if !eof()

 select 表1

 repl 英语 with 表2.英语

 endif

 select 表6

 loca for 代码=lc代码

 if !eof()

 select 表1

 repl 英语 with 表2.英语

 endif

 select 表7

 loca for 代码=lc代码

 if !eof()

 select 表1

 repl 英语 with 表2.英语

 endif

 endscan

 
2012-01-13 14:28
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
得分:4 
如果楼主的二十多张表的数据,是想合并到一个总表,并且总表是以 ‘代码、姓名’为线索,罗列各学科的成绩和总分。那么是否试试以下方法:
USE 总表
APPE FROM 表1
APPE FROM 表2
APPE FROM 表3
APPE FROM 表4
...
APPE FROM 表N
INDE ON 姓名 TAG 代码
TOTA ON 姓名 TO 临时表
USE 临时表
REPL ALL 总分 WITH 语文+数学+英语+物理+...
COPY TO 总表、

注意 总分、语文、数学、英语、物理  ...  字段是数字型字段。

 
2012-01-13 15:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-359616-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.185520 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved