Form.Recordset プロパティは、アクセスへのかなり新しい追加です。ヘルプテキストにはいくつかのビットがあります。問題を引き起こしていると思われるのは、それらがどのように組み合わされているかです。
たとえば、フォームがクエリに基づいている場合、Recordset プロパティを参照することは、同じクエリを使用して Recordset オブジェクトを複製することと同じです。ただし、RecordsetClone プロパティを使用する場合とは異なり、フォームの Recordset プロパティによって返されるレコードセットで現在のレコードを変更すると、フォームの現在のレコードも設定されます。
したがって、最初はそのようには見えませんが、実際にはレコードセットを複製し、その新しいコピーを作成します。同期を維持するだけです。
これで、新しいRecordset オブジェクトが作成されました。ここに問題があります。
新しい Recordset オブジェクトは、オブジェクトを開くと Recordsets コレクションに自動的に追加され、オブジェクトを閉じると自動的に削除されます。
最初に、usr_cde で検索されたレコードセットを複製すると、フォームは魔法のように現在のレコードを一致するように設定します。
2 回目は、usr_cde で見つかったレコードセットのクローンを作成しますが、魔法のレコード同期は、Recordsets コレクションに保存されているレコードセットの最初のコピーで停止したままです。
したがって、レコードセットを閉じる必要がありますが、別のコピーを作成して閉じるだけではないことを確認するには、次の手順を実行します。
'untested
Private Sub cmbSearchCode_AfterUpdate()
Dim rs as adodb.Recordset
Set rs = Me.Recordset
rs.Find "usr_cde = '" & ctl & "'"`
rs.Close
ctl = null
end sub
これをテストする機会はありませんでしたが、.Bookmark を使用した実用的なソリューションが既にあります。これで予期しない動作が説明されることを願っています。