2015-01-07 54 views
0

我正在嘗試運行該代碼塊的編譯器錯誤。顯然,選中的屬性會拋出一個錯誤:參數不是可選的。有沒有更好的方法來做到這一點或我可以使用的不同的財產?所選屬性編譯錯誤

Private Sub cmbAnalyst_AfterUpdate() 

    If cmbAnalyst.Selected = "" Or IsNull(cmbAnalyst.Selected) Then 
     Exit Sub 
    Else 
     whereAtt = whereAtt & " And Analyst = ' cmbAnalyst.Selected '" 
     Call queryBuilder 
    End If 
    End Sub 

    Private Sub Form_Load() 
    whereAtt = "Select * from tblActionLog where LogID is not null" 
    cmbAnalyst.RowSource = "SELECT DISTINCT Analyst FROM tblActionLog" 
    Call queryBuilder 
    End Sub 

    Public Sub queryBuilder() 
    testTable.RowSource = whereAtt 
    End Sub 
+0

給它一個鏡頭。它沒有使用selecteb屬性,因此它總是進入Exit Sub而不是調用queryBuilder – SaladSnake

回答

1

您可以使用ComboBox的ListIndex方法來測試是否正在選擇某物。你也可以使用Len()函數。

Private Sub cmbAnalyst_AfterUpdate() 
    If cmbAnalyst.ListIndex <> -1 Then 
     whereAtt = whereAtt & " And Analyst = '" & Me.cmbAnalyst &"'" 
     Call queryBuilder 
    End If 
End Sub 

我個人會去ListIndex。如果沒有選擇,ListIndex將返回-1。

+0

修復了它!謝謝!但不知何故,我的querry沒有提出任何記錄。 – SaladSnake

+0

歡迎您! :)什麼是你的組合框綁定列,你在右列應用過濾器? – PaulFrancis

+0

當我重新更新cmbAnalyst時,它是whereAtt我放入它的select語句被清除。 因此,而不是選擇*從tblActionLog其中的LogID不爲空並且Analyst ='cmbAnalyst.Selected 這只是和Analyst ='cmbAnalyst.Selected – SaladSnake

1

從Access幫助主題,ComboBox.Selected物業 ...

「Selected屬性是一個從零開始的數組,其中包含在組合框中每個項目的選定狀態。」

因此,Access要求的參數是標識該數組成員的索引。

如果你的是一個簡單的選擇組合框,你可以檢查它的.Value

'If cmbAnalyst.Selected = "" Or IsNull(cmbAnalyst.Selected) Then 
If Len(Trim(Me.cmbAnalyst.Value & vbNullString)) = 0 Then 
+0

謝謝漢斯,這很有幫助! – SaladSnake