将组合框的值作为字段传递

时间:2016-07-15 08:30:51

标签: vba ms-access combobox

如果我的术语错误,请道歉。我正在尝试构建一个表单,用户从下拉列表中选择字段,然后将搜索文本输入到文本框中。然后,表格应在表格中搜索与组合框中指定的字段中的文本匹配的记录。

然而,我目前所拥有的不起作用。我知道错误在哪里但无法修复它。

目前的代码是:

Private Sub btn_Search_Click()

Dim strSearchTerm As String
Dim strComboField As String

strComboField = Me!cmb_src

strSearchTerm = "SELECT Models.ID, Models.[Model Name], Models.[Model Brand], Models.[Model Category] " _
    & "FROM Models " _
    & "Where Fields(strComboField) LIKE '*" & Me.txtSearch & "*' " _
    & "ORDER BY Models.[Model Name]; "

Me.sub_ModelList.Form.RecordSource = strSearchTerm
Me.sub_ModelList.Form.Requery

End Sub

我认为错误在行

 & "Where Fields(strComboField) LIKE '*" & Me.txtSearch & "*' " _

使用字段名称[Model Name]替换Fields(strComboField)可以解决问题。

任何帮助非常感谢

由于

2 个答案:

答案 0 :(得分:2)

不应该是:

strSearchTerm = "SELECT Models.ID, Models.[Model Name], Models.[Model Brand], Models.[Model Category] " _
    & "FROM Models " _
    & "Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' " _
    & "ORDER BY Models.[Model Name]; "

答案 1 :(得分:0)

尝试使用它:

ViewControllerA

或者只使用WHERE创建基本查询:

"Where [Model Name] LIKE '*" & Me.txtSearch & "*' " _

并通过单击“搜索”按钮重新查询表单,其余的VBA代码不需要

更新:抱歉,错过了选择搜索字段的要点。在这种情况下,WHERE应该是

Where [Model Name] LIKE '* & Forms![frm_YourForm]![cmb_src]  & *'

"Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' "

不需要额外的Requery,更改Recodsource会自动重新查询表单