标题:关于&表.号码的求助
只看楼主
sharpex1
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2021-12-12
得分:0 
回复 10楼 mywisdom88
受教了,谢谢
2021-12-14 15:49
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
*!* 建立测试表
CLOSE DATABASES
t1 = "c:\" + "t1.dbf"
t2 = "d:\" + "t2.dbf"

create TABLE &t1(id i,f1 c(10))
create TABLE &t2(id i,f1 c(10))

insert into t1(id,f1) values (1,"")
insert into t1(id,f1) values (2,"")
insert into t1(id,f1) values (3,"")

insert into t2(id,f1) values (1,"t1")
insert into t2(id,f1) values (2,"t2")
insert into t2(id,f1) values (4,"t4")

CLOSE DATABASES && 关闭建立的表,此时VFP环境中,没有打开的表了。

*!* 假设不知道2个表的名称,用别名,表路径,用宏
update p1 set p1.f1=p2.f1 from &t1 as p1 ,&t2 as p2 where p1.id = p2.id


BROWSE
2021-12-14 15:52
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
回复 8楼 sharpex1
看12楼,应该是你要的
这种做法,表名称可以是任何不同的名称,和位置,
但要求表的结构要相同的

[此贴子已经被作者于2021-12-14 15:56编辑过]

2021-12-14 15:54
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
表2是实表名吗?如果不是的话,需要  &表2
2021-12-14 16:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 6楼 sharpex1
&表1.号码
这个“表1”变量名表示的是表名(或别名),不是文件名(路径+表文件名)
2021-12-14 18:14
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:10 
*!* 建立测试表
CLOSE DATABASES
t1 = "c:\" + "tt1"
t2 = "d:\" + "tt2"
a1 = "tt1.dbf"
a2 = "tt1"

create TABLE &t1(id i,f1 c(10))
create TABLE &t2(id i,f1 c(10))

insert into &t1(id,f1) values (1,"")
insert into &t1(id,f1) values (2,"")
insert into &t1(id,f1) values (3,"")

insert into &t2(id,f1) values (1,"t1")
insert into &t2(id,f1) values (2,"t2")
insert into &t2(id,f1) values (4,"t4")

CLOSE DATABASES && 关闭建立的表,此时VFP环境中,没有打开的表了。

*!* 这里,不需要知道表名称和路径,利用别名,也不理后缀名称是否带 Dbf t1 = "c:\" + "tt1" 或者 t1 = "c:\" + "tt1.dbf" 都可以
update p1 set p1.f1=p2.f1 from &t1 as p1 ,&t2 as p2 where p1.id = p2.id


?&t1..id  && 报错误,不识别
?&a1..id  && 报错误,找不到对象Tt1;这里是 a1 = "tt1.dbf",表名,带后缀.DBF
?&a2..id  && 正确,这里是 a2 = "tt1",表名称,不带后缀


2021-12-15 10:27
sharpex1
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2021-12-12
得分:0 
回复 16楼 mywisdom88
受教受教
2021-12-16 16:26
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
得分:0 
尽量不要用 &
USE (路径+'表1') ALIAS 表1 IN 0
update 表1 set 字段=表2.字段 from 表2 wher 表1.号码=表2.号码
2021-12-16 16:41
sharpex1
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2021-12-12
得分:0 
回复 18楼 kiff
为啥尽量不用& ?有啥更好好办法吗师兄。
我的数据分散在各个文件夹中,各种分析时经常要引用,如果程序前面定义好各数据路径,我无论在哪个文件夹做分析,都可以直接用&表名引用,不用每次写路径
2021-12-16 16:49
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
得分:10 
回复 19楼 sharpex1
方法一,在主程序设置搜索路径:
SET PATH TO 路径1,路径2,路径3...
之后可以直接使用数据表(不用加路径)
如:
update 表1 set 字段1=表2.字段1 from 表2 where 表1.字段2=表2.字段2

方法二,设置路径变量,然后引用路径变量打开数据表,再用引表名操作。
如:
use (路径变量+'表1') in 0
use (路径变量+'表2') in 0
update 表1 set 字段1=表2.字段1 from 表2 where 表1.字段2=表2.字段2


也可以这样:
update (路径变量+'表1') set 字段1=表2.字段1 from (路径变量+'表2') where 表1.字段2=表2.字段2






[此贴子已经被作者于2021-12-16 17:53编辑过]

2021-12-16 17:16



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




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

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