Ms access 添加新记录时,子窗体失去焦点
我的数据库分为前后两部分。在这个问题上,我使用了三个表;tblMain,tblDetail,tblNote。我知道记录的数量相对较少,但我设计这个是为了长期使用。我有一个tblMain的绑定表单(frmMain),它有一个子表单(subDetail)用于tblDetail。SubDetail有tblNote的子窗体(subNote)。当我单击主窗体frmMain上的按钮时,子详细信息窗体将变为可见,并允许我添加新记录。我将按钮和VBA复制到subDetail,以便在需要时也可以将记录添加到subNote。但是,在创建记录后,子注释窗体将消失,焦点将返回到子详细信息。如果我移动到一个新记录,然后返回,子注释表单将可见,并显示除PK之外的空记录。我已经检查了subDetail和subNote的所有属性。除了子细节的OnCurrent事件外,它们完全相同。对于当前事件的子细节,我有以下内容Ms access 添加新记录时,子窗体失去焦点,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我的数据库分为前后两部分。在这个问题上,我使用了三个表;tblMain,tblDetail,tblNote。我知道记录的数量相对较少,但我设计这个是为了长期使用。我有一个tblMain的绑定表单(frmMain),它有一个子表单(subDetail)用于tblDetail。SubDetail有tblNote的子窗体(subNote)。当我单击主窗体frmMain上的按钮时,子详细信息窗体将变为可见,并允许我添加新记录。我将按钮和VBA复制到subDetail,以便在需要时也可以将记录添加到sub
'Hide subform if no records
Private Sub Form_Current()
Me!ctrlmlsID.SetFocus
With Me!subNote.Form
.Visible = (.RecordsetClone.RecordCount > 0)
End With
End Sub
这将隐藏或显示子窗体subNote,具体取决于是否存在任何记录。如果您能帮助我们了解这种行为,我们将不胜感激
以下是在单击按钮时将新记录添加到subNote的代码
If Me.Dirty Then Me.Dirty = False
Dim AddTransID As String
AddTransID = Me!ctrlID.Value
Me!subNote.Visible = True
Me!subNote.SetFocus
DoCmd.GoToRecord , , acNewRec
Me!subNote.Form!ctrlID = AddTransID
Me!subNote.Form!ctrlType.SetFocus
我使用了断点,添加记录的效果很好。只是子窗体再次变为不可见,焦点被更改回父窗体才是问题所在,因为它不允许添加这些注释。我感觉您正在与访问权作斗争 使用AllowAdditions=True的正确绑定子窗体创建新记录通常不需要按钮。这将自动发生 您遇到的问题可能源于这样一个事实,即新记录在保存之前并不真正存在(正如您观察到的,没有PK值)。所以隐藏子窗体的逻辑不起作用。如果你坚持使用这种方法,你可以试试
.Visible = (.RecordsetClone.RecordCount > 0 or .NewRecord)
但我认为,如果你删除你提到的按钮和代码,让Access做它擅长做的事情,你的生活会更轻松。确保子窗体数据绑定属性设置正确 不,我在其他表单中使用相同的代码在其他表中添加新记录,效果很好。我将尝试将.NewRecord添加到代码中,看看会发生什么。我怀疑这是一个背景或什么的,但我不明白。事实上,我在frmMain上使用了完全相同的代码来隐藏子细节并在子细节中创建新记录。它在子细节中工作得很好,但在子注释中却不行。