Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba MS Access-暂停程序执行_Vba_Ms Access - Fatal编程技术网

Vba MS Access-暂停程序执行

Vba MS Access-暂停程序执行,vba,ms-access,Vba,Ms Access,我一直在努力寻找一种方法来暂停Access数据库中的内容。我发现了很多建议,其中一些很有效,但不是我想要的方式 我创建了一个小示例,看看是否可以让它工作(然后我将在实际程序中使用它) 有两种形式(表格1和表格2)。当我点击Form1上的按钮时,它会关闭Form1并打开Form2。Form2上有一个按钮,单击该按钮时,它会执行我需要的操作(暂停5秒钟)。这是我正在使用的代码 模块代码: Sub WaitFor(NumOfSeconds As Long) Dim SngSec As Long

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

我创建了一个小示例,看看是否可以让它工作(然后我将在实际程序中使用它)

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


模块代码:

Sub WaitFor(NumOfSeconds As Long)

Dim SngSec As Long

SngSec = Timer + NumOfSeconds

Do While Timer < SngSec

DoEvents

Loop

End Sub

我需要在Form2上的按钮中运行代码,而不需要用户单击它。我试着把那个些代码放到一些形式的事件中,但并没有运气。取决于它进入哪个事件,它确实“起作用”,但表单2在屏幕上永远不可见

我尝试从各种事件(加载、激活、当前、获得焦点)调用Form2上的命令按钮。当它工作时,我仍然有一个问题,Form2在屏幕上永远不可见


有什么建议吗?(像Visual Basic这样的计时器控件会很好!)

不清楚是否要显示第二个表单,然后会出现一些延迟。在on open/on load evet中进行的任何交易都将阻止窗体显示,直到这两个“启动”事件代码存根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毫秒)。像这样:


不清楚是否要显示第二个表单,然后会出现一些延迟。在on open/on load evet中进行的任何交易都将阻止窗体显示,直到这两个“启动”事件代码存根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毫秒)。像这样:

另一种方法:

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
另一种方法:

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。这完全取决于每位教师都能使用的计算机。我无法控制。请使此答案与x64兼容。OP尚未开始使用x86版本。可能会同时使用x64和x86版本的Access。这完全取决于每位教师都能使用的计算机。我无法控制,完美,简单。我一直在玩计时器,但真的不知道我在做什么。非常感谢!大约2500多名小学生将会非常兴奋(在三所不同的学校使用)。完美..简单。我一直在玩计时器,但真的不知道我在做什么。非常感谢!大约2500多名小学生将会非常兴奋(在三所不同的学校使用)。