You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access对话框窗体打开后记录锁定无法编辑问题求助

问题分析与解决

核心原因

你的代码在DAO记录集的**编辑状态(从.Edit到.Update的区间)**内打开了对话框窗体(acDialog)。由于对话框会阻塞代码执行,此时原记录集的编辑事务未完成,导致目标窗体的记录被锁定,无法修改。而acWindowNormal模式不会阻塞代码,编辑事务能正常完成,所以没有锁定问题。

另外,你的代码里的.Edit和.Update块没有修改任何字段值,这部分操作完全多余,反而会引发锁定问题。

解决方案

移除不必要的.Edit和.Update操作,将打开对话框的逻辑放在记录集的非编辑状态下执行,修改后的代码如下:

Me.Form.Dirty = False
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
With rs
    .MoveFirst
    Do While Not rs.EOF
        ' 移除无意义的编辑操作,直接判断条件
        If (!Tahvil_Tmp = True) And (!Az_Tankhah = False) Then
            If DLookup("[Saff_Arzyabi_2]", "Arzyabi_Tamin_Konande_sh", _
                "val([Cod_Tamin_Konande]) = '" & !Cod_Tamin_Konande & "'") = True Then
                DoCmd.OpenForm "Arzyabi_Tamin_Konande_da", acNormal, , "[Cod_Tamin_Konande]=" & !Cod_Tamin_Konande, , acDialog
            End If
        End If
        .MoveNext
    Loop
End With

额外优化建议

  • 用And替代*作为逻辑与运算符:VBA中*是算术乘法,虽然布尔值会被转成0/1计算,但And更符合逻辑判断的语义,可读性更强。
  • 如果Cod_Tamin_Konande是数值类型,DLookup的条件可以去掉单引号,避免类型转换问题:"val([Cod_Tamin_Konande]) = " & !Cod_Tamin_Konande

内容的提问来源于stack exchange,提问作者arminzf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:02:02