Странная проблема - форма не закрывается при открытии новой формы с помощью WHERE - PullRequest
1 голос
/ 22 апреля 2019

У меня есть две формы (здесь вопрос).frmContactList и frmContactDetails.frmContactList - это список фамилий, имен и адресов электронной почты.Идея (которая работает и до сих пор не была проблемой) состоит в том, что при двойном щелчке либо фамилии, либо имени, форма frmContactDetails открывается для конкретной записи, выбранной в frmContactList.Все это работает просто отлично.В чем проблема (досадно), я хочу, чтобы она открылась frmContactDetails, затем ЗАКРЫЛА frmContactList.OPEN работает нормально, закрытие не происходит, пока я не закрою frmContactDetails.
I ВЕРИТ ошибка связана с тем, что я начал с шаблона доступа " prefab " и перешел к его редактированию.Я не создавал этот проект с нуля. Не повторю эту ошибку .Думаю, я бы сэкономил время.Да, верно ...

Вот кодировка DblClick(), которую я использую для Фамилии (Имя будет таким же, как только я выясню ошибку :

ПРИМЕЧАНИЕ: Я закомментировал Form.Dirty и код ошибки макроса, потому что он является частью этого грязного " prefab " Access access.

Private Sub Last_Name_DblClick(Cancel As Integer)
On Error GoTo Last_Name_DblClick_Err

    On Error Resume Next
'    If (Form.Dirty) Then
'        DoCmd.RunCommand acCmdSaveRecord
'    End If
'    If (MacroError.Number <> 0) Then
'        Beep
'        MsgBox MacroError.Description, vbOKOnly, ""
'        Exit Sub
'    End If

    DoCmd.OpenForm "frmContactDetails", acNormal, "", "[ID]=" & ID, , acDialog
    DoCmd.Close acForm, "frmContactList"

Last_Name_DblClick_Exit:
    Exit Sub

Last_Name_DblClick_Err:
    MsgBox Error$
    Resume Last_Name_DblClick_Exit

End Sub


Вот несколько фотографий дизайна.

Простой дизайн.
Just a quick image of the design of the data in question - proving there is an

Здесь frmContactDetails открыт (персональныйинформация затемнена), показывая frmContactList на заднем плане не закрыт.

Image of both forms

1 Ответ

4 голосов
/ 22 апреля 2019

Когда вы открываете форму с помощью WindowMode:=acDialog, код останавливается на этой строке кода, пока открытая форма не станет невидимой или закрытой. Просто отбросьте этот параметр.

DoCmd.OpenForm "frmContactDetails", View:=acNormal, WhereCondition:="[ID]=" & ID
DoCmd.Close acForm, Me.Name

Примечание: используйте WindowMode:=acDialog, если вам нужны данные, введенные в диалоговой форме на сайте вызова. В этом случае не закрывайте диалоговую форму с помощью Me.Close, а вместо этого скрывайте ее с помощью Me.Visible = False, затем получите данные через Forms!fdlgMyDialogForm!TheData.Value и, наконец, закройте ее на сайте вызовов с помощью DoCmd.Close acForm, "fdlgMyDialogForm".

Закрытие текущей формы с помощью Me.Name более надежно, чем указание имени в виде строковой константы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...