| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 966 人关注过本帖
标题:请问如何更新字段?
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
CREATE CURSOR A表 (单位名称 C(10),月份 N(2),字段1 C(10),字段2 C(10))
INSERT INTO A表 VALUES ([a单位],1,[asd],[])
INSERT INTO A表 VALUES ([a单位],2,[wer],[])
INSERT INTO A表 VALUES ([b单位],1,[hfg],[])
INSERT INTO A表 VALUES ([c单位],1,[kkk],[])
CREATE CURSOR B表 (单位名称 C(10),月份 N(2),字段1 C(10))
INSERT INTO B表 VALUES ([a单位],1,[asd])
INSERT INTO B表 VALUES ([a单位],2,[wer])
INSERT INTO B表 VALUES ([b单位],1,[hfg])
**VFP6.0代码
SCAN
   UPDATE A表 SET 字段2=B表.字段1 WHERE ALLTRIM(A表.单位名称)+TRANSFORM(A表.月份)==ALLTRIM(B表.单位名称)+TRANSFORM(B表.月份)
ENDSCAN
SELECT A表
BROWSE
**VFP9.0代码
UPDATE A表 SET 字段2=B表.字段1 FROM B表 WHERE ALLTRIM(A表.单位名称)+TRANSFORM(A表.月份)==ALLTRIM(B表.单位名称)+TRANSFORM(B表.月份)
SELECT A表
BROWSE
将条件变更一下就行了

[ 本帖最后由 sdta 于 2013-4-16 11:04 编辑 ]

坚守VFP最后的阵地
2013-04-16 10:46
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
收藏
得分:0 
回复 6楼 kiff
USE byhz IN 0 EXCLUSIVE
SELECT byhz.*,NVL(sdshz.sds,' ') sds FROM byhz byhz LEFT JOIN sdshz  ON  byhz.dwmc==sdshz.dwmc.and.byhz.yue==sdshz.yue INTO CURSOR TMP1
ZAP IN byhz
SELECT byhz
ZAP
APPEND FROM (DBF('TMP1'))

运行后sds字段为连接上去,不知哪有问题?
2013-04-16 11:06
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
以下是引用smart921在2013-4-16 11:06:34的发言:

USE byhz IN 0 EXCLUSIVE
SELECT byhz.*,NVL(sdshz.sds,' ') sds FROM byhz byhz LEFT JOIN sdshz  ON  byhz.dwmc==sdshz.dwmc.and.byhz.yue==sdshz.yue INTO CURSOR TMP1
ZAP IN byhz
SELECT byhz
ZAP
APPEND FROM (DBF('TMP1'))

运行后sds字段为连接上去,不知哪有问题?
这是你byhz表也有sds字段,查询后就自动改名了
你还是列出每个字段吧,不要 byhz.* 这样
2013-04-16 11:12
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
不知道你月份是数值型还是字符型,就先作为数值型吧:

USE B
INDEX ON ALLTRIM(单位名称)+ALLTRIM(STR(月份,2)) TAG 名称月份

SELECT 0
USE A
SET RELATION TO ALLTRIM(单位名称)+ALLTRIM(STR(月份,2)) INTO B
REPLACE ALL A.字段2 WITH B.字段1

RETURN

不知道你说的“数据不一定相同”是指哪方面。如果在单位名称+月份方面A表多于B表,且B表在关键字上的记录唯一,本段代码是没有问题的。不然,则只能用B表中第一条匹配记录的字段1去填充A表相应记录的字段2。不知道楼主有没看懂我这句话。
2013-04-16 15:34
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
程序代码:
CREATE CURSOR A表 (单位名称 C(10),月份 N(2),字段1 C(10),字段2 C(10))
INSERT INTO A表 VALUES ([a单位],1,[asd],[])
INSERT INTO A表 VALUES ([a单位],2,[wer],[])
INSERT INTO A表 VALUES ([b单位],1,[hfg],[])
CREATE CURSOR B表 (单位名称 C(10),月份 N(2),字段1 C(10))
INSERT INTO B表 VALUES ([a单位],1,[asd])
INSERT INTO B表 VALUES ([a单位],2,[wer])
INSERT INTO B表 VALUES ([b单位],1,[hfg])
SELECT B表
FOR i=1 TO RECCOUNT()
GO i
qz1=字段1
   UPDATE A表 SET 字段2=qz1 WHERE 单位名称=B表.单位名称 AND 月份=B表.月份
ENDF
SELECT A表
BROWSE
2013-04-16 19:42
快速回复:请问如何更新字段?
数据加载中...
 
   



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

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