У меня есть ряд форм, отфильтрованных с помощью VBA, и все они работают нормально, пока формы не будут добавлены в форму навигации, а затем возвращается ошибка, говорящая: «Действие или метод недействительны, поскольку форма или отчет не привязаны к таблице или запросу».
Я думаю... это вызвано тем, что форма навигации не имеет источника записи... вместо этого у нее есть целевое имя
В исходной форме источником записи свойства является tblAvailableHours2.
В форме навигации свойство имеет целевое имя Frm_Available_Capacity_Hours.
Это простой фильтр даты,
Private Sub ApplyDtFilt_Click()
On Error GoTo ApplyDtFilt_Click_Err
DoCmd.ApplyFilter , "[Start Date] Between #" & Format([AVstrtdt], "yyyy/mm/dd") & "# And #" & Format([AVEnDt], "yyyy/mm/dd") & "#"
ApplyDtFilt_Click_Exit:
Exit Sub
ApplyDtFilt_Click_Err:
MsgBox Error$
Resume ApplyDtFilt_Click_Exit
End Sub
Есть ли способ связать вышеуказанный фильтр обратно с исходной таблицей tblAvailableHours2 в VBA или манипулировать именем источника/цели записи формы навигации в листе свойств, чтобы заставить его снова работать?
Я не использую навигационные формы, но если ваша форма является подчиненной формой, вы должны обратиться к этому через элемент управления подчиненной формы, удерживающий ее:
Private Sub ApplyDtFilt_Click()
On Error GoTo ApplyDtFilt_Click_Err
With Me!NameOfSubformControlHoldingFrm_Available_Capacity_Hours.Form
.Filter = "[Start Date] Between #" & Format([AVstrtdt], "yyyy/mm/dd") & "# And #" & Format([AVEnDt], "yyyy/mm/dd") & "#"
.FilterOn = True
End With
ApplyDtFilt_Click_Exit:
Exit Sub
ApplyDtFilt_Click_Err:
MsgBox Error$
Resume ApplyDtFilt_Click_Exit
End Sub
Private Sub ApplyDtFilt_Click()
On Error GoTo ApplyDtFilt_Click_Err
With Forms![EPM-V2]![NavigationSubform].Form
Filter = "[Start Date] Between #" & Format([AVstrtdt], "yyyy/mm/dd") & "# And #" & Format([AVEnDt], "yyyy/mm/dd") & "#"
.FilterOn = True
End With
ApplyDtFilt_Click_Exit:
Exit Sub
ApplyDtFilt_Click_Err:
MsgBox Error$
Resume ApplyDtFilt_Click_Exit
End Sub
Кажется, Густав снова меня выручает... Ваш ответ направил меня в правильном направлении... большое спасибо! Это ошибка, так как не удалось найти подчиненную форму Frm_Available_Capacity_Hours, однако, исследуя этот подход, правильный способ сделать это с помощью навигационной формы - вызвать имя навигационной формы. В данном случае это был EPM-V2... С формами![EPM-V2]![NavigationSubform].Form..... (Я опубликую окончательный код ниже, если кто-то еще ищет) Спасибо за помощь ;-) Время для кофе!