2015-06-30 92 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) & "'"