Office中国论坛/Access中国论坛

标题: 请教!如何限制窗体中某字段不能键盘输入数据只能通过扫描条码输入 [打印本页]

作者: sxgaobo    时间: 2013-3-9 23:19
标题: 请教!如何限制窗体中某字段不能键盘输入数据只能通过扫描条码输入
同题!
作者: roych    时间: 2013-3-10 10:37
通过KeyUp事件计时,超过0.1秒的即为键盘输入。时间关系【今天有约】,下次再做例子。
作者: sxgaobo    时间: 2013-3-10 17:39
roych 发表于 2013-3-10 10:37
通过KeyUp事件计时,超过0.1秒的即为键盘输入。时间关系【今天有约】,下次再做例子。

谢谢版主
期待你的例子啊!!!
作者: roych    时间: 2013-3-11 02:48
扫描枪是模拟键盘输入并以Enter键结束,但读取时间比键盘输入要快很多。

通过这个原理,可以在获取焦点时记录一个时间,输入完成,按下Enter键时再记录一个时间。两个时间之差如果超过规定时间(例如0.5秒或者1秒),即可判断为手动输入。

从原理上看代码应该没问题,但由于手头上缺乏设备,因此也不能保证测试是否正常。请楼主自行测试,如有问题,请及时提出。
[attach]51419[/attach]
作者: sxgaobo    时间: 2013-3-11 09:57
本帖最后由 sxgaobo 于 2013-3-11 09:58 编辑
roych 发表于 2013-3-11 02:48
扫描枪是模拟键盘输入并以Enter键结束,但读取时间比键盘输入要快很多。

通过这个原理,可以在获取焦点时 ...


谢谢版主!
取获取焦点时记录一个时间为第一时间,是不是太早啊?!
我用的是键按下和键释放事件,测试成功!
Option Compare Database
Option Explicit
Dim t1, t2

Private Sub 编号_KeyDown(KeyCode As Integer, Shift As Integer)
t1 = Timer()
End Sub

Private Sub 编号_KeyUp(KeyCode As Integer, Shift As Integer)
t2 = Timer()
If DateDiff("s", t1, t2) > 1500 Then
   Me.编号 = Null
End If
End Sub
各位是否有更好的方法啊!?
作者: roych    时间: 2013-3-11 12:18
sxgaobo 发表于 2013-3-11 09:57
谢谢版主!
取获取焦点时记录一个时间为第一时间,是不是太早啊?!
我用的是键按下和键释放事件,测 ...

我觉得,这个问题基本只能凭借输入速度来判断,可能没有更好的方式了。
作者: 路过蜻蜓    时间: 2015-4-24 14:55
good point

作者: tzh1600    时间: 2015-4-24 15:49
是不是可以再创建个隐藏控件,扫描枪数据先输入到这个隐藏控件再用代码更新相应字段,这个字段不就可以设置成锁定了吗?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3