我一直在努力寻找一种方法来暂停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控件会很棒!)
答案 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毫秒)。像这样: