Я использую технику, аналогичную описанной в ответе Рему на на этот вопрос , для манипулирования свойствами элементов управления в подчиненной форме. Прекрасно работает , если в наборе записей родительской формы есть хотя бы одна запись . Если в родительской форме нет записей, я получаю:
Ошибка 2455, «Вы ввели выражение, которое имеет недопустимую ссылку на свойство Форма / Отчет».
Ошибка при попытке рекурсивного вызова. Упрощенная версия кода приведена ниже (я исключил обработку ошибок и еще пару случаев, включая Else). Этот код находится в модуле и вызывается из события Load большинства форм в моем приложении:
Public Sub LockUnlockForm(frmLoad As Form)
Dim ctl As Control
For Each ctl In frmLoad.Controls
With ctl
Select Case .ControlType
Case acTextBox, acComboBox, acCheckBox
.Locked = Not gblnAuthorized
Case acSubform
LockUnlockForm .Form '<--- this line errors
End Select
End With
Next
End Sub
То, что я хочу сделать в форме, которая сейчас вызывает у меня проблему, - это создать новую запись на родительском уровне и позволить пользователю добавлять данные в подчиненную форму (если gblnAuthorized
равно True, или задать простое значение). сообщение, если оно ложное). У меня нет другого выбора, кроме как сделать это до звонка LockUnlockForm
? Будет ли создание новой записи уровня родительского уровня работать даже для предотвращения этой ошибки?