【问题标题】:Use a text box as a wildcard search on a field within a linked SQL Server Table within MS Access使用文本框作为通配符搜索 MS Access 中链接的 SQL Server 表中的字段
【发布时间】:2017-02-15 18:02:28
【问题描述】:

我已经成功地构建了一个组合框,它允许用户从列表中选择一条记录以从表中获取一个 ID。由于我目前正在处理的表运行到大约 60,000 条记录,因此使用此方法查找记录是不现实的。

我希望用户能够做的是在一个文本框中输入一个名称,然后在一个组合框中填充一个字段匹配的表中的相关记录。因此,如果用户在文本框中输入“This”,组合框将显示字段包含“This”、“This and That”和“this”的记录。它不会显示字段中只有“那个”的记录。

假设文本框称为“txtBox”,组合框称为“comBox”,链接的 SQL Server 表“LinkedTable”中的字段称为“SearchField”

【问题讨论】:

  • 首先你必须决定是什么触发了组合框的更新。文本框事件很棘手,因为您必须决定是否在每次击键时进行更新,或者是否等待用户完成输入并退出。然后阅读文本并为组合框创建行源(这只是一个 Access SQL 查询)。将其输入组合框并重新查询。

标签: ms-access combobox


【解决方案1】:

我建议您不要使用组合框。只要有一个文本框,用户可以在其中输入几个字符并按回车键。

然后您会显示一个结果“列表”,允许用户选择并单击任何结果以“编辑”或“查看”给定的数据行。

在下面的屏幕截图中,我们使用了一个包含 500,000 行的非常小的表格。我们正在寻找 smith,所以我们只需输入 smi 并按 Enter。结果会立即显示出来,此时用户可以输入“名字”或名字的几个字符,然后进一步向下钻取和过滤。

表格如下所示:

文本框的after update事件中的代码很简单:

Dim strSQL    as String

strSQL = "select * from tblCustomers where LastName like '" & me.TextSearch & "*’"
me.RecordSource = strSQL

所以只需要很少的代码。我可以假设将结果填写到组合框中,但是用户必须在框中键入内容,然后从组合框中选择某些内容,然后以某种方式调出该记录进行编辑。对于用户来说,这就像 3+ 步骤。

只需使用谷歌或大多数会计或任何计算机软件附近的东西:

一个简单的文本框——你输入几个字符,当他们点击输入时,结果就会显示出来供用户选择。

注意在上面的用户可以点击“眼镜”图标按钮来启动一个显示单个记录的表单。该按钮背后的代码是:

Docmd.Openform "frmEditDetails",,,"ID = " & ME!ID

【讨论】:

    【解决方案2】:

    我选择了另一个答案中建议的选项。这更准确地满足了我的需求,并且可能会帮助遇到类似问题的人。

    首先,我修改了组合框上的查询,使其使用文本框中的值作为其中一个字段的条件。

    在“LinkedTable”中的“SearchField”标准中,我输入了:

    Like "*" & [forms]![*FormName*]![txtBox] & "*"
    

    这会将 comBox 中的结果限制为 SearchField 包含输入到 txtBox 中的值的结果。但是,这不会动态更新,只会在第一个值输入 txtBox 后更新。

    为了解决这个问题,我在 comBox 的“On Get Focus”事件中添加了以下内容

    Private Sub comBox_GotFocus()
    
        Dim ctlCombo As Control
    
        ' Return Control object pointing to a combo box.
        Set ctlCombo = Forms!FormName!comBox
    
        ' Requery source of data for list box.
        ctlCombo.Requery
    
    End Sub
    

    这将强制组合框再次运行查询,使用 txtBox 中的当前值,每次“点击”时

    因此,我在组合框中获得了我需要的受限值列表,并允许用户“搜索”一条记录,然后该记录可用于在表单上创建新记录。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多