我创建了一个类似提醒的消息框,当我的交换机在我的数据库上打开时弹出。
消息框告诉我有多少客户在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
谢谢。
答案 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)填充它,以防止它锁定您的程序。