MS Access按文本框而不是下拉列表搜索记录

5 ms-access

我是MS Access的新手.我正在尝试创建一个简单的表单,它基本上使用文本框而不是下拉框搜索特定记录.基本上,用户可以输入ID号并检索一些其他相关信息.但是,我不希望用户能够将任何新记录添加到数据库中.我已经能够让表单看起来像我想要的那样,但是我不知道在哪里放置代码(我是否创建了一个宏,将代码插入按钮的属性中?)任何帮助都很大不胜感激!

Ren*_*uis 7

我假设您已将表单绑定到表或查询,并且您希望能够在文本框中手动输入ID,然后按Enter并加载该记录的数据或显示错误消息(如果没有此类记录).

正如dsteele所说,请确保将表单的"数据属性允许添加"设置No为禁止用户添加记录.

然后,从AfterUpdate文本框的事件中,添加以下代码(假设您的文本框已命名txtGoTo):

Private Sub txtGoTo_AfterUpdate()
    If (txtGoTo & vbNullString) = vbNullString Then Exit Sub
    Dim rs As DAO.RecordSet
    Set rs = Me.RecordsetClone
    rs.FindFirst "[ID]=" & txtGoTo
    If rs.NoMatch Then
        MsgBox "Sorry, no such record '" & txtGoTo & "' was found.", _
               vbOKOnly + vbInformation
    Else
        Me.RecordSet.Bookmark = rs.Bookmark
    End If
    rs.Close
    txtGoTo = Null
End Sub
Run Code Online (Sandbox Code Playgroud)

请注意,您必须将该行更改rs.FindFirst "[ID]=" & txtGoTo为适合您的数据的内容:

  • "[ID]="应该被您要搜索的字段替换(它可能是"[POReference]="或其他东西.

  • 如果您使用数字ID进行搜索,例如因为该字段是自动编号列,那么代码就可以了.
    否则,如果您搜索的字段是字符串(例如PN12-G),则必须将代码更改为:

    rs.FindFirst "[ID]=""" & txtGoTo & """"
    
    Run Code Online (Sandbox Code Playgroud)

未按规定使用适当的引用(或引用其中没有必要)将导致一种错误的数据类型不匹配.......

作为一个新用户,我建议您查看示例NorthWind项目数据库,该数据库可以使用旧版本的Access进行备份,也可以作为从Access 2007下载的模板.
有很多技术可以作为新的东西学习访问开发人员,包括实现记录导航的其他方法.


dst*_*ele 1

  1. 将表单属性 Data/'Allow Additions' 设置为 No。
  2. 无论是在文本框的 AfterUpdate 事件中,还是在按钮的 Click 事件中,您都可以编写代码或分配宏来查找并显示所需的记录。