Ваш вопрос включает в себя очень запутанный код.
Вы определяете этот набор записей:
Set rst = db.OpenRecordset("SELECT * FROM tblECodes")
, а затем просматривайте строку за строкой, проверяя, соответствует ли строка определенным критериям, и затем выполняйте строку SQL, которая обновляет строки в той же самой таблице.
Это абсолютно бессмысленно.
Эта строка SQL должна выполнять эту работу (при условии, что я понял проблему с ненулевыми полями, которые обновляются, когда их не должно быть):
UPDATE tblECodes
SET Scheduled = "0000"
WHERE Scheduled = "0" AND Sch1 = "1" AND TestID = 148;
Насколько я могу судить из вашего кода, приведенный выше оператор SQL абсолютно эквивалентен вашему процедурному коду, с добавлением предостережения, что он будет обновлять только записи, где Scheduled = 0.
Выполните это с помощью CurrentDB.Execute и параметра dbFailOnError, и вы добьетесь успеха, по крайней мере, если вы четко описали свою проблему.