MS Access - 暂停程序执行

时间:2017-09-07 21:59:07

标签: vba ms-access

我一直在努力寻找一种方法来暂停Access数据库中的内容。我发现了许多建议,其中一些是有效的,但不是我想要的方式。

我创建了一个迷你示例,看看我是否可以让它工作(然后我会在真实程序中使用它)。

有两种形式(Form1和Form2)。当我单击Form1上的一个按钮时,它关闭表单1并打开Form2。 Form2上有一个按钮,单击时按钮可以执行我需要的操作(暂停5秒)。这是我使用的代码....

模块代码:

Sub WaitFor(NumOfSeconds As Long)

Dim SngSec As Long

SngSec = Timer + NumOfSeconds

Do While Timer < SngSec

DoEvents

Loop

End Sub

命令按钮代码:

Call WaitFor(5)

  MsgBox "Waited for 5 seconds", vbOKOnly

DoCmd.Close

DoCmd.OpenForm "Form1", acNormal

我需要在Form2上的按钮中运行代码,而无需用户点击它。我已经尝试将这些代码放在一些Form事件中而没有运气。根据它进入哪个事件,它会做什么&#34;工作&#34;但是在屏幕上实际上看不到Form2。

我尝试从各种事件(Load,Activate,Current,Got Focus)调用Form2上的命令按钮。当它工作时,我仍然遇到屏幕上永远不可见Form2的问题。

有什么建议吗? (像Visual Basic这样的Timer控件会很棒!)

2 个答案:

答案 0 :(得分: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 :(得分:0)

不清楚是否要显示第二种形式,然后会发生一些延迟。任何你在开放/有载的evet中放置的dealy都会阻止表格显示,直到这两个&#34;启动后#34;事件代码存根已完成100%。

如果您希望启动表单,然后发生延迟,那么您可以使用表单“timer”事件 - 它非常类似于vb或vb.et。

所以说在formB打开之后,你需要在5秒后msgbox显示“hello”,然后你将使用以下代码:

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