ник: Алексей М.
Имеется форма, в которую встроены несколько подчиненных форм на вкладках,
привязанных к одной таблице. В подчиненных формах имеется по несколько
наиболее характерных полей для просмотра записей.
Для ускорения ввода схожих записей предусмотрел возможность
дублирования текущей (по кнопке) нижеприведенным способом. См. код. Для
редактирования скопированных записей предусмотрена специальная форма
"Edit", открывающая запись по переданному ей из глобальной переменной
коду и где доступны все поля.
Процедура, для удобства, прописана во внешнем модуле. И все работает, но
до тех пор, пока не откроется форма "Edit". Собственно передергивание
записей сделано, чтобы после дублирования последней записи в форме "Edit" сразу все было
видно, а не пустые поля. Или приходится вручную в подчиненной форме
передергивать курсор по записям для обновления записей в самой таблице.
Так вот, после закрытия формы "Edit" нажатие по кнопке дублирования
вызывает ошибку "Method 'MoveFirst' of object 'Recordset' failed" (при
входе в отладчик встает на строку rst.MoveFirst), а не открывая можно
дублировать до бесконечности и без ошибок.
Sub DubleRec() 'дублирование записей в подчиненных формах
'формы "Главная"
Dim rst As Object
'PfDuble - имя активной подчиненной формы.
Set rst = Forms![Главная].Controls(PfDuble).Form.Recordset
MM1 = rst![Поле1]
MM2 = rst![Поле2]
.
.
MMn = rst![ПолеN]
rst.AddNew
Forms![Главная].Controls(PfDuble).Form.Controls![Поле1].Value = MM1
Forms![Главная].Controls(PfDuble).Form.Controls![Поле2].Value = MM2
.
.
Forms![Главная].Controls(PfDuble).Form.Controls![ПолеN].Value = MMn
rst.MoveFirst
rst.MoveLast
End Sub