Access导航窗体中子窗体加载时跳转新记录的代码修改方案
解决导航窗体中GoToRecord代码报错的问题
你原本的代码在独立窗体中运行正常,但将窗体放入NavigationForm后,Me.Name的引用逻辑因窗体嵌套关系失效,导致DoCmd无法正确定位目标窗体。以下是两种可靠的修改方案:
方法1:调用窗体自身的GoToRecord方法
直接使用当前窗体的内置方法,无需指定窗体名称,彻底避开嵌套引用的路径问题:
Private Sub Form_Load() Me.GoToRecord , , acNewRec End Sub
方法2:修正DoCmd的窗体引用逻辑
如果坚持使用DoCmd,需要明确指向当前窗体的Form对象,而非单纯依赖名称:
Private Sub Form_Load() DoCmd.GoToRecord acDataForm, Me.Form.Name, acNewRec End Sub
补充说明
- 你之前尝试的
Forms!NavForm!navSubform.Form写法失败,通常是因为导航子控件的实际名称并非navSubform(需在导航窗体设计视图中确认子控件名称,而非嵌入的窗体名称),但上述两种方法无需依赖导航窗体的控件名称,通用性更强。 - 也可以通过直接添加新记录实现相同效果:
Private Sub Form_Load() If Me.NewRecord = False Then Me.Recordset.AddNew End If End Sub
内容的提问来源于stack exchange,提问作者Wima
相关产品推荐
相关产品推荐

