2017-09-26 79 views
0

我有一個訪問數據庫。我想調出一個帶有文本框的表單,然後讓用戶將條形碼掃描到該文本框中(15到20個字符)。將代碼掃描到文本框中對我的USB HID掃描儀非常有用,但一旦掃描了代碼,訪問權限就位於此處。 OnChange事件看起來是正確的方向。這是我的示例代碼。在Access 2016 VBA中,OnChange事件是最適合閱讀條形碼的事件嗎?

Private Sub Text0_Change() 

    Debug.Print Me.Text0.Value 
    Debug.Print Len(Me.Text0.Value) 

End Sub 

我掃描條形碼後,這是輸出。

00000000000000000 
17 
00000000000000000 
17 
00000000000000000 
17 
. 
. 
. 
<repeated a total of 17 times> 

我是否正確地假設代碼中的每個字符都觸發OnCurrent?使用這種方法,我必須編寫可以忽略除一個以外的所有事件的代碼。我應該捕獲哪個事件?第一個更改事件是否始終保存整個代碼?這聽起來像是一個很大的錯誤邊緣。

我的目標是不經任何進一步的用戶輸入上運行掃描的條形碼的一些代碼,一旦代碼被掃描(即不要求爲用戶按下回車鍵或掃描碼之後的按鈕)。 OnChange是否有更好的功能?我的方法學全錯了嗎?

在此先感謝您的幫助。

+1

大多數掃描儀可以被編程爲一個_CrLf_(換行)添加到被掃描碼。 – Gustav

回答

0

你可以,事實上,使用On Change事件。我的實施將取決於掃描儀的工作原理。如果掃描儀剛剛進入掃描條形碼後線固定數量的,你可以指望看到的行數,如果在您的更改活動的完成,做的東西,如果它有。

另一種方法是將On Change事件中的Form.Timer屬性設置爲一個小數字,然後將該計時器設置爲0,並在窗體On Timer事件中執行您的實際工作。你不必檢測整個條碼被掃描的事實是這樣,它只是改變它的內容之後觸發一次,只有一次(只要Form.Timer數量足夠大)。

另一種方法是前,後更新事件,但他們需要的用戶離開文本框。

+0

我最終使用你的form.timer建議。它非常有效。 – Albion