Вы прошли через код - установите точку останова, нажав F9 на строке кода, нажмите F8 для запуска каждой строки?Когда у вас есть, есть ли у frm значение?Вы можете проверить, наведя курсор на него, или набрав? Frm в ближайшем окне (Ctrl + G для переключения немедленного окна).Он должен возвращать строку, потому что имя отчета должно быть строкой.Я подозреваю, что вы имеете в виду frm.Name или Me.name, если вы еще не сказали, что ваш оригинальный тест работает.
Кстати, для этого:
If IsNull(Me.WrkOrdr) = True Then
Почему бы не использовать:
If IsNull(Me.WrkOrdr) Then
Кроме того, я бы не стал слишком полагаться на:
DoCmd.Save
И:
DoCmd.RunCommand acCmdUndo
По умолчанию для Access это сохранение и естьпара вещей, которые не позволят вам работать так, как вы ожидаете.