НО почему второй запрос не обновляемый? Вернее почему после добавления таблицы "КУРСЫ" запрос перестаёт быть обновляемым?
У меня так и не духу разложить ВСЕ предложения Join в дерево объединений...

и разобраться каие типы отношений тействуют между табличами. Уж очень их много.
Попробую объяснить на более простом примере. Допустим мы объединяем две таблицы Т1 и Т2 имеющие соответственно отношение 1-ко-многим (т.е. "много" на стороне талицы Т2). После объединения данных первичный ключ таблицы будет оставаться уникальным, а ключ таблицы Т2 будет повторяться.
В данном случае таблицу Т2 называют ТАБЛИЦЕЙ, СОХРАНЯЮЩЕЙ КЛЮЧИ (есть такое понятие). Разумеется если в начале запроса будет написано "select t2.* from ..." то запрос будет обновляемым, так как добавление будет производиться в таблицу t2. А если "select t1.* from ...", то разумеется добавление/изменение невозможно, так как ключи повторяются и неизвестно, что редактировать.
Т.е. через запрос "select * from t1 inner join t2 on (...)" в описанных условиях можно редактировать только таблицу T2!
После добавления таблицы КУРСЫ таблица ОПЕРАЦИИ перестает быть таблицей сохраняющей ключи (т.е. не факт, что первичный ключ таблицы ОПЕРАЦИИ действительно повторяется, а просто между ними могло возникнуть отношение много-ко-многим, например).
Как быть?
Попробуйте преобразовать условия из предложения JOIN ON в условия предложения where это должно помочь.
Например JOIN можно заменить на EXISTS
в первый запрос добавьте where со связанным подзапросом
where exists(
select * from КУРРСЫ
where код_вал = класс_вал.код_вал and
код_курс_реестр = номер_реестра.счетчик_реестров and
код_курс = курсы.код_курс
)
Только боже упаси тащить потом это в "Конструктор запросов". Эта зараза
Exists (...) преобразовывает в (Exists (...)<>false) и еще скобок наставит...
Итак в результате у Вас останется просто отфильтрованный первый запрос, который редактируется.
Но опять-таки нет гарантии, что все получится.... Пишите, попробуем еще что-нибудь придумать.