Ms access 在一定空闲时间后自动关闭窗体
我的访问表单有点问题 我有两张表格:Ms access 在一定空闲时间后自动关闭窗体,ms-access,timer,vba,ms-access-2010,Ms Access,Timer,Vba,Ms Access 2010,我的访问表单有点问题 我有两张表格: 菜单形式 输入表格 输入表单闲置一分钟后,我想关闭它并返回菜单表单 这是我的代码,不起作用 Public ExpireTime As Date 'expiration time-date value Sub ResetExpiration() If ExpireTime <> 0 And ExpireTime > Now Then Application.OnTime Exp
- 菜单形式
- 输入表格
Public ExpireTime As Date 'expiration time-date value
Sub ResetExpiration()
If ExpireTime <> 0 And ExpireTime > Now Then
Application.OnTime ExpireTime, "FormExpire", schedule:=False
End If
ExpireTime = Now + 1 / 1440#
Application.OnTime ExpireTime, "FormExpire", schedule:=True
End Sub
您需要将
form.Timer
设置为60000(即1分钟),然后使用onOnTimer
事件检查某些属性是否已更改。下面我很快写了一些东西给你一个想法,但它既不完整也没有经过测试
Option Compare Database
Option Explicit
Dim isIdle As Boolean
Private Sub Form_LostFocus()
'you can use this event also
End Sub
Private Sub Form_Timer()
Dim ctlName As String, wasDirty As Boolean
If ctlName = vbNullString Then ctlName = Me.ActiveControl.Name
If Me.ActiveControl <> ctlName Then isIdle = False
If wasDirty <> Me.Dirty Then isIdle = False
'more checks....
If isIdle Then DoCmd.Close acForm, Me.Name
End Sub
选项比较数据库
选项显式
Dim Isidel作为布尔值
私人子表_LostFocus()
'您也可以使用此事件
端接头
专用子窗体_计时器()
Dim ctlName为字符串,wasDirty为布尔值
如果ctlName=vbNullString,则ctlName=Me.ActiveControl.Name
如果Me.ActiveControl ctlName,则isIdle=False
如果是肮脏的我。肮脏的,那么isIdle=False
“更多的支票。。。。
如果是isIdle,则DoCmd.Close acForm,Me.Name
端接头
这里有几个潜在问题。
首先也是最重要的,这不是关闭表单的方式
这:
应该看起来更像这样:
Sub FormExpire()
DoCmd.Close acform, Me.Name
DoCmd.OpenForm "menu-form"
End Sub
您的第二个问题是,我不相信Access提供了应用程序.Ontime
方法。说这是一个Excel函数,但我在。我个人很有兴趣看到你们们将你们们的方法运用到实际工作中
我不确定这有什么关系,但我想这就是你想要做的
Public ExpireTime As Date 'expiration time-date value
Private Sub InputForm_Timer()
If ExpireTime <> 0 And ExpireTime > Now Then
Call FormExpired
Else
' reset timer
ExpireTime = Now + 1 / 1440#
End If
End Sub
Public ExpireTime As Date'到期时间日期值
专用子输入形式_计时器()
如果ExpireTime 0和ExpireTime>Now则
电话已过期
其他的
'重置计时器
过期时间=现在+1/1440#
如果结束
端接头
如果不包括@iDevelop,我不确定这种方法是否有效。我只是想帮你弄清楚哪里出了问题 我意识到这个线程已经过时了,但我最近遇到了一个需要从计时器事件关闭表单的问题,并在这里找到了答案。我的情况稍有不同,因为我有几个表单要关闭,所以这里是我的解决方案
Private Sub Form_Timer()
Dim daysRemaining As Integer
Dim endDate As Date
endDate = "4/15/2021"
daysRemaining = DateDiff("d", Now, endDate)
MsgBox ("This is an evaluation version of the application. You have " & Str(daysRemaining) & " days of use remaining")
If daysRemaining < 1 Then
Close_All
End If
End Sub
Private Sub Close_All()
For Each myForm In CurrentProject.AllForms
strFormName = myForm.name
DoCmd.Close acForm, strFormName
Next
End Sub
Private子表单_Timer()
Dim Days以整数形式保留
Dim endDate作为日期
endDate=“4/15/2021”
daysRemaining=DateDiff(“d”,现在,endDate)
MsgBox(“这是应用程序的评估版本。您有”&Str(daysRemaining)和“剩余使用天数”)
如果daysRemaining<1,则
闭嘴
如果结束
端接头
私人分包关闭_All()
对于CurrentProject.AllForms中的每个myForm
strFormName=myForm.name
DoCmd.Close acForm,strFormName
下一个
端接头
Public ExpireTime As Date 'expiration time-date value
Private Sub InputForm_Timer()
If ExpireTime <> 0 And ExpireTime > Now Then
Call FormExpired
Else
' reset timer
ExpireTime = Now + 1 / 1440#
End If
End Sub
Private Sub Form_Timer()
Dim daysRemaining As Integer
Dim endDate As Date
endDate = "4/15/2021"
daysRemaining = DateDiff("d", Now, endDate)
MsgBox ("This is an evaluation version of the application. You have " & Str(daysRemaining) & " days of use remaining")
If daysRemaining < 1 Then
Close_All
End If
End Sub
Private Sub Close_All()
For Each myForm In CurrentProject.AllForms
strFormName = myForm.name
DoCmd.Close acForm, strFormName
Next
End Sub