我有一个带有数据表视图的表单我希望将此表单用作列表框(多选扩展),因此当我单击表单中的每个记录/字段时,它使用(清除选择功能)未选择的其他记录并且只选择我关注的记录,现在的问题是在运行清除选择功能后点击每个字段时它会转到第一个记录并且没有将光标移动到当前的聚焦记录。
似乎低于代码
Me.Recordset.AbsolutePosition = Pos1
不起作用,不会转移到当前的重点记录。
完整的代码如下:
Private Sub P_Click()
On Error Resume Next
Dim ct As Control
Dim Cnt As Long, Rws As Long
Dim Pos1 As Long, Pos2 As Long
Pos1 = Me.Recordset.AbsolutePosition
Set ct = ActiveControl
' Clear other selections if Ctrl or Shift key
' is not simultaneously pressed.
If CtrlPressed = 0 And ShiftPressed = 0 Then
P_ClearSelections
Me.Recordset.AbsolutePosition = Pos1
Me.IsSelected = True
ct.SetFocus
GoTo ExitPoint
End If
If ShiftPressed > 0 Then
Rws = Me.SelHeight
If Rws > 1 Then
Pos2 = Me.SelTop - 1
For Cnt = Pos2 To Pos2 + Rws - 1
Me.Recordset.AbsolutePosition = Cnt
Me.IsSelected = True
Next
End If
GoTo ExitPoint
End If
Me.IsSelected = True
ExitPoint:
' Save the status
Me.Dirty = False
' Update display in SF_Selected
Me.Parent("SF_Selected").Requery
ActiveControl.SelLength = 0
Set ct = Nothing
On Error GoTo 0
End Sub
功能明确选择如下;
Public Sub P_ClearSelections()
On Error Resume Next
DoCmd.Echo False
' Clear all check boxes
CurrentDb.Execute "UPDATE tblItems " & _
"SET IsSelected = False;", dbFailOnError
Me.Requery
DoCmd.Echo True
On Error GoTo 0
End Sub
答案 0 :(得分:1)
您正在重新查找P_ClearSelections()
过程中的基础记录集。从Microsoft文档:
也无法保证给定的记录具有相同的记录 如果重新获取或重新打开Recordset对象,则为AbsolutePosition。 书签仍然是保留和返回的推荐方式 给定的位置,是在所有类型中定位的唯一方式 Recordset对象。
我建议您调查Bookmarks
的使用(并删除On Error Resume Next
语句)。