我有查找表单,它基本上是一个带有一些过滤器、排序和操作按钮以及一些文本框来实现过滤器的大型列表框。
我已经使用这些表格很长一段时间没有问题。除非选择列表框中的项目,否则 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