通过自定义功能执行检查时,无法识别更改复选框。
我们有可以点击复选框的表单。在这种情况下,记录将被添加到列表中,该列表将使用保存功能进行更新。并且提到了检查所有复选框的功能,但这不像我点击单个复选框时的行为。
代码“全选”
Private Sub Befehl83_Click()
With Me.RecordsetClone
.MoveFirst
Do Until .EOF
.Edit
!visited = True
.update
.MoveNext
Loop
End With
End Sub
点击复选框
Private Sub chkVisited_Click()
If Not visitedList.Contains(Me.Form.Recordset.Fields("trainingMeasureID").Value) Then
visitedList.Add Me.Form.Recordset.Fields("trainingMeasureID").Value
Else
visitedList.Remove Me.Form.Recordset.Fields("trainingMeasureID").Value
End If
End Sub
当前使用全选功能时,不会保存复选框的状态。仅在单独选中复选框时。
它应该在两种情况下都能正确保存。
这是一个不太理想的解决方案:
Private Sub Befehl83_Click()
With Me.Recordset
.MoveFirst
Do Until .EOF
.Edit
.Fields("visited") = True
.Update
Call chkVisited_Click()
.MoveNext
Loop
End With
End Sub
这将主动更新记录集,您实际上会看到在表单中移动的活动记录。
另一种解决方案是重建代码,并根据表单的记录集直接对基础数据源进行更新。然后相应地更新您的列表。
根据文档,RecordsetClone是表单记录集的只读副本。 https://docs.microsoft.com/en-us/office/vba/api/access.form.recordsetclone
使用AfterUpdate事件:
Private Sub Befehl83_Click()
With Me.RecordsetClone
.MoveFirst
Do Until .EOF
If !visited.Value = False Then
.Edit
!visited.Value = True
.update
End If
.MoveNext
Loop
End With
End Sub