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

重新分配断开连接的ADODB记录集后MS Access崩溃问题求助

问题解决思路

核心原因

刷新窗体(F5或“全部刷新”)后,Access会尝试重置窗体的Recordset,但断开连接的ADODB Recordset与窗体的绑定关系在刷新后会出现引用冲突,此时在Form_Current中直接重新分配Recordset会触发内存访问错误导致崩溃。

解决方案

  1. 正确释放旧Recordset引用
    在初始化新Recordset前,先关闭并释放已存在的myRecSet对象,避免内存中的无效引用冲突。

  2. 替换Form_Current的触发逻辑
    不要在Form_Current中初始化Recordset,改用自定义刷新按钮,或者拦截F5键替换默认刷新操作,控制Recordset的重建时机。

修改后的代码示例

Option Compare Database
Dim myRecSet As ADODB.Recordset

Private Sub Form_Open(Cancel As Integer)
    Init
End Sub

' 拦截F5键,用自定义刷新替代默认操作
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF5 Then
        KeyCode = 0 ' 阻止默认刷新
        RefreshRecordset ' 执行自定义刷新
    End If
End Sub

' 自定义刷新按钮的点击事件(按需添加)
Private Sub cmdRefresh_Click()
    RefreshRecordset
End Sub

Private Sub RefreshRecordset()
    ' 先释放旧的Recordset
    If Not myRecSet Is Nothing Then
        If myRecSet.State = adStateOpen Then
            myRecSet.Close
        End If
        Set myRecSet = Nothing
    End If
    ' 重新初始化
    Init
End Sub

Private Sub Init()
    Set myRecSet = New ADODB.Recordset
    With myRecSet
        .Fields.Append "ID", adInteger, , adFldKeyColumn
        .Fields.Append "someText", adVarChar, 20, adFldMayBeNull
        .CursorType = adOpenKeyset
        .CursorLocation = adUseClient
        .LockType = adLockPessimistic
        .Open
    End With
    
    myRecSet.AddNew
    myRecSet.Fields(1) = "First text"
    myRecSet.Update
    myRecSet.AddNew
    myRecSet.Fields(1) = "Second text"
    myRecSet.Update
    
    Set Me.Recordset = myRecSet
End Sub

' 窗体关闭时释放Recordset,避免内存泄漏
Private Sub Form_Close()
    If Not myRecSet Is Nothing Then
        If myRecSet.State = adStateOpen Then
            myRecSet.Close
        End If
        Set myRecSet = Nothing
    End If
End Sub

关键说明

  • 拦截F5键后,默认的窗体刷新操作被禁用,改用自定义的RefreshRecordset方法,确保旧Recordset被完全释放后再创建新的绑定。
  • 作为子窗体使用时,只需在父窗体的刷新逻辑中调用子窗体的RefreshRecordset方法即可,无需关闭重开父窗体。

内容的提问来源于stack exchange,提问作者Ілля Марко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:37:05