无法在MS Access中的连续表单上转到特定记录

时间:2013-01-25 20:53:28

标签: vba ms-access ms-access-2010

搜索和搜索,无法找到解决方案。我有一个包含许多连续形式子表单的表单。当我更改一个值时,让我们在其中一个子表单上说FIELD_A,我在其他几个子表单上运行计算,然后焦点返回到FIELD_A。但是,在计算过程中会发生对PARENT表单的更新,并且需要进行更新。因此,当我将焦点返回到原始子窗体时,子窗体上的第一个记录具有焦点。然后我需要转到我正在处理的记录。

我尝试了几种选择,但没有任何效果。但是,如果我在代码中的行中设置一个DEBUG断点,它移动到指定的记录,然后物理地从该行运行代码,它就可以了!我已经尝试在那里设置一个等待期无济于事。

以下是代码片段:

Call common.CalculateAllLoadTotals _
    (Me, Me.AffiliateID, Me.ClientID, Me.FacilityID, Me.ProposalRevision)

Me.Recordset.FindFirst "[AffiliateID] = '" & Me.AffiliateID & "'" & _
                 " AND [ClientID] = " & Me.ClientID & _
                 " AND [FacilityID] = " & Me.FacilityID & _
                 " AND [ProposalRevision] = " & Me.ProposalRevision & _
                 " AND [EquipmentID] = " & currItemID

我也试过这个:

dim currRecord as Long
currRecord = Me.CurrentRecord

' >>> REST OF CODE HERE <<<

Call common.CalculateAllLoadTotals _
    (Me, Me.AffiliateID, Me.ClientID, Me.FacilityID, Me.ProposalRevision)

Me.Form.Recordset.Move = currRecord

正如我所说,代码工作(任一)如果我用调试暂停它然后继续执行。奇怪。

2 个答案:

答案 0 :(得分:0)

我怀疑您正在更新父表单底层的记录集。这会导致父窗体自动重新查询,因此子窗体位置返回到第一条记录。 解决方案是更新父窗体上的控件:

Me.Parent!Controlname = XXXX

答案 1 :(得分:0)

很抱歉,这不是一个完整的答案,但评论很多。 关于你的第一个解决方案 - 我建议你试试Me.Recordset.Requery 在不移动位置的情况下刷新主窗体中的当前记录。

关于你的第二个选项 - 我建议看看书签 - 更新前记住书签,进行一些计算,然后将位置移动到保存的书签。像这样的东西 -

<a href="#" id="button1">Om Fantasylab</a>

取自Why clone an MS-Access recordset?