2017-09-07 4 views
0

私はAccessデータベースで作業を一時停止する方法を見つけようとしています。私は多くの提案を見つけましたが、そのうちのいくつかは機能しますが、私が望むやり方ではありません。MS Access - プログラムの実行を一時停止

私はそれを動作させることができるかどうかを確認するためのミニサンプルを作成しました(実際のプログラムで使用します)。

2つのフォーム(Form1とForm2)があります。 Form1のボタンをクリックすると、Form1が閉じられ、Form2が開きます。 Form2にはボタンをクリックすると、必要なものが実行されます(5秒間ポーズします)。私はコードが必要

Call WaitFor(5) 

    MsgBox "Waited for 5 seconds", vbOKOnly 

DoCmd.Close 

DoCmd.OpenForm "Form1", acNormal 

Sub WaitFor(NumOfSeconds As Long) 

Dim SngSec As Long 

SngSec = Timer + NumOfSeconds 

Do While Timer < SngSec 

DoEvents 

Loop 

End Sub 

コマンドボタンのコード:ここでは私が使用しているコードは....


モジュールのコードですForm2上のボタンで、クリックする必要のないユーザーを実行します。私は運がない、フォームのイベントの数にそのコードを入れてみました。入ってくるイベントに応じて、「作業」しますが、Form2は決して実際に画面に表示されません。

さまざまなイベント(Load、Activate、Current、Got Focus)からForm2のコマンドボタンを呼び出そうとしました。それが動作しても、私はまだ画面上でForm2が決して見えないという問題があります。

提案がありますか?

+0

それを呼び出すために、このような?タイマーを実装するより簡単な方法だと思う。 – Parfait

+0

小学生が学生政府官吏に「投票」するために使用されるプログラムです。遅れが必要な画面は、投票が終了した最後の画面です。遅れの必要性は、多くの生徒が投票モニター(教師)がそれらを捕らえて一緒に動かすことができる前に、できるだけ多くの生徒がプログラムを通過しようとするためです。 遅れて私は、何も起こり得ない何も起こっておらず、教師が彼らが終わったのを見ることができるので、学生は単に自分自身で動くことが分かった。 – user3574547

+0

これを処理するにはいくつかの方法があります。何人かは遅れて何度も入力することができるからです。送信データをチェックし、条件付きで無効にする([有効](https://msdn.microsoft.com/en-us/vba/access-vba/articles/commandbutton-enabled-property-access)参照)または非表示([無効](https://msdn.microsoft.com/en-us/library/office/aa663049(v = office.11​​).aspx))ボタンを使用して、適切な警告メッセージを表示します。 – Parfait

答えて

0

2番目のフォームを表示するかどうかは不明ですが、THENには何らかの遅延が発生します。オン/オンロードエバットに配置したデイリーは、これらの2つの「スタートアップ」イベントコードスタブが100%完了した後でフォームが表示されないようにします。

フォームを起動して何か遅延が発生した場合は、フォーム "タイマー"イベントを使用できます。これはvbやvb.etとよく似ています。

formBが開いた後それではあなたは以下のコードを使用します、「こんにちは」を表示するために5秒のMsgBox後にあなたがしたい、と言う:最新デザインにおけるながら(あなたがフォームを保存する直前にも

Private Sub Form_Timer() 

    Me.TimerInterval = 0 ' turn off the timer event 
          ' so it fires only one time 

    MsgBox "hello after 5 second delay" 


End Sub 

をモード)は、タイマーの「インターバル」を5秒(5000ミリ秒)に設定する必要があります。

enter image description here

+0

パーフェクトでシンプル。私はTimer Intervalで遊んでいたが、実際に何をしているのか分からなかった。とても有難い!約2500人以上の小学生が興奮しています(3つの異なる学校で使用されています)。 – user3574547

1

別のアプローチ:あなたが実行を一時停止する必要があるのはなぜ

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub SleepFor(ByVal MilliSeconds As Long) 
    Sleep MilliSeconds 
End Sub 

SleepFor 5000 '5 seconds delay 
+1

この回答をx64互換にしてください。彼はx86版を使用しているOPは開始されていません。 –

+0

x64とx86の両方のバージョンのAccessを使用できる可能性があります。これは、各教師がアクセスできるコンピュータによって異なります。私のコントロールの外に。 – user3574547

関連する問題