Хорошо, наконец-то я получил причину ошибки 2455, это проблема синхронизации.
Когда процедура Form_Current
формы списка вызывается в первый раз, подчиненная форма детали еще не привязана к элементу управления подчиненной формы детали, что вызывает ошибку.
Возможные решения
Опция 1: игнорировать ошибку 2455
Либо добавьте On Error Resume Next
в начало процедуры Form_Current
, либо перепишите ее, чтобы обработать эту конкретную ошибку 2455:
Private Sub Form_Current()
On Error GoTo Catch
With Me.Parent.DetailSubformControl.Form
.Filter = "[ID] = '" & Me.ID.Value & "'"
.FilterOn = True
End With
Finally:
Exit Sub
Catch:
If Err.Number = 2455 Then Resume Finally
MsgBox Err.Number & "(" & Err.Description & ") occured.", vbExclamation, "Attention"
Resume Finally
End Sub
Option2: управление исходными объектами элементов управления подчиненной формы
Очистите свойство Source Object
элементов управления подчиненной формы в форме заголовка и задайте их явным образом при загрузке формы заголовка.
Это вообще предотвращает неудачный выбор времени.
Итак, в заголовке процедуры загрузки событий добавьте это:
Private Sub Form_Load()
Me.DetailSubformControl.SourceObject = "Table1Detail"
Me.DatasheetSubformControl.SourceObject = "Table1Datasheet"
End Sub
Вариант 3: Использовать Мастер ссылок / Дочерние поля
Вы можете использовать свойства Link Master Fields
и Link Child Fields
элемента управления подчиненной детали.
Для этого вам нужно создать текстовое поле с именем ID
в форме заголовка и для косметических аспектов скрыть его, установив его свойство Visible
в False
.
Этот новый элемент управления будет связан с элементом управления подчиненной формы:
Задайте для свойства Link Master Fields
и Link Child Fields
элемента управления подчиненной формы детализации в форме заголовка значение ID
.
Процедура Form_Current
формы списка содержит только следующее:
Private Sub Form_Current()
' Set the value of the hidden control 'ID' on the head form,
' which is bound to the detail subform control, to the selected ID.
Me.Parent.ID.Value = Me.ID.Value
End Sub