【发布时间】:2017-09-08 14:33:33
【问题描述】:
我一直在努力寻找一种方法来暂停 Access 数据库中的内容。我发现了很多建议,其中一些有效,但不是我想要的方式。
我创建了一个小例子,看看我是否可以让它工作(然后我将在实际程序中使用它)。
有两种形式(Form1 和 Form2)。当我单击 Form1 上的按钮时,它会关闭 Form 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 上按钮中的代码运行,而无需用户单击它。我已经尝试将该代码放入许多表单事件中,但没有运气。根据它进入的事件,它确实“工作”,但 Form2 在屏幕上实际上是不可见的。
我尝试通过各种事件(加载、激活、当前、获得焦点)调用 Form2 上的命令按钮。当它起作用时,我仍然遇到 Form2 在屏幕上永远不可见的问题。
有什么建议吗? (像 Visual Basic 这样的 Timer 控件会很不错!)
【问题讨论】:
-
为什么需要暂停执行?我敢打赌,解决这个问题比实现计时器更简单。
-
该程序将被小学生用来为学生会官员“投票”。需要延迟的屏幕是最后一个显示他们已完成投票的屏幕。延迟的必要性是因为许多学生会尝试尽可能多地完成该计划,然后投票监视器(老师)才能抓住他们并让他们继续前进。由于延迟,我发现学生只会自己继续前进,因为没有发生任何事情可以做任何事情,而老师可以看到他们已经完成了。
-
有很多方法可以处理这个问题,因为有些人仍然可以在延迟后等待多次进入。只需检查提交数据并有条件地禁用(参见Enable)或向用户隐藏(see Disable)按钮并提供适当的警告消息。