Ms Access表单无法显示空白页录入新记录的解决方案问询
解决方案
- 优先修改表单的内置属性,无需代码即可实现打开即空白录入:打开表单的设计视图,在「数据」选项卡下找到「数据输入」属性,设置为
是。该属性开启后,表单打开时会自动跳转到新空白记录,不会加载已有的历史记录,完全匹配你的需求。 - 替换不稳定的
DoCmd.GoToRecord写法,改用记录集直接添加新记录,同时把逻辑从Form_Load事件迁移到Form_Open事件(Load事件触发时表单记录集尚未完全初始化,容易触发OLE相关报错),修改后代码示例如下:
Private Sub Form_Open(Cancel As Integer) On Error Resume Next ' 加错误捕获避免偶发报错 Dim rs As DAO.Recordset Set rs = Me.RecordsetClone rs.AddNew Me.Bookmark = rs.Bookmark rs.Close Set rs = Nothing If Not IsNull(Me.SubjectID) Then Forms!Data_Pro_Patient_Entry![my_rep].Visible = True Call Disable_Schedule_Generation Else Forms!Data_Pro_Patient_Entry![my_rep].Visible = False Call generate_auto_id End If End Sub
- 排查表单上的OLE/ActiveX控件加载逻辑:如果表单上插入了未注册、或者加载慢的ActiveX控件(比如日历控件、第三方上传控件等),会在Load事件执行时还没完成初始化,调用跳转记录的代码就会触发通信报错。可以把控件的可见性、初始化逻辑延后到
Form_Current事件执行,或者移除不必要的第三方控件改用Access原生控件。 - 如果你需要保留加载历史记录的能力、仅默认跳转到新记录,不要修改「数据输入」属性,在上面的代码基础上完善错误捕获规则即可,避免偶发的OLE报错中断代码执行。
内容的提问来源于stack exchange,提问作者Zuva Gwata
相关产品推荐
相关产品推荐

