标题:如何将一个表的记录追加到另一个表里
只看楼主
navigationli
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-5-14
结帖率:66.67%
已结贴  问题点数:20 回复次数:8 
如何将一个表的记录追加到另一个表里
KCK (6条记录)
KW  (4条记录)
两个表之间没有主关键字段可用,两表行数是一样的
通过命令方式,把1图KCK(shum,dj,sjcbsj)共6条记录追加最后尾部的两条记录给 2图KW尾部(kw,其他字段原记录依然保留),最终完成3图效果
图1KCK


图2KW

图3KW




[此贴子已经被作者于2020-5-14 16:10编辑过]

搜索更多相关主题的帖子: 其他 表里 追加 尾部 记录 
2020-05-14 15:59
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
只有2条记录,那很简单啊,表的结构也相同
use KCK in 0
select * from kck where dj=30 into array _kck && 最后2条记录的 DJ=30,刚好就把他查询出来放到数组去
use kw in 0
append from array _kck &&追加数组的记录
2020-05-14 17:22
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:5 
insert into kw select * from kck where recno() >= reccount() - 2

坚守VFP最后的阵地
2020-05-15 09:48
navigationli
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-5-14
得分:0 
首先谢谢以上二位提供的解决问题的思路,我的初衷是解决两个表之间对应字段的记录追加,1表(KCK)如果有1000条,2新表(KW)有800条,他们两表有共有的字段(2新表KW也有自己的新字段),需要把1表800记录号以后的那200条按原顺序追加到2表里,二楼哥们,我执行后提示语法错误。后来我自己写了一段,但每次都要执行一次,才能逐条从KCK 800记录...后,去取一条追加到2新表,现在要问的是这个循环应该怎么写呢?而且最后当两个表记录数(行数)完全一致时,要求退出循环(否则就会一直往新表里加空的记录行)。附以下代码:
use kck.dbf   
a=recc()  &&统计记录个数  
use kw.dbf  
b=recc()  
c=a-b-1  &&统计未追加的记录个数  
use kck.dbf  
go bott &&到最后一条记录底部  
skip -(c) &&从最后一条记录算,定位到 倒数第几条记录 (要添加给KW的记录)
&&以下执行一次只能增加一条记录,需要循环处理,判断KCK 和 KW是否为记录底部(行数一致都为1000条时),为底部时终止循环
Scat field shum,dj,mbcs,sjcbsj to aa
use e:\xkw\kw.dbf
Go bott
Appe blank
gath field shum,dj,mbcs,sjcbsj from aa
brow  
红色部分是两表共有字段,黄色为2新表KW独有字段,因为KCK每隔一段时间就会增加新的记录,所以才想写个程序,自动可以追加的2新表里,再用2新表做别的查询




[此贴子已经被作者于2020-5-16 09:04编辑过]

2020-05-16 08:41
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
要活学活用,举一凡三,代码书写上才有所提高,只是照葫芦画瓢是不行的
不提供数据,别人写的代码完全符合你的要求是不可能的

[此贴子已经被作者于2020-5-16 09:24编辑过]


坚守VFP最后的阵地
2020-05-16 09:12
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用navigationli在2020-5-16 08:41:04的发言:

首先谢谢以上二位提供的解决问题的思路,我的初衷是解决两个表之间对应字段的记录追加,1表(KCK)如果有1000条,2新表(KW)有800条,他们两表有共有的字段(2新表KW也有自己的新字段),需要把1表800记录号以后的那200条按原顺序追加到2表里,二楼哥们,我执行后提示语法错误。后来我自己写了一段,但每次都要执行一次,才能逐条从KCK 800记录...后,去取一条追加到2新表,现在要问的是这个循环应该怎么写呢?而且最后当两个表记录数(行数)完全一致时,要求退出循环(否则就会一直往新表里加空的记录行)。附以下代码:
use kck.dbf   
a=recc()  &&统计记录个数  
use kw.dbf  
b=recc()  
c=a-b-1  &&统计未追加的记录个数  
use kck.dbf  
go bott &&到最后一条记录底部  
skip -(c) &&从最后一条记录算,定位到 倒数第几条记录 (要添加给KW的记录)
&&以下执行一次只能增加一条记录,需要循环处理,判断KCK 和 KW是否为记录底部(行数一致都为1000条时),为底部时终止循环
Scat field shum,dj,mbcs,sjcbsj to aa
use e:\xkw\kw.dbf
Go bott
Appe blank
gath field shum,dj,mbcs,sjcbsj from aa
brow  
红色部分是两表共有字段,黄色为2新表KW独有字段,因为KCK每隔一段时间就会增加新的记录,所以才想写个程序,自动可以追加的2新表里,再用2新表做别的查询

*!* VFP 9.0
use kck in 0 && 注意表的路径
use kw in 0 && 注意表的路径
select * from kck where recn()>=recc()-200 into array _kck && recn()>=recc()-200,好像就是最后200条的意思,没测试
select kw
append from array _kck
2020-05-16 13:13
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:15 
你1楼,没有说表的结构不同。
如果结构不同,是不可以的。
*!* VFP 9.0
use kck in 0 && 注意表的路径
use kw in 0 && 注意表的路径
select 字段1,字段2,字段3,字段4 from kck where recn()>=recc()-200 into array _kck && recn()>=recc()-200,好像就是最后200条的意思,没测试
if type("_kck") = "N" && 上面的查询有记录时,才生成数组的
  select kw
  append from array _kck fields 字段1,字段2,字段3,字段4
endif

[此贴子已经被作者于2020-5-16 13:32编辑过]

2020-05-16 13:21
navigationli
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-5-14
得分:0 
感谢 @ mywisdom88 及sdta 二位的引导和帮助,现已调试成功,真是令我等醍醐灌顶.说些旁的,感觉在EXCEL里很简单的行和列操作,剪切粘贴,在VFP里实现如此复杂。很佩服前人所做的努力。代码附下,亲测有用!
set defa to e:\xkw
use kck.dbf   
a=recc()  &&统计记录个数  
use kw.dbf  
b=recc()  
c=a-b-1  &&统计未追加的记录个数  
close all
?c
use kck in 0 && 注意表的路径
use kw in 0 && 注意表的路径
select shum,dj,mbcs,sjcbsj from kck where recn()>=recc()-c into array _kck && recn()>=recc()-记录(行)差,好像就是最后N条的意思,字段属性的结构和顺序要和KCK一致KCK.dbf  shum c(42) dj n(7.2) mbcs n(6) sjcbsj D(8)

select kw
append from array _kck
2020-05-17 11:52
navigationli
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-5-14
得分:0 
以下是引用mywisdom88在2020-5-16 13:13:21的发言:


*!* VFP 9.0
use kck in 0 && 注意表的路径
use kw in 0 && 注意表的路径
select * from kck where recn()>=recc()-200 into array _kck && recn()>=recc()-200,好像就是最后200条的意思,没测试
select kw
append from array _kck

谢谢大卡,亲测有效!!!!!
2020-05-17 11:53



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




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

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