跳转到父表单(MS-Access表单/ VBA)中的特定记录

时间:2018-08-02 02:04:51

标签: vba ms-access access-vba

我有一个访问表单Form1,其中带有一个打开Form2的按钮。 Form2不是子表单。 Form2具有许多不受限制的文本控件。有一个名为Commit的按钮。

单击时,它将取无界控件中的值并将其插入到各个表中。其中之一以Member_Id的形式插入源表。

一旦插入值,就会发生以下情况:

  1. 焦点设置在Form1上。
  2. Form1当前记录设置为插入到其数据源表中的Member_Id。
  3. Form2关闭,使Form1的焦点显示先前插入的Member_Id记录。

我可以插入记录,但是我无法关闭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

1 个答案:

答案 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

如果事件的顺序是

  • Form1打开Form2
  • Form2关闭自身

那么您就不需要任何.SetFocus。当Form2关闭时,Form1将自动重新获得焦点。