| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3073 人关注过本帖
标题:一个适合初学者测试用的小程序,有待完善
只看楼主 加入收藏
管尊
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-6-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
一个适合初学者测试用的小程序,有待完善
本人也是VFP的初学者,作为初学者经常要用表做练习
如果表里的关键字段有重复了可能会导致整个表在后续的练习都不能进行
一个一个对又很麻烦
所以写了一个检测表重复字段的程序:
————————————————
clear
USE 试验用表
GO top
DO WHILE .not.EOF()
b=RECNO()
a=学号
LOCATE FOR 学号=a
   DO WHILE .not.EOF()
    DISPLAY off
    CONTINUE
   ENDDO
GO b
SKIP
ENDDO
?"检测结束"
use
——————————————
但是有个问题
因为是locate for,每次找相同的字段时都会从第一个开始找
也就是说每遇到有相同字段的记录都会显示一次
有几个显示几遍,如果有多个相同的就会显示很多遍
这个我不会解决,也许以后技术好了会吧。
希望有大神指教。
搜索更多相关主题的帖子: 关键字 记录 检测 
2016-10-15 12:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:4 
程序代码:
create cursor tt (学号 C(3))
insert into tt values ("001")
insert into tt values ("002")
insert into tt values ("003")
insert into tt values ("001")
insert into tt values ("002")
insert into tt values ("003")
insert into tt values ("001")
insert into tt values ("002")
insert into tt values ("003")
insert into tt values ("001")
insert into tt values ("002")
insert into tt values ("003")
insert into tt values ("001")
insert into tt values ("002")
insert into tt values ("003")
accept "请输入学号" to xh
* 方法一
locate for alltrim(学号)==xh
do while not eof()
    ?recno(),学号
    continue
enddo
* 方法二
scan for alltrim(学号)==xh
    ?recno(),学号
endscan

坚守VFP最后的阵地
2016-10-15 13:27
管尊
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-6-21
收藏
得分:0 
回复 2楼 sdta
大神,请问:
create cursor tt (学号 C(3))
insert into tt values ("001")
这两句是什么意思,干什么用的?
还是谢谢大神指教!
2016-10-15 16:23
管尊
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-6-21
收藏
得分:0 
回复 2楼 sdta
大神啊,这个我试了试不对,我的目标是给一个表,自动逐条检测学号字段是否相同,相同了就显示
但是您这个还得自己输入。
我想问下如何直接从定位的记录开始向下检测,而不是从头再来一遍。
谢谢大神!
2016-10-15 16:37
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:20
帖 子:391
专家分:896
注 册:2004-11-23
收藏
得分:4 
很晕,没搞明白!

create cursor tt (学号 C(3))  &&创建游标 tt 实际上是临时自由表,此表只有一个字段,即学号,字符型,3个字符的宽度
insert into tt values ("001")  &&向tt中添加数据001
2016-10-15 17:32
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:20
帖 子:391
专家分:896
注 册:2004-11-23
收藏
得分:0 
以下是引用管尊在2016-10-15 16:37:21的发言:

大神啊,这个我试了试不对,我的目标是给一个表,自动逐条检测学号字段是否相同,相同了就显示
但是您这个还得自己输入。
我想问下如何直接从定位的记录开始向下检测,而不是从头再来一遍。
谢谢大神!


可不可以排序后再检查是否有重复的记录。如果可以,如下代码应该差不多。
程序代码:
use 表1
xh=学号
scan
    if recno()=1
       skip
    endif
    if alltrim(学号)==alltrim(xh)
       ? recno(),学号
       xh=学号
    endif
endscan
use
2016-10-15 17:44
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
以下是引用管尊在2016-10-15 16:37:21的发言:

大神啊,这个我试了试不对,我的目标是给一个表,自动逐条检测学号字段是否相同,相同了就显示
但是您这个还得自己输入。
我想问下如何直接从定位的记录开始向下检测,而不是从头再来一遍。
谢谢大神!

检查关键字是否重复应该在数据输入时进行,重复的关键字就提示用户修改,直到不重复时才将输入的数据保存,而不是在数据保存后再来处理,这样岂不是本末倒置了吗?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-10-15 20:29
sash
Rank: 4
等 级:业余侠客
威 望:6
帖 子:65
专家分:249
注 册:2014-4-25
收藏
得分:4 
楼主的小程序,想法是好的,但是用在查重复上不太实用,如果你的表中有十万条记录,字段中的内容又是各不相同的,如果这样查的话,效率非常差,其实VFP本身为我们提供了非常有效率的查询方法,集体写法如下:
SELECT 学号,count(*) AS 重复记录数 FROM 试验用表名 GROUP BY 学号 HAVING COUNT(*)>1 INTO CURSOR 临时表名

这句语句查询的结果,在临时表中,并且告诉你试验表中共有多少个记录有重复,每个重复的记录的重复数量。

请楼主试试吧。
2016-10-16 09:13
沙枣
Rank: 4
来 自:宁夏银川
等 级:业余侠客
威 望:5
帖 子:103
专家分:221
注 册:2015-5-31
收藏
得分:4 
回复 楼主 管尊
     你这个问题在我的系统里被称为“重码检查”,只要打开数据表,运行下面的程序,选择要检查的字段(可多个字段联合检查),即可得到重码的种类和每个种类重复的数量。
程序1.rar (2.57 KB)
2016-10-17 16:32
快速回复:一个适合初学者测试用的小程序,有待完善
数据加载中...
 
   



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

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