2015-06-30 53 views
3

我正在尝试在子窗体上使用筛选器。 我在主窗体上有一个组合框。在子窗体上使用筛选器

如果在组合框中选择了名称并点击搜索按钮,我希望相应的数据显示在子表单中。

如果我将组合框的行源设置为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 & "'",但结果没有变化。 任何建议,非常感谢。

+0

尝试选择除id以外的任何其他列,问题是否存在? – tharif

+1

您是否尝试过运行另一个查询来获取名称?类似于'Select name From table Where Id = CustName',因为你在'CustName'中的值是Id。 – EngJon

+2

最简单的方法是将组合框的行源更改为:'SELECT [table]。[name],[table]。[name] FROM table' - 是同一列两次。组合框似乎被配置为将第一列用作comboname.value,将第二列用作显示内容。另一种方法是查看组合框的属性,可能会有一个列宽度属性,将第一列设置为0,因此它不显示。它可能看起来像“0; 2.5”或“0,2.5”或“,2.5”或类似的东西。 – GregHNZ

回答

0

OK,你的组合框定义两列,让你查询:

SELECT ID, [Name] FROM table is fine 

但使用的是语法,你需要参考的组合框(从零开始)2列。

.Filter = "[name]='" & me.comboname.column(1) & "'"