我有一个访问表单Form1
,其中带有一个打开Form2
的按钮。 Form2
不是子表单。 Form2
具有许多不受限制的文本控件。有一个名为Commit
的按钮。
单击时,它将取无界控件中的值并将其插入到各个表中。其中之一以Member_Id
的形式插入源表。
一旦插入值,就会发生以下情况:
Form1
上。 我可以插入记录,但是我无法关闭Form2
。有人会知道我需要做什么吗?
Sub Commit_Record_and_Close()
Dim strCriteria As String
Dim rst As DAO.Recordset
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Insert values including Member_Id into source table HERE.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Forms("Form1").SetFocus
Set rst = Forms("Form1").RecordsetClone
strCriteria = "[Member_Id] = " & CStr(lng_Member_Id) 'ember_Id previously set.
rst.FindFirst strCriteria
Forms("Form1").Bookmark = rst.Bookmark
Forms("Form1").Requery
Forms("Form1").Controls("cbo_Selector").Requery 'drop down that contains Member_Id
' The following 2 lines were inserted in desparation because I couldn't get Form1 to requery.
DoCmd.OpenForm "Form1", acDesign
DoCmd.OpenForm "Form1", acNormal, , strCriteria
Me.SetFocus ' Form2
DoCmd.Close acForm, Me.Caption, acSavePrompt ' Form2
End Sub
答案 0 :(得分:0)
要使搜索/转到记录生效,您需要首先重新查询表单和控件,然后然后搜索并转到。否则,搜索将找不到新记录。
Forms("Form1").Requery
Forms("Form1").Controls("cbo_Selector").Requery 'drop down that contains Member_Id
Set rst = Forms("Form1").RecordsetClone
strCriteria = "[Member_Id] = " & CStr(lng_Member_Id) 'ember_Id previously set.
rst.FindFirst strCriteria
Forms("Form1").Bookmark = rst.Bookmark
要使关闭工作正常运行,您需要使用表单名称而不是其标题。
DoCmd.Close acForm, Me.Name, acSavePrompt ' Form2
如果事件的顺序是
那么您就不需要任何.SetFocus
。当Form2关闭时,Form1将自动重新获得焦点。