【问题标题】:Display records in access db combobox on any text typed by user在用户键入的任何文本上显示 access db 组合框中的记录
【发布时间】:2018-06-16 10:13:54
【问题描述】:

我正在创建一个 Access .accdb 数据库,以从我部门的人员那里获取有关公司卡购买的信息。

我有一个他们将填写的主要表格。他们的条目将填充一个表格,CCPurchForm。该表与包含其他表的查询相结合,用于生成一份报告,其中提供了购买所需的所有信息。

我有一个组合框,用于为每次购买选择供应商。组合框的行来源是单独供应商表的自动编号 ID 字段和供应商名称字段。我将 ID 列设置为 0”,所以它不显示。组合框仅限于供应商表中的记录。如果用户需要添加供应商,他们必须使用另一个表单,因为我必须拥有某些供应商信息。

由于供应商的数量,供应商字段需要在用户输入文本时过滤结果。我想让组合框根据用户在组合框中键入的任何字符串显示可能的匹配项,例如,如果他们输入“Bioscience”,组合框将显示“Biosciences, Ltd.”、“BD Biosciences”、“ New England Biosciences,”等。然后,用户单击正确的匹配项,供应商名称将显示在组合框中的表单上,并且 ID 号存储在 CCPurchForm 表的 VendorID 字段中。 选定的供应商还会在主表单的子表单中填充其他供应商信息。

我有另一个组合框,它基于采购类型表中的三个字段。每个采购类型都有一个自动编号 ID 字段、我的机构使用的采购类型代码和采购类型描述文本。 (我创建了 ID 字段来区分购买的子类型,因为我的机构将它们归为一般类别(例如购买机票和购买住宿之间的差异)。

我希望用户能够输入机构购买类型代码或文本来描述他们的购买(同样是任何字符串),并让组合框过滤结果向下供他们做出最终选择。 (例如,如果用户键入“airfare”,组合框会显示包含文本“airfare”的每条记录,无论它出现在文本中的什么位置,或者如果他们输入机构购买代码,它会显示所有具有该代码的记录.) 他们选择的自动编号 ID 应存储在 CCPurch 表单表的 PurchCodeID 字段中。

是否可以让我的表单中的组合框像我上面描述的那样发挥作用?我已经搜索和搜索,但找不到足够接近的情况来找到解决方案。我是 VBA 的新手,但如果我知道将代码存储在哪里,可以正常使用代码。

【问题讨论】:

    标签: vba string ms-access text combobox


    【解决方案1】:

    您需要做一些事情才能使其正常工作。

    1. 创建一个名为cboVendors 的组合
    2. 在组合的属性中:设置Column Count = 2(ID、供应商)和Column Widths = 0cm, 5cm(相应地更改宽度)
    3. cboVendors 属性的事件选项卡中,转到On Key Up 事件并单击三个点... - 将显示一个对话框以选择构建器 - 选择代码构建器
    4. 复制下面的代码:

      'test number of characters entered - if greater then 2 then assign rowsource
      If Len(Me.cboVendors.Text) > 2 Then
      
          'set the rowsource to match user search criteria
           Me.cboVendors.RowSource = "SELECT * FROM vendors WHERE vendors LIKE '*" & Me.cboVendors.Text & "*'"
      
          'show the search in real-time
           Me.cboVendors.Dropdown
      Else
          'set to no
           Me.cboVendors.RowSource = ""
      End If
      

    您的结果应该如下所示:

    您也可以对其他组合搜索执行相同的操作。

    【讨论】:

    • 感谢您的帮助,贾斯汀。发生的事情使我无法在这个项目上工作几个星期,我终于能够尝试您的解决方案。我创建了组合框并按照向导让它存储供应商 ID 并输入您指定的代码。当我进入表单视图时,它似乎无法正常工作。无论我输入什么,我都会得到一个空白的下拉框。我尝试在您的代码中调整“供应商”以匹配我数据库的供应商表中的字段名称,“strVendor”我不确定我做错了什么。如果有任何额外的帮助,我将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    相关资源
    最近更新 更多