Не делай этого в VBA.Сделайте это в запросе вместо этого.
Например, вы можете сделать это следующим образом:
Создать запрос с именем qryAssignStudentsToGroup
:
PARAMETERS id_GroupFrm INT;
INSERT INTO tbl_03_GruopsStudents (idGroup, nameStud)
SELECT id_GroupFrm, nameStud
FROM tbl_02_Students AS s
WHERE NOT EXISTS (
SELECT NULL
FROM tbl_03_GruopsStudents AS g
WHERE s.nameStud = g.nameStud
AND g.idGroup = id_GroupFrm
);
Тогда ваш код станет:
Private Sub btnAddRecord_Click()
With CurrentDb.QueryDefs("qryAssignStudentsToGroup")
.Parameters("id_GroupFrm") = Me.id_GroupFrm
.Execute
End With
Me.frm_03_GruopsStudents_tbl.Requery
End Sub
Это дает вам гораздо меньше кода для одной и той же вещи, и вы устраняете сложность обработки ошибок, просто отфильтровывая строки.Что еще более важно, вы выполняете массовое обновление один раз , а не для каждой строки, к которой вы прикасаетесь.Это использует мощь базы данных.С DAO.Recordset удобно делать что-то в цикле, но это построчное программирование.Вы действительно хотите получить представление о программировании на основе множеств.