|
4#
楼主 |
发表于 2011-2-12 18:08:08
|
只看该作者
本帖最后由 aslxt 于 2011-2-12 18:14 编辑
已经找到一个解决方法,就是在子窗体的事件中加入以下代码,其中“串号1"是绑定到序列号的文本框:
Private Sub 串号1_KeyPress(KeyAscii As Integer)
On Error GoTo Err_串号1_KeyPress '如果有错误,特别是序列号重复(扫描操作可能会产生重复的动作)
'由于扫描枪在文本框中扫描一个序列号后不能自动跳到下一条记录,需要用下面的语句来让记录跳到下一个,当然也可以是跳到新纪录。扫描枪每扫描完一个条码是不是同时附加一个回车符,不能确定,但是以下代码发现自行正常,还望高手指教?
If KeyAscii = 13 Then '判断扫描枪是否扫描完一个条码,如果是,就跳转到下一条记录
DoCmd.GoToRecord , , acNext
End If
Exit_串号1_KeyPress:
Exit Sub
Err_串号1_KeyPress:
备注.SetFocus '执行到这一句的时候,说明录入发生了错误,就不能保存记录。只好在子窗体的控件中移动焦点,当然,不移动焦点也没有问题,只是还要手工全选中“串号1”的文本,只有把焦点从“串号1”控件移到别的控件“备注”,然后再返回来,就可以全选中“串号1”的文本,便于扫描枪再次输入,不知道有没有更好的办法来全选控件的文本?
串号1.SetFocus '
Resume Exit_串号1_KeyPress
End Sub
经过测试,如果序列号重复,焦点永远停留在“串号1”控件上,而且全选中“串号1”对的文本,只有扫描到全新的序列号后,才会移动到下一条记录!不需要用户做多余的动作
|
|