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

时间:2009-05-29 02:05:35

标签: ms-access

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

2 个答案:

答案 0 :(得分: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

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

  • "[ID]="应替换为您要搜索的字段(可能是"[POReference]="或其他内容。

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

    rs.FindFirst "[ID]=""" & txtGoTo & """"
    

未使用正确的引用(或在不必要的情况下引用)将导致数据类型不匹配的错误......

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

答案 1 :(得分:1)

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