【发布时间】:2015-09-17 00:03:26
【问题描述】:
我正在尝试在子表单上使用过滤器。 我在主窗体上有一个组合框。
如果在组合框中选择了名称并点击搜索按钮,我希望相应的数据显示在子表单中。
如果我将组合框的行源设置为SELECT [table].[name] FROM table,则这些值不会显示在组合框中,但我可以使用以下代码在子表单中获得所需的数据。
Private Sub SearchName_Click()
If IsNull(Me.ComboName.Value) Then
Me.SubList.Visible = False
MsgBox "Please select name。", vbOKOnly + vbCritical
Else
Me.SubList.Visible = True
Call frm_Enter
End If End Sub
Private Sub frm_Enter()
Dim CustName As String
CustName = Me.ComboName.Value
With Me.SubList.Form
.Filter = "[name]='" & CustName & "'"
.FilterOn = True
End With
End Sub
如果我将组合框的行源更改为SELECT [table].[Id], [table].[name] FROM table,组合框中的值会显示,但我在子表单中没有得到想要的结果。
我尝试将过滤器更改为.Filter = "[Id]='" & CustName & "'",但结果没有任何变化。
非常感谢任何建议。
【问题讨论】:
-
尝试选择除 id 之外的任何其他列,问题仍然存在?
-
您是否尝试过运行另一个查询来获取名称?像
Select name From table Where Id = CustName这样的东西,因为你在CustName中的值是Id。 -
最简单的技巧是将组合框的行源更改为:
SELECT [table].[name], [table].[name] FROM table- 是的同一列两次。组合框似乎被配置为使用第一列作为comboname.value,第二列作为显示的内容。另一种方法是查看组合框的属性,可能有一个列宽属性将第一列设置为 0,因此它不会显示。它可能看起来像“0;2.5”或“0,2.5”或“,2.5”或类似的东西。 -
更改为
SELECT [table].[name], [table].[name] FROM table并且成功了!!!谢谢!!
标签: ms-access combobox vba box