Свойство Form.Recordset является довольно новым дополнением к доступу, в текстах помощи есть несколько кусочков, именно их объединение, как мне кажется, вызывает вашу проблему.
Если форма основана на запросе, например, ссылаясь на
Свойство Recordset является эквивалентом клонирования объекта Recordset
используя тот же запрос. Однако в отличие от использования RecordsetClone
свойство, изменяющее, какая запись является текущей в возвращенном наборе записей
свойством Recordset формы также устанавливает текущую запись
форма.
Итак, поначалу он не выглядит так, как на самом деле, но на самом деле клонирует набор записей и создает его новую копию. Просто это синхронизирует.
Итак, у вас есть новый Объект Recordset и вот в чем проблема:
Новый объект набора записей автоматически добавляется в набор записей
Коллекция при открытии объекта, и автоматически удаляется при
Вы закрываете его.
В первый раз вы клонируете найденный набор записей в usr_cde, и форма волшебным образом устанавливает текущую запись в соответствие.
Во второй раз вы клонируете найденный набор записей в usr_cde, но волшебная синхронизация записей все еще застревает на первой копии набора записей, которая была сохранена в коллекции наборов записей.
Так что вам просто нужно закрыть набор записей, но убедиться, что вы не просто создаете другую копию и закрываете ее, выполняя следующие действия:
'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. Я надеюсь, что это объясняет неожиданное поведение.