| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:搜索问题
只看楼主 加入收藏
qhjsrc
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-1-16
结帖率:93.33%
收藏
已结贴  问题点数:12 回复次数:2 
搜索问题
if empty(thisform.Text1.value)=.f.
go top
a=alltrim()
b=alltrim(thisform.Text1.value)
c=.f.
  if a='编号'
     locate for ALLTRIM(编号)=b
     if eof()
        messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
        go top
        return
      else
       c=.t.
     endif
  endif
  if a='姓名'   
     locate for 姓名=b     
     if eof()
        messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
        go top
        return
      else
       c=.t.     
     endif
  endif
  if c
     thisform.Text1.enabled=.t.
     go recno()
     this.enabled=.t.
  endif
else
   messagebox("请输入要查找的内容!",16,"系统提示")
   thisform.Text1.value=""
   thisform.Text1.Setfocus
endif
thisform.refresh
上列代码中运行后,我选COMB1的姓名时,在TEXT1中输入“王红”,但只搜出一个王红,而数据库里还有三个没搜出来,我在网上找了一下
  if a='姓名'   
     locate for 姓名=b
     DO do while found()
     if messagebox("是否继续查找?‘,36,’提示‘)=6
        continue
     endif
     endDO   
     if eof()
        messagebox("数据库中不存在您所要查询的记录",16,"系统提示")
        go top
        return
      else
       c=.t.     
     endif
  endif
上面红色部分就是我加上去的,可搜索结果更惨,输完姓名后连个正确的记录都没显示。如输入王红,显示的结果是其它人,与王红任何信息无关啊。
请朋友帮助下,问题出现在哪了?
搜索更多相关主题的帖子: 数据库 姓名 
2011-02-16 19:26
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:6 
搜索只能定位一条记录,要定位下条记录需要继续搜索。
要想同时列出多条符合要求的记录,需要用筛选。或者通过select语句筛选。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-02-17 09:18
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:6 
楼主红色代码运行结果是如果搜索到了就继续循环,直至搜索不到才结束循环,此时记录指针定位在表的末尾,当然不正确了。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-02-17 09:21
快速回复:搜索问题
数据加载中...
 
   



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

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