0

検索して検索しても、これに対する解決策が見つかりません。多くの継続的なフォーム サブフォームを含むフォームがあります。たとえば、サブフォームの 1 つで 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

私が言ったように、デバッグでコードを一時停止してから実行を続けると、コードは機能します (いずれか)。変。

4

2 に答える 2

0

申し訳ありませんが、完全な回答にはなりませんが、コメントにはかなりの量があります。最初の解決策について - Me.Recordset.Requery を試して、位置を移動せずにメイン フォームの現在のレコードを更新することをお勧めします。

2番目のオプションについて-ブックマークを確認することをお勧めします-ブックマークを更新する前に、いくつかの計算を行い、保存されたブックマークに位置を移動します。このようなもの -

  Dim rs As DAO.Recordset

  Set rs = Me.RecordsetClone
  rs.FindFirst "[MyPK]=" & Me!cmbFindByPK
  If Not rs.NoMatch Then
     If Me.Dirty Then
        Me.Dirty = False
     End If
     Me.Bookmark = rs.Bookmark
  End If
  Set rs = Nothing

MS-Access レコードセットのクローンを作成する理由

于 2015-06-19T19:54:56.530 に答える