| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 777 人关注过本帖
标题:请教老师们一个表连接记录的问题 谢谢了
只看楼主 加入收藏
baochenbc
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2015-1-9
结帖率:61.54%
收藏
已结贴  问题点数:20 回复次数:11 
请教老师们一个表连接记录的问题 谢谢了
请老师受累帮我看看
表a
图片附件: 游客没有浏览图片的权限,请 登录注册

表b
图片附件: 游客没有浏览图片的权限,请 登录注册

连接成表c
图片附件: 游客没有浏览图片的权限,请 登录注册

用命令
程序代码:
clear all
sele 1
use b.dbf
index on a tag a1
sele 2
use a.dbf
index on a tag a2
set relation a(a为字段名) into a(a为sele a)
repl all b with a.b for a=a.a
repl all d with a.d for a.a.a 
可以
lx.rar (9.39 KB)

但是我想问问 如果表中字段不是有4列 而是80多列
用repl all with 不就的80多行了么
有没有其他命令 谢谢了
搜索更多相关主题的帖子: 记录 
2015-04-01 10:41
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:5 
程序代码:
clear all
sele 1
use a1 && a.dbf 改为 a1.dbf
index on a tag aa

sele 2
use b1 && b.dbf 改为 b1.dbf
set relation to a into a1
scan
    if found("a1")
        for lnI=2 to fcount("b1")
            replace (field(lnI,"b1")) with evaluate("b1."+field(lnI,"b1")) in a1
        endfor
    endif
endscan
select a1
browse

坚守VFP最后的阵地
2015-04-01 11:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
如果一条语句ALL搞不定,可以SCAN一遍。
2015-04-01 11:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
也可以通过AFIELDS()处理,自己练习一下

坚守VFP最后的阵地
2015-04-01 11:30
baochenbc
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2015-1-9
收藏
得分:0 
回复 4楼 sdta
谢谢了
  
if found("a1")
         for lnI=2 to fcount("b1")
             replace (field(lnI,"b1")) with evaluate("b1."+field(lnI,"b1")) in a1
         endfor

这个看不太明白 lnI=2 fcount("b1") evaluate("b1."+field(lnI,"b1"))  什么意思 我查网上了 但是还是挺抽象

afields()函数是怎么回事
想了1小时也没理解  

谢谢老师请指教
2015-04-01 12:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
看帮助文件
只有不断汲取新的知识,才能不断提高编程水平

坚守VFP最后的阵地
2015-04-01 12:17
baochenbc
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2015-1-9
收藏
得分:0 
谢谢老师
2015-04-01 15:06
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:5 
楼主如果确定不是要把D列的内容截去一个字符的话,只需要以下一条命令即可解决:

SELECT A.a,NVL(B.b,"") B,NVL(A.c,"") C,NVL(B.d,"") D;
   FROM A LEFT JOIN B ;
      ON ALLTRIM(A.a)=ALLTRIM(B.a);
   INTO TABLE C
2015-04-03 22:19
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:5 
以下是引用sdta在2015-4-1 11:27:37的发言:

clear all
sele 1
use a1 && a.dbf 改为 a1.dbf
index on a tag aa
 
sele 2
use b1 && b.dbf 改为 b1.dbf
set relation to a into a1
scan
    if found("a1")
        for lnI=2 to fcount("b1")
            replace (field(lnI,"b1")) with evaluate("b1."+field(lnI,"b1")) in a1
        endfor
    endif
endscan
select a1
browse
红色代码:好象是b1表中第N个字段用b1表中第n个字段来代替(变成了本表中字段间替换),要更新的是a1表。不能理介,请指教。、一般是a1与b1关联a1表中某个字段值用b1相应的字段的值来替换,应该这样比较好理介:replace (field(lnI,"a1")) with evaluate("b1."+field(lnI,"b1")) in a1 。不知对否?
2015-04-04 18:01
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
field(lnI,"b1") 从B1表中获取的字段名<也是A1表中内容要被替换的字段名,此处只是借用了B1表中与A1表中具有相同的字段名而已>,如果当两个表中有相同字段时,表别名只有加上字段名,才能说明是那个表中的字段。

坚守VFP最后的阵地
2015-04-04 18:24
快速回复:请教老师们一个表连接记录的问题 谢谢了
数据加载中...
 
   



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

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