如何在按下按钮注销时关闭所有打开的 forms/reports 等?
How to close all open forms/reports etc. when a button is pressed to log out?
我正在为作业制作数据库。
当您登录时,它会检查用户是否是管理员。管理员可以访问不同的表单。
我的注销按钮会打开登录表单,他们在登录之前无法执行任何其他操作。
如果管理员在注销时没有关闭他们的管理员特定表单,那么非管理员可以登录到他们的帐户,管理员未能关闭的表单仍将打开。
如何在按下按钮注销时关闭所有打开的 forms/reports 等?
由于我们在循环期间关闭表单,因此将它们从表单集合中移除,因此需要这种循环:
Public Sub Logout()
Dim F As Access.Form
Dim i As Long
' Loop all open forms, from last to first, to avoid problems due to closing forms
' (removing them from the Forms collection) in the loop
For i = Forms.Count - 1 To 0 Step -1
Set F = Forms(i)
' Close all forms except the login form
If F.Name <> "frmLogin" Then
DoCmd.Close acForm, F.Name
End If
Next i
End Sub
当然 Reports
系列也是如此。
一般来说,循环集合的一种更简单的方法是使用 For Each
,但如果在循环过程中删除了集合成员,这将不起作用。
感谢 Blackbath 和 DecoMartins 指出这一点。
Dim varF As Variant
' Loop all open forms
For Each varF In Forms
If varF.Name <> "frmLogin" Then
' Do something with varF
End If
Next varF
我正在为作业制作数据库。
当您登录时,它会检查用户是否是管理员。管理员可以访问不同的表单。
我的注销按钮会打开登录表单,他们在登录之前无法执行任何其他操作。
如果管理员在注销时没有关闭他们的管理员特定表单,那么非管理员可以登录到他们的帐户,管理员未能关闭的表单仍将打开。
如何在按下按钮注销时关闭所有打开的 forms/reports 等?
由于我们在循环期间关闭表单,因此将它们从表单集合中移除,因此需要这种循环:
Public Sub Logout()
Dim F As Access.Form
Dim i As Long
' Loop all open forms, from last to first, to avoid problems due to closing forms
' (removing them from the Forms collection) in the loop
For i = Forms.Count - 1 To 0 Step -1
Set F = Forms(i)
' Close all forms except the login form
If F.Name <> "frmLogin" Then
DoCmd.Close acForm, F.Name
End If
Next i
End Sub
当然 Reports
系列也是如此。
一般来说,循环集合的一种更简单的方法是使用 For Each
,但如果在循环过程中删除了集合成员,这将不起作用。
感谢 Blackbath 和 DecoMartins 指出这一点。
Dim varF As Variant
' Loop all open forms
For Each varF In Forms
If varF.Name <> "frmLogin" Then
' Do something with varF
End If
Next varF