|
登录注册 |
☦ 上海交通大学论坛 > 数据库 > 浏览当前帖子 | 手机版 关闭左侧栏 |
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 |
论坛帮助 会员认证删帖申请 联系我们 |