2016-07-15 132 views
0

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

但是我目前有没有工作。我知道错误在哪里,但无法修复。

当前的代码是:

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 

结束子

相信错误是在线路

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

作为具有字段名称替换字段(strComboField)[型号名称]解决好。

任何帮助,不胜感激

感谢

+0

试试' &“Where Fields”&strComboField&“LIKE'*”&Me.txtSearch&“*'”_'。但是,我不确定这是否是唯一的错误,'strComboField'获取值,这不是从组合框或列表框中读取的方式 –

+0

谢谢,这没有奏效,但作为你说可能是因为我错误地从组合框中读取的方式。我会看看我能否解决这个问题。他给我的错误是(在查询表达式'Fields Model Name LIKE'* joystick *'中缺少operator0' – TerrorPenguin

+0

当你使用F8运行代码时,'strComboField'是否正确地从用户窗体组合框读取值是它是一个组合框,列表框或文本? –

回答

0

尝试使用此:

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

或刚刚创建基本查询的WHERE这样的:

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

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

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

Me.sub_ModelList.Form.RecordSource = strSearchTerm 

额外重新查询

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

后,改变Recodsource自动重新查询形式

+0

我不确定这是我想要发生的事情吗?应该设置[Model Name]由用户通过组合框到[型号名称]或[型号品牌]或[型号类别]。搜索基于的文本位于名为txtsearch的文本框中。我试图这么做的是搜索me.txtbox在组合框中指定的字段中。 – TerrorPenguin

+0

我很抱歉,错过了关于选择搜索字段的一点,第二个答案是正确的 –

+0

不需要道歉,谢谢你的帮助 – TerrorPenguin

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]; " 
+0

是的!这样可行!非常感谢你 – TerrorPenguin

相关问题