| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 325 人关注过本帖
标题:【求助】ssek结果出错
取消只看楼主 加入收藏
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
结帖率:94.59%
收藏
已结贴  问题点数:20 回复次数:4 
【求助】ssek结果出错
从一个总表中按不同条件筛选出部分结果,通过seek找出最匹配的行号。如果在这条记录后面的记录数超过90条,则把多出的记录删除。在绝大部分情况下,seek出的行号是正确的。但偶尔出现seek出的行号为0,不能得出正确结果。附件中分别给出了2个测试用表及部分代码,请指教!
另外,通过检查发现,seek出的行号,大部分情况是与条件最匹配的,少数情况下会指向最匹配行的下一行。不知是何原因?

测试.rar (111.37 KB)
搜索更多相关主题的帖子: 结果 匹配 seek 条件 出错 
2024-05-17 12:56
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
代码如下:

*** a表的Z正确,a1表的Z错误。

USE a1
SORT TO sxb ON zhbfd
use
USE sxb IN 0
SELECT sxb

*wcbfd=VAL(STRCONV(wch,2))/300000*100  &&程序中从另一个表单取wch,此处测试时简化,直接赋值
*wcbfd=8.85  && a表测试用
wcbfd=34.958  && a1 表测试用
 r=RECCOUNT()  &&表总行数

 SET NEAR ON
 INDEX on zhbfd TAG wc
 SEEK wcbfd
z=RECNO(0)
?z  &&显示Z=0
GO z
SCATTER TO aLs
REPLACE bzk WITH "囙"  &&奇怪的是,虽然显示Z=0,但这一步却能找到正确的Z行,并成功替换

IF r-z>91
GO z+91  &&虽然上面一行执行时使用了正确的Z,但这里的Z却为0,把91行后的全删除了。
DELETE REST
ENDIF
2024-05-17 13:24
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
非常感谢!!
一直用RECN(0),是因为这是你在论坛里告诉我的,没碰到问题就一直没想到会有问题

另外,通过检查发现,seek出的行号,大部分情况是与条件最匹配的,少数情况下会指向最匹配行的下一行。这个不知有何指教?

2024-05-17 14:20
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
liuxingang28,非常感谢!!
schtg,我EDGE年不见图片,按论坛里说的也没搞定
2024-05-22 09:58
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
人老了,不中用了
seek的说明,就把第二个问题的答案摆在那里:

说明

只能在索引过的表中使用 seek 命令,并且只能搜索索引关键字。除非 SET EXACT 的设置为 OFF ,否则匹配指的是完全匹配。
如果 SEEK 找到了与索引关键字相匹配的记录,则 RECNO( ) 返回匹配记录的记录号;FOUND( ) 返回“真”(.T.);EOF( ) 返回“假”(.F.)。
如果找不到相匹配的关键字,则 RECNO( ) 将表中记录的个数加 1,然后返回;FOUND( ) 返回“假”(.F.);EOF( ) 返回“真”(.T.)。
如果 SET NEAR 设置为 ON ,则记录指针指向与索引关键字最相匹配的那个记录的后面一个记录。如果 SET NEAR 设置为 OFF,则记录指针指向文件的结尾。在这两种情况下,RECNO(0) 都返回与关键字最匹配的记录号。
2024-05-23 08:38
快速回复:【求助】ssek结果出错
数据加载中...
 
   



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

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