登录注册
上海交通大学论坛 > 数据库 > 浏览当前帖子 手机版 关闭左侧栏
Browse 中的增量搜索
返回本版】  【发表帖子】  【回复帖子 浏览量  9414      回帖数 0
jhcms    等级  

楼主 发表于  2012/5/23 10:17:55    编 辑   


 
 在数据库系统开发过程中,使用Browse浏览数据方便、直观,但是,当 
数据库较大时,需要不停按PgUp(或PgDn)键,才能查阅到某条记录。以 
前解决这种问题的办法是,编一段小程序, 让用户事先输入编号,指针 
移至该记录,然后用Browse命令显示数据。而需要查另一条记录时,只 
能返回重新键入编号(或者上下翻页)。这种作法显然比较罗嗦。为了 
解决此问题,笔者编写了一段程序,利用事件捕获命令On Key Label设 
置陷阱,当用户在Browse窗口下输入数值时,将数据库指针移到对应记 
录下,从而方便地查阅到我们所需的数据。 
    下面数据库只是例子,读者可根据需要确定数据库。程序只能查 
阅数据,读者可以用类似的思想设置按键陷阱,达到在窗口中修改数据 
的目的。 
    数据库(sjk.dbf)结构
    字段名      类型    宽度 
    number      C       6 
    name        C       8 
    程序源码(在Foxpro 2.5 For Dos下运行通过) 
    **Name:SeekBrow.prg 
    SET TALK OFF 
    CLEAR 
    USE sjk INDEX sjk && 索引 KEY:number 
    m.number="" 
    DO On_Off WITH"on" && 打开按键陷阱 
    BROWSE NOEDIT 
    DO On_Off WITH"off" && 关闭按键陷阱 
    USE 
    RETURN 
    PROCEDURE On_Off 
    PARAMETER x 
    IF x="on" 
    **按键END后,清空记忆的键值 
    ON KEY LABEL END DO seek_key WITH"END" 
    ON KEY LABEL 0 DO seek_key WITH"0" 
    ON KEY LABEL 1 DO seek_key WITH"1" 
    ON KEY LABEL 2 DO seek_key WITH"2" 
    ON KEY LABEL 3 DO seek_key WITH"3" 
    ON KEY LABEL 4 DO seek_key WITH"4" 
    ON KEY LABEL 5 DO seek_key WITH"5" 
    ON KEY LABEL 6 DO seek_key WITH"6" 
    ON KEY LABEL 7 DO seek_key WITH"7" 
    ON KEY LABEL 8 DO seek_key WITH"8" 
    ON KEY LABEL 9 DO seek_key WITH"9" 
    ENDIF 
    IF x="off" 
    ON KEY LABEL END 
    ON KEY LABEL 0 
    ON KEY LABEL 1 
    ON KEY LABEL 2 
    ON KEY LABEL 3 
    ON KEY LABEL 4 
    ON KEY LABEL 5 
    ON KEY LABEL 6 
    ON KEY LABEL 7 
    ON KEY LABEL 8 
    ON KEY LABEL 9 
    ENDIF 
    RETURN 
    PROCEDURE seek_key 
    PARAMETER seekkey 
    m.mrecn=RECNO() && 记忆当前记录号 
    IF seekkey="END" && 设END按键清空记忆的键值 
    m.number="" 
    WAIT WINDOW "您所按的键:END" NOWAIT 
    ELSE 
    IF LEN(m.number)=6 &&编号6位,可根据需要改变 
    m.number="" 
    ENDIF 
    m.number=m.number+seekkey 
    SEEK m.number 
    IF EOF() && 若无号码,返回原来记录 
    GOTO m.mrecn 
    ENDIF 
    WAIT WINDOW "您所按的键:+"m.number NOWAIT 
    ENDIF 
    RETURN 
1
表情
所有内容均为会员自愿发表,并不代表本站立场.
论坛帮助 会员认证删帖申请 联系我们