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

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。 抱歉,错过了选择搜索字段的要点,第二个答案是正确的

以上是关于将组合框的值作为字段传递的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJS 中获取组合框的值

如何让组合框将正确的值传递给表?

将组合框设置为另一个组合框的值 - Access Vba

选择项目后将多列组合框的值设置为所有列?

将组合框的值插入 WPF 中的数据库

改变一个组合框的值会导致另一个组合框的值改变