0

我有查找表单,它基本上是一个带有一些过滤器、排序和操作按钮以及一些文本框来实现过滤器的大型列表框。

我已经使用这些表格很长一段时间没有问题。除非选择列表框中的项目,否则 SELECT 按钮将被禁用。我试图在更改过滤或排序时取消选择任何列表框条目。

为此,我将焦点设置到列表框(没有多选选项)为 -1。有许多等效的操作,我已经尝试了其中的大部分。一旦 ListIndex 设置为 -1,如果我在列表框上执行重新查询操作或在包含表单上执行刷新操作,则会收到“2115”运行时错误。此外,我无法将焦点设置到表单上的任何文本框或按钮上,出现各种运行时错误,表明必须保存该字段。

有人对这应该如何运作有想法吗?

在代码片段中,实际出现错误的代码是 Unselect 列表框注释之后靠近底部的 .requery 行

这是我发生这种情况的一种方式的代码片段:

    With Me.lbxFoundItems
        If strCurrentSearchText = vbNullString Then    'Nothing to search for
            .Visible = False
            Call ButtonSettings
            Exit Sub
        End If
        strQry = strSql & strWhere & strOrderBy
        If Nz(.RowSource, vbNullString) = vbNullString Then       'First time through
            Set qry = Nothing
            On Error Resume Next
            Set qry = CurrentDb.CreateQueryDef(strQname, strQry)
            If qry Is Nothing Then
                Set qry = CurrentDb.QueryDefs(strQname)
                qry.sql = strQry
            End If
            colGarbage.Add CurrentDb.QueryDefs(qry.Name), qry.Name
            .RowSource = qry.Name
        Else
            CurrentDb.QueryDefs(qry.Name).sql = strQry
        End If
'       Unselect the listbox entry
        .SetFocus                           
        .Selected(.ListIndex + 1) = False
        .Requery
        Me.Refresh

        Me.tbxListCount = .ListCount - 1
        .Visible = True

    End With
4

0 回答 0