質問

私のシナリオ: 複数の入力フィールドを持つフォームを構築しました。テキスト入力フィールドの1つには、「変更」イベントがキャッチされる基盤となるイベントリスナがあります。

Private Sub orderID_Change()
    If Not IsNull(Me.orderID.Text) Then
        Set Me.orders.Recordset = ordermanager.getOrder(Me.orderID.Text)
    End If
End Sub
.

特定の注文番号のユーザータイプの場合、コールバックは各文字/署名を実行していますユーザーはすでにテキストフィールドに入力しています。

私の質問:特定の入力マスクの時間遅延を作成するために、MSAccessの解決策がありますか?

例えば:ユーザーは数字の数字を入力しています。最初の変更イベントが発生すると、内部タイマ機能がカウンタの減少を開始します。これまでに追加の対話がユーザーに起こる限り、タイマーは時間切れなく、基礎となる関数を呼び出します。 その間に、追加の入力がユーザーによって行われた場合、カウンタはリセットされるべきです。

例: "123"

のユーザータイプ
SYSTEM     : waiting for input
USER INPUT : 1
SYSTEM     : timer 100ms
SYSTEM     : timer 80ms
SYSTEM     : timer 60ms
SYSTEM     : timer 40ms
USER INPUT : 2
SYSTEM     : timer 100ms
SYSTEM     : timer 80ms
USER INPUT : 3
SYSTEM     : timer 100ms
SYSTEM     : timer 80ms
SYSTEM     : timer 60ms
SYSTEM     : timer 40ms
SYSTEM     : timer 20ms
SYSTEM     : timer 0ms
SYSTEM     : Run Routine
.

役に立ちましたか?

解決

フォームTimerイベントを使用します。フォームロード時にTimerIntervalをゼロに設定します。次に、テキストボックスの変更イベントで、TimerIntervalをカウントダウンタイマ値にリセットします。

Me.orderID.Textはテキストプロパティであり、nullにはなりません。したがって、orderID_Changeでその長さがゼロより大きいかどうかを確認してください。

Private Sub Form_Load()
    Me.TimerInterval = 0
End Sub

Private Sub Form_Timer()
    MsgBox "Run routine now"
    Me.TimerInterval = 0
End Sub

Private Sub orderID_Change()
    'If Not IsNull(Me.orderID.Text) Then
    If Len(Me.orderID.Text) > 0 Then
        Me.TimerInterval = 1000 ' milliseconds
    Else
        Me.TimerInterval = 0
    End If
End Sub
.

Access 2007にサンプルフォームでアプローチをテストし、それはあなたが要求したものをすると思います。あなたが同じ形式で複数のテキストボックスのためにこのような何かをしたいのなら、この提案はそれを切らないでしょう。

他のヒント

代わりに_AfterUpdateイベントを使用することをお勧めします。そのようにそれは一度発射するだけです。タイマーを構築しようとすると、ユーザーが何かを探すのに一時停止した場合も機能しない可能性があります。

または注文#が常に同じ長さ(すなわち6)の場合は、次のことができます。

Private Sub orderID_Change()
    If Len(Me.orderID.Text) < 6 Then
        'Debug.Print "len=" & Len(Me.orderID.Text)
        Exit Sub
    Else
        'Debug.Print "Ready to set RS!!"
        Set Me.orders.Recordset = ordermanager.getOrder(Me.orderID.Text)
    End If
End Sub
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top