将组合框的值作为字段传递
Posted
技术标签:
【中文标题】将组合框的值作为字段传递【英文标题】:Pass value of combobox as field 【发布时间】:2016-07-15 08:30:50 【问题描述】:如果我有错误的术语,我们深表歉意。我正在尝试构建一个表单,用户从下拉列表中选择字段,然后在文本框中输入搜索文本。然后表单应在表中搜索与组合框中指定的字段中的文本匹配的记录。
但是我目前拥有的东西不起作用。我知道错误在哪里,但无法修复。
目前的代码是:
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 & "*' " _
将 Fields(strComboField) 替换为字段名称 [Model Name] 即可解决问题。
非常感谢任何帮助
谢谢
【问题讨论】:
试试& "Where Fields " & strComboField & " LIKE '*" & Me.txtSearch & "*' " _
。但是,我不确定这是您唯一的错误,strComboField
是否获取值,这不是从组合框或列表框读取的方式
谢谢你,那没用,但正如你所说,可能是因为我从组合框中读取的方式不正确。我会看看我能不能解决这个问题。给我的错误是(在查询表达式“字段模型名称 LIKE 'joystick”中缺少 operator0。
当您使用 F8 运行代码时,strComboField
是否从用户表单组合框中正确读取值?它是组合框、列表框还是文本?
它是一个组合框,是的,它似乎正确读取了组合框的值并将变量设置为该值
试试& "Where Fields [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' ""_
【参考方案1】:
不应该是:
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]; "
【讨论】:
【参考方案2】:尝试使用这个:
"Where [Model Name] LIKE '*" & Me.txtSearch & "*' " _
或者像这样使用 WHERE 创建基本查询:
Where [Model Name] LIKE '* & Forms![frm_YourForm]![cmb_src] & *'
并通过单击搜索按钮重新查询表单,不需要其余的 VBA 代码
更新:抱歉,错过了选择搜索字段的要点。在这种情况下,WHERE 应该是
"Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' "
之后
Me.sub_ModelList.Form.RecordSource = strSearchTerm
不需要额外的重新查询,更改 Recodsource 会自动重新查询表单
【讨论】:
我不确定这是否是我想要发生的事情? [型号名称] 应由用户通过组合框设置为 [型号名称] 或 [型号品牌] 或 [型号类别]。搜索所基于的文本位于名为 txtsearch 的文本框中。我正在尝试的是在组合框中指定的字段中搜索 me.txtbox。 抱歉,错过了选择搜索字段的要点,第二个答案是正确的以上是关于将组合框的值作为字段传递的主要内容,如果未能解决你的问题,请参考以下文章