Office中国论坛/Access中国论坛

标题: 求助,计时运行查询 [打印本页]

作者: 123shusheng    时间: 2016-11-20 16:29
标题: 求助,计时运行查询
我在论坛里收到一个计时关闭Msgbox的例子,请高手帮我改改。我希望,1、将函数变为模块形式,可以任意设置计时时间,2.改为3秒后运行123查询,谢谢!

作者: roych    时间: 2016-11-21 01:26
其实这个API真的没什么好封装的。。。不过既然楼主希望封装,那就随便封装下吧。
**如需改变弹出的信息,请在const部分修改相应的字符串。详细请参考附件(如果附件无法显示代码,请新建一个模块,把下面的代码贴上,再调用MsgboxTimeOut函数)
  1. Private Declare Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, _
  2.                                                                                     ByVal lpText As String, _
  3.                                                                                     ByVal lpCaption As String, _
  4.                                                                                     ByVal wType As Long, _
  5.                                                                                     ByVal wlange As Long, _
  6.                                                                                     ByVal dwTimeout As Long) As Long
  7. Const strMessage As String = "按确定后3秒将运行追加查询123"
  8. Const strTitle As String = "测试窗体"

  9. Public Function MsgboxTimeOut(ByVal lngHwnd As Long, ByVal dwTimeout As Long)
  10.     Dim lngMsg As Long
  11.    
  12.     If MessageBoxTimeout(lngHwnd, strMessage, strtile, vbInformation + vbYesNo, 0, dwTimeout) = 6 Then
  13.         DoCmd.SetWarnings False
  14.         DoCmd.OpenQuery "123查询"
  15.     End If
  16.    
  17. End Function
复制代码

[attach]60325[/attach]
作者: 123shusheng    时间: 2016-11-21 15:34
roych 发表于 2016-11-21 01:26
其实这个API真的没什么好封装的。。。不过既然楼主希望封装,那就随便封装下吧。
**如需改变弹出的信息, ...

真的很谢谢大神,虽然您的代码我不太懂,但我想要的是几秒延时后直接运行查询,而不需要是按确定以后才能运行123查询。
作者: roych    时间: 2016-11-21 16:55
123shusheng 发表于 2016-11-21 15:34
真的很谢谢大神,虽然您的代码我不太懂,但我想要的是几秒延时后直接运行查询,而不需要是按确定以后才能 ...

改下原句就好了。把vbyesno去掉和=6(vbyes)去掉就不会出现确认信息了。大体如下:
  1. Private Declare Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long,ByVal wlange As Long, ByVal dwTimeout As Long) As Long
  2. Const strMessage As String = "按确定后3秒将运行追加查询123"
  3. Const strTitle As String = "测试窗体"
  4. Public Function MsgboxTimeOut(ByVal lngHwnd As Long, ByVal dwTimeout As Long)    Dim lngMsg As Long   
  5.    If MessageBoxTimeout(lngHwnd, strMessage, strtile, vbInformation , 0, dwTimeout)  Then
  6.         DoCmd.SetWarnings False
  7.         DoCmd.OpenQuery "123查询"
  8.     End If
  9. End Function
复制代码









欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3