| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2541 人关注过本帖
标题:关于dbf文件中数据合并的问题
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 9楼 shyoow
提供部分数据表来
2013-01-31 11:09
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:298
专家分:808
注 册:2012-6-15
收藏
得分:0 
回复 10楼 shyoow
请你把数据表的A和B修改为你的数据表名称,或者作数据表别名,否则在交互方式下肯定会出问题!
SELECT 1
USE a ALIAS 表A  &&这里改为你的表名,一般来说,数据表名不宜用A或者B、C这样单个字母做表名
  INDEX ON ksbh TO ksbh
SELECT 2
USE b ALIAS 表B  &&这里改为你的表名
GO TOP
DO whil NOT EOF()
  mksbh=ksbh
  mxh=xh
  SELECT 1
   SEEK mksbh
   IF NOT EOF()
    REPLACE xh WITH mxh
   ENDIF
  SELECT 2
SKIP
ENDDO

学习交流VFP,QQ:248561326。
2013-01-31 11:31
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:7 
不知道楼主是否想达到以下效果?

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


只需用一条语句:SELECT T1.*, NVL(T2.Xh,"") AS Xh FROM T1 LEFT JOIN T2 ON T1.Ksbh=T2.Ksbh。其中,T1.DBF和T2.DBF分别相当于你案例中的A.DBF和B.DBF。这只是查询出一个中间表。如果你想把它弄到A.DBF(也就是我例子中的T1.DBF),可以在语句后面增加“INTO TABLE T3”子句,再删除T1.DBF,把T3.DBF改名为T1.DBF即可。




[ 本帖最后由 taifu945 于 2013-1-31 16:29 编辑 ]
2013-01-31 16:26
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用shyoow在2013-1-31 11:00:03的发言:

 
谢谢!版主您的程序输入后也显示嵌套错误,不知道什么原因!
没问题的
看结果图

图片附件: 游客没有浏览图片的权限,请 登录注册
2013-01-31 17:06
shyoow
Rank: 2
等 级:论坛游民
帖 子:42
专家分:14
注 册:2013-1-30
收藏
得分:0 
以下是引用tlliqi在2013-1-31 17:06:10的发言:

没问题的
看结果图

谢谢版主,不知道什么原因问题依旧。恕我数据不方便透漏!
2013-01-31 19:27
shyoow
Rank: 2
等 级:论坛游民
帖 子:42
专家分:14
注 册:2013-1-30
收藏
得分:0 
以下是引用taifu945在2013-1-31 16:26:43的发言:

不知道楼主是否想达到以下效果?



只需用一条语句:SELECT T1.*, NVL(T2.Xh,"") AS Xh FROM T1 LEFT JOIN T2 ON T1.Ksbh=T2.Ksbh。其中,T1.DBF和T2.DBF分别相当于你案例中的A.DBF和B.DBF。这只是查询出一个中间表。如果你想把它弄到A.DBF(也就是我例子中的T1.DBF),可以在语句后面增加“INTO TABLE T3”子句,再删除T1.DBF,把T3.DBF改名为T1.DBF即可。

你的方法能够解决我的问题,就是事先T1表中不能有xh这个字段,否则T1中就会新增xh_a这个字段.
另外如果T3、T4。。。等表中分别有如A、B、C等字段数据需要加入T1中,你的给出的程序还需要做怎么样的修改呢?非常感谢!
2013-01-31 19:29
shyoow
Rank: 2
等 级:论坛游民
帖 子:42
专家分:14
注 册:2013-1-30
收藏
得分:0 
以下是引用cxzbzgz在2013-1-31 11:31:55的发言:

请你把数据表的A和B修改为你的数据表名称,或者作数据表别名,否则在交互方式下肯定会出问题!
SELECT 1
USE a ALIAS 表A  &&这里改为你的表名,一般来说,数据表名不宜用A或者B、C这样单个字母做表名
  INDEX ON ksbh TO ksbh
SELECT 2
USE b ALIAS 表B  &&这里改为你的表名
GO TOP
DO whil NOT EOF()
  mksbh=ksbh
  mxh=xh
  SELECT 1
   SEEK mksbh
   IF NOT EOF()
    REPLACE xh WITH mxh
   ENDIF
  SELECT 2
SKIP
ENDDO

谢谢你的解答!我按照您的要求修改,但是问题仍在!
2013-01-31 19:30
shyoow
Rank: 2
等 级:论坛游民
帖 子:42
专家分:14
注 册:2013-1-30
收藏
得分:0 
以下是引用sdta在2013-1-31 00:54:59的发言:

SQL-SELECT 代码
SELECT A.KSBH,A.字段1,A.字段1,NVL(B.XH,[]) FROM A FULL JOIN B ON A.KSBH==B.KSBH INTO CURSOR TEMP

SELECT A.KSBH,A.字段1,A.字段1,NVL(B.XH,[]) FROM A LEFT JOIN B ON A.KSBH==B.KSBH INTO CURSOR TEMP

请问版主,这个字段1指的是其他的任意字段吗?
2013-01-31 20:22
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用shyoow在2013-1-31 19:29:07的发言:

 
你的方法能够解决我的问题,就是事先T1表中不能有xh这个字段,否则T1中就会新增xh_a这个字段.
另外如果T3、T4。。。等表中分别有如A、B、C等字段数据需要加入T1中,你的给出的程序还需要做怎么样的修改呢?非常感谢!
你自己不是在顶楼说“b.dbf文件中有一个xh字段在a.dbf中没有”的吗?那我这条语句不是正好?你能否把两个数据表的情况和需要的结果表达清楚?
2013-01-31 20:26
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 18楼 shyoow
对的
2013-01-31 20:26
快速回复:关于dbf文件中数据合并的问题
数据加载中...
 
   



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

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