Почему MS-Access запускает событие Enter для кнопки Сохранить запись при открытии формы? - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужно обработать доступ и превзойти файлы из разных отделов в моей базе данных MS-Access.Пользователь должен выбрать эти файлы, поэтому я создал таблицу отделов, в которой пользователь должен заполнить имена файлов.

В форме для заполнения этих имен файлов я добавил кнопку, чтобы открыть диалоговое окно выбора файла.enter image description here

Я создал эту кнопку как кнопку Сохранить запись и поместил логику в событие On Enter.enter image description here

Теперь каждый раз, когда пользователь открывает форму, диалог выбора файла уже открывается для первого файла, даже до того, как форма отображается.

Почемуэто произошло и как я могу предотвратить это?

Для полноты: это мой код для события Enter:

Private Sub SelectCmd_Enter()
    On Error GoTo hell

    Dim FileDlg As FileDialog
'    If is_loaded Then
        Select Case Me.Controls("Filter")
            Case "Excel File"
                Set FileDlg = Application.FileDialog(msoFileDialogFilePicker)
                FileDlg.Filters.Add "Excel File", "*.xlsx; *.xlsm; *.xls"
                FileDlg.InitialFileName = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & Me.Controls("FileNameTemplate").Value
            Case "Access DB"
                Set FileDlg = Application.FileDialog(msoFileDialogFilePicker)
                FileDlg.Filters.Add "Access DB", "*.accdb"
                FileDlg.InitialFileName = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & Me.Controls("FileNameTemplate").Value
            Case "Folder"
                Set FileDlg = Application.FileDialog(msoFileDialogFolderPicker)
                FileDlg.InitialFileName = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\"))
        End Select
        FileDlg.Title = Me.Controls("Caption").Value
        If FileDlg.Show Then
            Me.Controls("FilePath").Value = FileDlg.SelectedItems.Item(1)
        End If

        Set FileDlg = Nothing
'    Else
'        is_loaded = True
'    End If
    Exit Sub
hell:
    Debug.Print Err, Error
    Debug.Assert False
    Resume
End Sub

Я попытался решить проблему, установив для частного логического значения is_loaded значениеfalse при загрузке формы:

Private is_loaded As Boolean
Private Sub Form_Activate()
    is_loaded = False
    [...]
End Sub

, но тогда кнопка SelectCmd в первой строке больше не реагировала на нажатия при загрузке файла.

...