2015-10-20 87 views
1

我用下面的VBA代碼組合框在MS Access窗體女士訪問:VBA組合框

Private Sub ComboEmployee_AfterUpdate() 
Dim myFilter As String 
myFilter = "Select * from Filter_Employee where ([LastName] = iif('" & ComboEmployee & "'='(All)',[LastName],'" & ComboEmployee & "'))" 
Me.Employee_subform.Form.RecordSource = myFilter 
Me.Employee_subform.Form.Requery 
End Sub 

這工作得很好,問題是,我現在已經包含在組合框中多個列的組合框(見圖片)enter image description here

如果我使用上面的代碼它不起作用。我應該如何適應我的vba代碼,以便它在過濾時起作用。

+0

你能不能abaout什麼「不」工作 – Johanness

回答

1

因爲你的代碼是在組合的更新活動結束後,您可以調整SELECT到組合價值---只有當連續數不等於添加WHERE條款「(全部)」

Private Sub ComboEmployee_AfterUpdate() 
    Dim myFilter As String 
    myFilter = "Select * from Filter_Employee" 
    If Me.ComboEmployee.Value <> "(ALL)" Then 
     myFilter = myFilter & " where [LastName] = '" & Me.ComboEmployee.Value & "'" 
    End If 
    Debug.Print myFilter '<- view this in Immediate window; Ctrl+g will take you there 
    Me.Employee_subform.Form.RecordSource = myFilter 
End Sub 
+0

感謝@HansUp,所以我的代碼看起來像這樣'私人小組Combo11_AfterUpdate() 昏暗myFilter作爲字符串更具體一點 myFilter =「選擇* from Employee_ComboBox「&_ 」其中Forms!Employee_subform!Combo11 ='(All)'「&_ 」或[LastName] = Forms!Employee_subform!Combo11「 Debug.Print myFilter'< - 在立即窗口中查看;按Ctrl + G將帶你去 Me.Employee_subform.Form.RecordSource = myFilter 結束Sub'但我得到提示「輸入Parmeter價值形式!Employee_subform!Combo11」 ..什麼我做錯了任何想法?謝謝 – adp

+0

如果組合是子窗體,你必須通過它的父窗體(其中包含子窗體形式)引用它......像這樣的模式:!!!'形式ParentForm SubformControl ComboName'不過,我會添加不同接近答案,因爲我懷疑它會更容易。 – HansUp

+0

它的工作,我發現我做錯了什麼.. :)非常感謝。 – adp