我已经使用名为Task Tracker的MS Access构建了一个数据库。我把我的主表单设置为splitform。我试图强制用户使用我创建的“添加新记录”按钮,而不是点击splitform数据表中的*行。为此,我将属性“Allow Additions”设置为No,这显然阻止我使用此表单创建新记录。
为了解决这个问题,我尝试使用由“添加新记录”按钮触发的VBA将“允许添加”属性设置为“是”,创建新记录,然后再将其设置为“否”。唯一的问题是:在设置表单以允许添加后,将焦点设置到表单上的控件的一行代码会生成错误“任务跟踪器无法将焦点移动到控件所有者”。这是在我将“Allow Additions”属性设置为false之前。
如果我不包含Allow Additions行,则没有错误。
我移动了一些代码,现在将焦点设置在完全不同的控件上会产生问题,因此它不是特定于控件的。
这两件事情如何相关?
以下是本节中的代码:
Public Sub NewTaskSetup()
On Error GoTo NewTask_btn_Click_Err
Me.AllowAdditions = True
Me.Owner.SetFocus
DoCmd.GoToRecord , "", acNewRec
Me.TaskName = TempVars!newTaskName
Me.Assignees.SetFocus
For i = 0 To Me.Assignees.ListCount - 1
其余的代码在这里无关紧要。在此配置中,生成错误的控件是Me.Assignees。
有关详细信息:“新建记录”按钮将打开“模态对话框”表单,提示用户输入任务名称。单击此窗体上的“确定”将关闭模式对话框,然后调用NewTaskSetup()函数(上图)。
感谢您抽出宝贵时间考虑我的困境。
更新
我更改了代码,以便在打开模式窗体之前发生以下代码。我仍然在Me.Assignees.SetFocus线上出现“无法移动焦点”错误:
Private Sub NewTask_btn_Click()
On Error GoTo NewTask_btn_Click_Err
Me.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
Me.Owner = TempVars!userIdNum
Me.Assignees.SetFocus
For i = 0 To Me.Assignees.ListCount - 1
在设置焦点时,记录已经有一个自动编号ID并已保存。我不明白是什么阻止了焦点的设定。