我有一个SIZE.
未与subForm
链接。通过单击从parentForm
中选择一条记录,然后通过subForm
事件的On_Click()
事件运行代码:
subForm
它会将 DoCmd.GoToRecord, acDataForm, "parentForm", acGoTo, me.Form.CurrentRecord
更新为所需的记录,但是也会刷新parentForm
,因为焦点会从我最初单击的记录移开。
如何保持对subForm
上所选记录的关注?
答案 0 :(得分:0)
我已经在这里写了一个答案(Recalc Parent Form Without Losing Focus From The Current Record Of The SubForm),但是我还没有得到答复。因此,我不会将您的问题标记为重复。
假设您在主窗体上的子窗体控件名为ctlSubForm
,这就是您在子窗体OnClick()
事件中调用的代码:
'Store the current sub forms record/bookmark
Dim currentRecord As Variant
currentRecord = Me.Bookmark
'Your current code:
DoCmd.GoToRecord, acDataForm, "parentForm", acGoTo, me.Form.CurrentRecord
'Maybe, if it is not working, try to also use this:
'DoEvents
'Set the sub forms record/bookmark to the stored record/bookmark
Me.Bookmark = currentRecord
'Set the focus to the main forms sub form control
'(this is necessary to really get the focus back to the subform)
Me.Parent.ctlSubForm.SetFocus
答案 1 :(得分:0)
最后,我找到了解决我问题的方法。
运行以下代码,以通过单击parentForm
上未与continuous subForm
链接的特定记录来移至parentForm
上的特定记录。如果Me.CurrentRecord
被除parentForm
之外的其他一些参数过滤而又不是subForm
的情况下,ID
不是移动linked
记录的可靠方法到parentForm
。因此,我修改了代码,在其中设置了SQL查询,然后将其设置为RecordSource
中的parentForm
。我将此新代码放在subForm的On_Click()
事件中。
Dim lngPosition as Long
Dim SQL1 as String
Dim a as Long
a = Me.txt_ID 'It is shared unique ID between mainForm and subForm
lngPosition = Me.CurrentRecord
SQL1 = "SELECT myTbl.a, myTbl.b, mTbl.c FROM myTbl " _
& "WHERE ((myTbl.a) = " & a & ");"
Me.Parent.RecordSource = SQL1
Me.Parent.Requery
Me.Form.Recordset.Move lngPosition - 1
运行此命令后,焦点仍停留在subForm
移动到所需记录时我最初单击的mainForm
的活动记录上。