我正在尝试根据绑定列以外的特定列中列表框中项目的值过滤查询
这是我到目前为止所拥有的。
我有一个包含2列inv_id
和prod_id
的列表框
listbox is lst_MainList
的名称。 inv_id
是绑定列(第1列)
列表位于名为Projects
我正在尝试创建2个查询。
首先是基于inv_id过滤查询 这很容易,因为inv_id是我的绑定列
为了获取第二列的值,我尝试创建一个函数
Public Function GetColumnValue(col As Integer, ByRef lst As Access.ListBox)
GetColumnValue = lst.Column(col)
End Function
我们的想法是将列号和列表框名称传递给函数,函数将返回该列的值
功能似乎没问题。问题是当我将此函数作为条件输入我的查询时
=GetColumnValue(2,[Forms]![Projects]![lst_MainList])
希望根据当前活动项目的第2列过滤我的查询,在查询运行时出现此错误。
This expression is typed incorrectly or is too complex
我知道我的最后一个选项是添加一个绑定到列表框第2列的不可见文本框但是我想尝试使用函数方法,因为它看起来更干净且可重复使用
知道我的功能有什么问题吗?
答案 0 :(得分:3)
这是因为,在查询中,[Forms]![Projects]![lst_MainList]
将返回控件的 Value 属性,而不是对控件的引用。
你可能需要这样做:
Public Function GetColumnValue(col As Integer, FormName As String, ControlName As String)
GetColumnValue = Forms(FormName).Controls(ControlName).Column(col)
End Function
然后:
=GetColumnValue(2,"Projects","lst_MainList")