丢人啊,忘光了,问个基础问题

cloudice 2003-07-21 10:47:57
数年没有用VFP了,什么都忘了,惭愧惭愧

我现有一个dbf文件,中有"编码"和"id"两个字段,另有一个dbf文件,中有"编码"和"代码"两个字段,现在要求按照编码匹配,把第二个文件中的"代码"字段的值赋给第一个文件的"id"字段,该如何写命令?

我就记得
repl all id with 代码 for 编码=编码
了,后面的条件不记得怎么写了,惭愧。
...全文
11 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudice 2003-07-22
  • 打赏
  • 举报
回复
呵呵 fj_jiangqi(强盗) ,最后一种方法可行。我用的是visual studio 6.0。

sbwltan啊,你那样做,表结构好象被破坏掉了。

gyxqwer(糊涂神) 的方法在第一行报了command is missing required clause错误
ys497 2003-07-21
  • 打赏
  • 举报
回复
select 表1
do while .not.eof()
dmid=trim(id)
sele 表2
loca for allt(代码)=dmid
if found()
sele 表1
replace id with 表2.代码
endif
sele 表1
skip
endd
已试过,保你成功!!
流星尔 2003-07-21
  • 打赏
  • 举报
回复
select 表1
scan
cid=trim(id)
sele 表2
loca for trim(代码)=cid
if found()
sele 表1
replace id with 表2.代码
endif
sele 表1
endscan
fj_jiangqi 2003-07-21
  • 打赏
  • 举报
回复
你看一下id表,编码,字段是什么类型的?
独占打开id表,将编码字段左边弄个向上的箭号。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
cloudice 2003-07-21
  • 打赏
  • 举报
回复
还是出错了。

在第4行,报错信息一样。脸红中。。。。
fj_jiangqi 2003-07-21
  • 打赏
  • 举报
回复
close all
use c:\temp\id.dbf alia id in 0 excl
select id
index on 编码 to tag bm
set order to tag bm
use c:\temp\p_point.dbf alia p_point in 0 excl
select p_point
scan all for seek(编码,'id')
replace id with id.代码
endscan
要这样,你试试看。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
cloudice 2003-07-21
  • 打赏
  • 举报
回复
好象不成功,我建立了一个程序文件来执行:
select c:\temp\id.dbf
index on 编码 to tag bm
set order to tag bm
select c:\temp\p_point.dbf
scan all for seek(编码,c:\temp\id.dbf)
replace id with id.代码
endscan

系统报错:command contains unrecognized phrase/keyword
fj_jiangqi 2003-07-21
  • 打赏
  • 举报
回复
用replace一次性难以完成
select 表2
index on 编码 to tag bm
set order to tag bm
select 表1
scan all for seek(编码,'表2')
replace id with 表2.代码
endscan
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
gyxqwer 2003-07-21
  • 打赏
  • 举报
回复
select 2   选择2号工作区
use 表2          &&打开表2
index on 编码 to bm   &&按编码建立索引
select 1     &&选择1号工作区
use 表1      &&打开表1
index on 编码 to bm1   &&按编码建立索引
set real 编码 into b   &&按编码建立关联
repl all id with b->代码 &&用2号工作区代码替换当前工作区的ID

这样一个关联就行了,别的就不需要了
不知道行不行,不过我认为可以的
sbwltan 2003-07-21
  • 打赏
  • 举报
回复
select 表1.代码,表2.ID from 表1,表2 where 表1.代码=表2.代码 into cursor temp
use in 表1
sele temp
copy to 表1
搞定了,呵呵,记得给我分呀
fj_jiangqi 2003-07-21
  • 打赏
  • 举报
回复
close all
use c:\temp\id.dbf alia id in 0
use c:\temp\p_point.dbf alia p_point in 0 excl
select p_point
scan all
select id
locate for 编码=p_point.编码
select p_point
if !eof('id')
replace id with id.代码
endif
endscan
换一种方法试试看,这种方法速度会慢一些,顺便问一下,你的vfp用的是多少版本?
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
cloudice 2003-07-21
  • 打赏
  • 举报
回复
fj_jiangqi(强盗) ,上面所有字段都是字符型的。我按照你说的做了,还是在第4行报了错。

ys497(明尔) ,呵呵,偶怎么这么背呢,用你的方法,在select 表2的时候,告诉我file in use.


我都快不好意思问了。
net_steven 2003-07-21
  • 打赏
  • 举报
回复
select 表2
index on 编码 to tag bm
set order to tag bm
update 表1 set id=表2.代码 where seek(表1.编码,'表2','bm')

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧