Как закрыть все открытые формы / отчеты et c. когда кнопка нажата, чтобы выйти? - PullRequest
0 голосов
/ 07 января 2020

Я создаю базу данных для назначения.

При входе в систему проверяется, является ли пользователь администратором. Администратор имеет доступ к различным формам.

Моя кнопка выхода из системы открывает форму входа в систему, и они не могут делать ничего другого, пока не войдут в систему.

Если администратор не закрыл свои административные формы c, когда они выйдите из системы, после чего не администратор сможет войти в свою учетную запись, и формы, которые администратор не смог закрыть, все равно будут открыты.

Как закрыть все открытые формы / отчеты и т. д. c. при нажатии кнопки для выхода из системы?

1 Ответ

1 голос
/ 07 января 2020

Примерно так:

Public Sub Logout()

    Dim varF As Variant

    ' Loop all open forms
    For Each varF In Forms
        ' Close all forms except the login form
        If varF.Name <> "frmLogin" Then
            DoCmd.Close acForm, varF.Name
        End If
    Next varF

End Sub

Редактировать: поскольку мы закрываем формы во время l oop, это, вероятно, будет работать лучше:

Public Sub Logout2()

    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.

...