【问题标题】:MS Access - Pause Program ExecutionMS Access - 暂停程序执行
【发布时间】: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)按钮并提供适当的警告消息。

标签: vba ms-access


【解决方案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

【讨论】:

  • 请让这个答案与 x64 兼容。 OP 尚未开始使用 x86 版本。
  • 可以同时使用 x64 和 x86 版本的 Access。这仅取决于每位教师可以使用的计算机。不受我控制。
【解决方案2】:

不清楚是否要显示第二个表单,然后会出现一些延迟。您在 on-open/on-load 事件中放置的任何交易都将阻止表单显示,直到这两个“启动”事件代码存根 100% 完成。

如果您希望启动一个表单,然后延迟发生某些事情,那么您可以使用表单“计时器”事件——它很像 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 毫秒)。像这样:

【讨论】:

  • 完美..简单。我曾经玩过 Timer Interval,但真的不知道我在做什么。非常感激!大约 2500 多名小学生会很兴奋(在三所不同的学校使用)。
猜你喜欢
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2016-06-09
  • 2016-09-08
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多