当查询被分配到"点击"时,无法在Access中的多选列表框中选择值。事件

时间:2016-07-30 12:23:32

标签: vba listbox access-vba buttonclick

我有两个多选列表框" Animal"和"州"。这两个列表框相互依赖。例如,如果我选择" in"和" mi"在状态列表框中,动物列表框将仅显示" in"中的动物。和" mi"。

我的问题是我将行源设置为下面的查询,并将其分配给"点击"动物列表框中的事件。当我点击动物列表框时,它会运行查询,但它不再允许我选择任何动物。

如何更改列表框以允许我在动物列表框中选择动物?

Private Sub animal_Click()
 Dim Q           As QueryDef
    Dim DB          As Database
    Dim Criteria    As String
    Dim ctl         As Control
    Dim Itm         As Variant
    Dim ctl2        As Control
    Dim ctl3        As Control

    ' Use for dynamic SQL statement'
    Dim strSQL      As String



    Set ctl2 = Me![State]
    For Each Itm In ctl2.ItemsSelected
        If Len(Criteria2) = 0 Then
            Criteria2 = Chr(34) & ctl2.ItemData(Itm) & Chr(34)
        Else
            Criteria2 = Criteria2 & "," & Chr(34) & ctl2.ItemData(Itm) & Chr(34)
        End If
    Next Itm



    ' Modify the Query.
    Set DB = CurrentDb()
    Set Q = DB.QueryDefs("animal")
    ' Modify the Query.
    Set DB = CurrentDb()
    Set Q = DB.QueryDefs("animal")

    strSQL = "Select distinct(animal) From [table1] Where [table1].[type] In (" & "'Animal')"


    If (Len(Criteria2) <> 0) Then ' Append State Criteria
        strSQL = strSQL & " AND [table1].[state]  IN (" & Criteria2 & ")"
    End If

    Q.SQL = strSQL
    Q.Close

    ' Run the query.
    'DoCmd.OpenQuery "animalquery"
    Me.Animal.RowSource = strSQL
End Sub

1 个答案:

答案 0 :(得分:0)

我想我已经为此解决了。

我最初将“Private Sub animal_Click()”更改为“Private Sub animal_dblClick()”,但这导致了事件过程错误。

然后我将其更改为“Private Sub animal_Enter()”。当我进入列表框时,它会运行查询,同时仍允许我选择列表框中的项目。

但是,如果某人有不同的解决方案或知道如何使用双击方法。那会很棒!