| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3286 人关注过本帖
标题:请教二表随机整行替换代码中的一个错误提示
只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 20楼 laowan001
只10条的话是不会很多,从遍历的角度讲也不多的,但每一次替换时都是以原来的A为标准被B的随机几行替换了,所以相似度也不会越来越高的


[此贴子已经被作者于2022-2-15 08:08编辑过]

2022-02-15 08:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
回复 21楼 fdxxhjc
那就只是对原A表、B表做一次随机选择替换,不存在多次随机选择替换过程。
2022-02-15 08:38
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 22楼 吹水佬
打个比方,我共要进行3次替换(这个次数多少可以让人选择),第一次产生了3个随机数此时将B表中的3整行替换了原A的对应3行,第二次产生了7个随机数此时将B表中的7整行替换了原A的对应7行,第三次产生了1个随机数此时将B表中的1整行替换了原A的对应1行,而原A表是保持原样不变的
2022-02-15 09:23
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1068
专家分:2609
注 册:2015-12-30
收藏
得分:0 
既然替换了A表,A表怎么还保持原样不变呢?
2022-02-15 09:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
CREATE CURSOR ta (bh I, f1 C(4))
CREATE CURSOR tb (bh I, f1 C(4))
FOR i=1 TO 9
    INSERT INTO ta VALUES (i,"a"+TRANSFORM(i))
    INSERT INTO tb VALUES (i,"b"+TRANSFORM(i))
ENDFOR
SELECT ta
INDEX on bh TAG ta_bh
RAND(-1)
SELECT tb
INDEX ON RAND() TAG tb_r
SET RELATION TO bh INTO "ta"
ran = INT((RECCOUNT("tb")-1)*RAND()+1)
? " 取 "+TRANSFORM(ran)+" 条记录"
i = 0
SCAN FOR i<ran
    ? bh,f1
    i = i+1
    SCATTER MEMVAR
    SELECT ta
    GATHER MEMVAR
ENDSCAN
SELECT * FROM ta
2022-02-15 10:23
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 25楼 吹水佬
先生我是这样认为的,原A表当被B表替换后所得的结果是记录在“替换结果记录表.dbf”中的,所以原A表保持不变,或者说是从原A拷贝一份临时表来被B表替换,这样原A表就一直保持不变了,我的这个逻辑不知能否行得通,谢谢先生
2022-02-15 12:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
示例中的ta、tb都是临时表,不影响原表。
可以从A表、B表取数或复制得到。
ta就是结果表,表名字不是问题。

[此贴子已经被作者于2022-2-15 12:54编辑过]

2022-02-15 12:51
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 27楼 吹水佬
先生您好,我用 COPY  TO  替换结果记录表.dbf 在记录表中得到的结果与您的查询中的结果怎么不一样的,并且在记录表中记录下的不是替换后的数字(10行6列的形式)
2022-02-15 17:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
回复 28楼 fdxxhjc
给代码测试看看
2022-02-15 17:36
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 29楼 吹水佬
谢谢先生

ACTIVATE SCREEN
CLEAR
CLOSE DATABASES
SET SAFETY OFF
CREATE CURSOR ta (bh I, f1 C(4))
CREATE CURSOR tb (bh I, f1 C(4))
FOR i=1 TO 9
    INSERT INTO ta VALUES (i,"a"+TRANSFORM(i))
    INSERT INTO tb VALUES (i,"b"+TRANSFORM(i))
ENDFOR
SELECT ta
INDEX on bh TAG ta_bh
RAND(-1)
SELECT tb
INDEX ON RAND() TAG tb_r
SET RELATION TO bh INTO "ta"
ran = INT((RECCOUNT("tb")-1)*RAND()+1)
? " 取 "+TRANSFORM(ran)+" 条记录"
i = 0
SCAN FOR i<ran
    ? bh,f1
    i = i+1
    SCATTER MEMVAR
    SELECT ta
    GATHER MEMVAR
ENDSCAN
SELECT * FROM ta
COPY  TO  替换结果记录表.dbf
2022-02-15 18:19
快速回复:请教二表随机整行替换代码中的一个错误提示
数据加载中...
 
   



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

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