标题:查询程序
只看楼主
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
得分:1 
以下是引用ppzlx在2012-12-2 18:10:44的发言:

我写了一个可是是死循环
use zyda
accept "请输入姓名:" to xm
index on 姓名 to xmsy
do while .not.eof()
seek &xm
disp
skip
enddo
use


程序代码:
accept "请输入姓名:" to xm
use zyda
index on 姓名 to xmsy
seek xm
do while .not.eof()
   disp
   skip
   if 姓名<>xm
      exit
   endif
enddo
use
retu

收到的鲜花
  • ppzlx2012-12-02 19:11 送鲜花  3朵   附言:好文章
2012-12-02 18:38
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
得分:0 

注意, seek 要放在do循环的外面~
 
2012-12-02 18:42
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
得分:1 
直接用SCAN ENDSCAN 查询即可。
2012-12-02 18:46
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
得分:0 

其实, 合乎foxbase规则, 又可以满足楼主要求的, 可用如下:

程序代码:
accept "请输入姓名:" to xm
use zyda
index on 姓名 to xmsy
seek xm
list off rest whil 姓名=xm
use
retu
2012-12-02 18:50
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
得分:1 
USE zyda
INDEX ON 姓名 TO indextemp
SET DELETED ON
accept "请输入姓名:" to xm
SCAN
    SEEK xm
    IF FOUND()
       ?姓名
       DELETE
    ENDIF
ENDSCAN
RECALL ALL

相互学习,互相交流,共同提高。
2012-12-02 18:53
ppzlx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-2
得分:0 
我试了一下,还是死循环啊,一直只是找到第一个人,重复的没找到。
2012-12-02 18:58
ppzlx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-2
得分:0 
哦,新的方法,我再试试

2012-12-02 19:00
ppzlx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-12-2
得分:0 
回复 11楼 茵梦湖
谢谢您,您的办法很好呢,多谢高手指点!!
2012-12-02 19:10
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:295
专家分:805
注 册:2012-6-15
得分:1 
楼主所要解决的问题是查找重复考生的问题,可以看看下面的程序:
USE zyda
INDEX ON 姓名 TO xm
 do whil not eof()
  xm=姓名
 do whil not eof() and 姓名=xm
   if 姓名=xm
    ?xm
    endif
  skip
  enddo
enddo   


学习交流VFP,QQ:248561326。
2012-12-06 23:07
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:1 
这件事不是很简单的么?对表文件进行姓名字段的索引,然后利用SEEK命令找到第一条符合条件的记录,处理完后再SKIP一下不就行了?直到不符合条件的第一条记录为止。
大致的程序段如下:
USE 表文件
INDEX ON 姓名 TAG XM
GO TOP  &&此处不能用GO 1
SEEK "姓名的具体内容" ORDER XM
IF FOUND()
   XingMing=姓名
   DO WHILE !EOF()
      IF 姓名=XingMing
         ?XingMing
         SKIP
         XingMing=姓名
      ELSE
         EXIT
      ENDIF
   ENDDO
   ?"查找结束!"
ELSE
   ?"没找到!"
ENDIF


[ 本帖最后由 taifu945 于 2012-12-7 11:46 编辑 ]
2012-12-07 11:21



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




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

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