表单VBA的MS访问时间延迟

时间:2018-02-07 21:07:31

标签: database vba ms-access

我创建了一个类似提醒的消息框,当我的交换机在我的数据库上打开时弹出。

消息框告诉我有多少客户在25天内没有为他们的订单付款。我已将代码放入交换机的On Load部分。

然而,当我点击进入我的总机时,代码会立即运行,并且会显示消息框"有25天未付款的x未完成付款,您是否希望现在看到这些&# 34;并且有一个是或否按钮。

但是当这个盒子加载并且我点击“是”时我的总机和查询同时打开,它会自动将我引导到交换机,而不是我想要在屏幕上看到的查询。我的目标是打开主菜单,将代码延迟一定时间,然后打开查询,如果我选择是。

这是我制作的代码。

Public Sub Form_Load()

Dim time1, time2

time1 = Now
time2 = Now + TimeValue("0:00:05")
    Do Until time1 >= time2
        time1 = Now()
    Loop





Dim OS As Integer
OS = DCount("[Paid]", "[OutstandingPayments]", "DateDiff('d', DateOrder, 
Now()) > 25")




If OS = 0 Then

        Exit Sub
            Else


                If MsgBox("There are " & OS & " uncompleted Payments that have not been paid in 25 days" & _
                vbCrLf & vbCrLf & "Would you like to see these now?", _
                vbYesNo, "You Have Uncomplete Payments...") = vbYes Then
                DoCmd.Minimize
                DoCmd.OpenQuery "OutstandingPayments", acNormal

            Else
        Exit Sub
    End If
End If
End Sub

基本上这个代码所做的只是延迟生成的代码,但我认为交换机可以打开显示屏幕,然后代码将运行,然后显示我的消息框。

有没有办法可以在加载时打开交换机,加载它然后让我的代码运行以显示我的消息框。

附加Gif说明问题 https://gyazo.com/94f7e56cbe9220673d10a810e5282dda

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Form.Timer属性设置计时器,并在该计时器之后执行代码。

Private Sub Form_Load()
    Me.TimerInterval = 5000 '5000 milliseconds
    'Do other stuff
End Sub

Private Sub Form_Timer()
    Me.TimerInterval = 0 'Disable timer from running again
    'Do stuff
End Sub

此外,如果您要延迟使用while循环,请使用DoEvents +睡眠功能(如this one)填充它,以防止它锁定您的程序。