在用户

时间:2018-01-07 00:27:38

标签: string text combobox access-vba ms-access-2016

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

我有一个他们将填写的主要表格。他们的参赛作品将填入一张桌子,CCPurchForm。该表与包含其他表的查询相结合,用于生成报告,该报告提供购买所需的所有信息。

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

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

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

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

是否有可能让我的表格中的组合框能够如上所述起作用?我进行了搜索和搜索,无法找到足够接近我的情况来寻找解决方案。我是VBA的新手,但如果我知道在哪里存储它,它可以正常运行。

1 个答案:

答案 0 :(得分:0)

要使其发挥作用,您需要做一些事情。

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

    '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
    
  6. 您的结果应如下所示:

    Your result should look something like this:

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