我的查找表单基本上是一个大型列表框,其中包含一些过滤器,排序和操作按钮以及一些用于实现过滤器的文本框。
我一直在使用这些表格一段时间没有问题。除非选择了列表框中的项目,否则将禁用SELECT按钮。我试图在更改过滤或排序时取消选择任何列表框条目。
为此,我将焦点设置为列表框(无多选选项)为-1。有许多等效的动作,我尝试了大部分动作。 ListIndex设置为-1后,如果我对列表框执行requery操作或对包含表单执行刷新操作,则会出现'2115'运行时错误。另外,我无法将焦点设置到表单上的任何文本框或按钮,这会导致各种运行时错误,即必须保存该字段。
任何人都有关于这应该如何运作的想法?
在代码片段中,获取错误的实际代码是取消选择列表框注释后底部附近的.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