MS-Access 表单:使用组合框搜索记录,如果找到匹配则更新记录,如果不匹配则开始添加新记录

问题描述

我目前有一个包含三个字段的表格。

ID2:号码(也是我的主键), 字段 1:短文本, Field2:短文本

我正在尝试创建一个显示所有三个字段的表单,当我在 ID2 中输入一个值时,会显示匹配的记录。但是,如果没有匹配项,我希望它使用新值创建一个新记录。

我正在解决这个问题: MS Access search for record by textbox instead of dropdown

但是,我似乎无法复制结果。 我当前的代码是:

Private Sub ID2_AfterUpdate()
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
    rs.FindFirst "[ID2]=" & ID2
    If rs.NoMatch Then
        MsgBox "Sorry,no such record '" & ID2 & "' was found.",_
               vbOKOnly + vbinformation
    Else
        Me.Recordset.Bookmark = rs.Bookmark
    End If
    rs.Close
End Sub

我使用了“创建”选项卡中的自动创建表单按钮,并将上述代码添加到带有“构建事件,代码生成器”的 ID2 文本框。我知道我没有正确使用 rs.FindFirst 函数。 我想问:

  1. 我在上面的代码中做错了什么
  2. 要将 rs.NoMatch 部分更改为什么,以便在不匹配时添加新记录。 (理想情况下它会清除其他字段)

感谢您的任何帮助,我是新来的访问者,任何帮助将不胜感激。

解决方法

用于输入搜索条件的控件应该是未绑定的。

考虑:

...
    rs.FindFirst "[ID2]=" & Me.ID2
    If rs.NoMatch Then
        MsgBox "Sorry,no such record '" & Me.ID2 & "' was found.",_
               vbOKOnly + vbInformation
        DoCmd.GoToRecord,acNewRec
        Me.ID2 = Null
    Else
...