在 MS Access 中扫描以在表单上输入数据而无需按任何键

问题描述

我有一个包含两个表的数据库。表 1 是带有员工 ID# 的人员列表。表 2 有一个“扫描”字段,它是从条形码扫描仪以几种不同的形式输入的。表 2 中的计算字段使用 Mid 函数将某些字符从“扫描”字段中拉出。然后我使用计算字段将使用 base32 数字系统的拉出的字符串转换为 Base10 数字。这个基数为 10 的数字等于员工 ID#。然后,我使用 VBA 运行代码来运行比较表的查询,并在表 2 中的员工 ID 与表 1 中的列表不匹配时打开一个表单。我一直在尝试在表单中使用“On Change”属性使上述所有事情发生。我目前拥有“On Lost Focus”属性,可以完成我需要它做的所有事情,但它需要额外的动作。我正在尝试简化它,并在我扫描到表单后立即使用它,它会自动执行后端中的所有内容关闭表单,返回到总机。我遇到的问题是扫描仪没有立即输入完整的字符串作为输入。它单独输入每个字符,因此在单个字符后触发 On Change 并导致问题,因为表中没有提取数据进行比较。有没有办法让它在扫描后自动执行,但只有在扫描输入所有 18 个字符后?

解决方法

让“On Change”事件测试字段中有多少字符。输入 18 个字符后才执行操作。

像这样:

Private Sub txtField_Change()
    
     If (Len(Me.txtField.Text) >= 18) Then

        Debug.Print "Testing 18 Characters Input" 

        'Do a bunch of things here or call another Subroutine

        DoCmd.Close acForm,Me.Name,acSaveNo 'Close the form,without saving

    End If
    
    
End Sub