原因很简单,“有鬼” !
想看电视,就不要投诉那个剧情不合理; 用 Access 就要接受,他内里的处理能力。
闭上眼睛瞎猜,就是 你的数据表的 记录大小 刚好在 19, 120记录 左右
是 Jet 数据引擎 处理你这个记录集 的一个 “内存页” 的 暂存区间临界点,也有可能在 220,320左右都是错误所在,
因为你的记录集 是用窗体的 recordset clone 出来的,意思就是 有个线程在同时在处理更新后的 内存处理当中,
交给Access继续处理下一个事务,但刚才那个事务因为要操作 “内存页”,还没来得及释放,你又来更新了!
虽然是另一条记录,但是还是在同一个记录区段(内存页),所以就变成同时更新了!
解决方法就是
Private Sub Check33_Click()
Dim RsCheckAll As DAO.Recordset '建立全选数据集
Dim tgt As Boolean
On Error GoTo eeeee '<--------------------添加这里
tgt = Me.Label34.Caption = "全选"
Set RsCheckAll = Me.Child1.Form.RecordsetClone
With RsCheckAll
If .RecordCount > 0 Then
.MoveFirst
n = 0
Do While Not .EOF
g=0 '<--------------------添加这里
.Edit
!check = tgt
.Update
.MoveNext
Loop
End If
End With
Me.Label34.Caption = IIf(tgt, "取消", "全选")
RsCheckAll.Close
Set RsCheckAll = Nothing
exit sub
eeeee: '<--------------------添加这三行
g = g + 1
If g < 3 Then Resume
End Sub
再尝试 Edit 多一次就OK了! 代码里试3次都不行就退出!
不好意思的,我看你的代码太笨所以改过了!见谅!