Требование подчиненной формы из другой подчиненной формы, проблемы - PullRequest
4 голосов
/ 16 мая 2011

У меня есть 2 подчиненные формы на главной форме.Sub_2 отображает детали для элемента, выбранного в sub_1, в списке.Для обеих подчиненных форм я использую форму продолжения, и они ограничены двумя запросами, с одним общим полем, скажем 'id'.

Что я сделал, так это добавил код в событие DClick на sub_1 для установкифильтр sub_2, например

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'"

Затем запрос

Me.Parent.sub_2.Form.Requery

Но не повезло, когда я дважды щелкнул по записи в sub_1, в sub_2 никаких изменений не произошло.Я посмотрел на соответствующие вопросы, я думаю, что это должно работать ...

Есть предложения?Может быть, я должен использовать другой подход для этого?

PS: я уверен, что Me.Parent.sub_2.Filter изменен, но запрос не работает.

РЕДАКТИРОВАТЬ:

Спасибоза ответы.Я нахожу проблему в том, что поле 'id' находится в запросе, но оно не отображается в подчиненной форме, поэтому, возможно, Access не сможет его использовать.

А когда фильтр изменен, Access выполняет запросавтоматически.

Ответы [ 3 ]

4 голосов
/ 16 мая 2011

Вам не нужно ничего делать со свойством filter.

В первой подчиненной форме задайте свойства «Основные поля ссылок» и «Связать дочерние поля», как для обычного элемента управления одной подчиненной формы в форме.

Для второй подчиненной формы также установите свойство «Связать дочерние поля», как для обычного элемента управления с одной подчиненной формой. Свойство Link Master Fields будет ссылаться на имя элемента управления первой подчиненной формы: [Имя элемента управления Subform 1]! FieldName.

В событие OnCurrent первого элемента управления подчиненной формы добавьте следующую строку кода VBA:

Me.Parent.Controls![Subform 2 Control Name].Requery

Запустите форму. Если щелкнуть строку в первой подчиненной форме, вторая подчиненная форма будет запрашивать отображение дочерних строк для строки, выбранной в первой подчиненной форме.

2 голосов
/ 16 мая 2011

Установите для свойства FilterOn значение True после назначения выражения фильтра.

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'"
Me.Parent.sub_2.Form.FilterOn = True
0 голосов
/ 16 мая 2011

Вам понадобится что-то вроде следующего:

Me!Subform2.Form.Requery  
'or  
Forms!Mainform!Subform1.Form!Subform2.Form.Requery

У меня не было времени проверить это, поэтому я не могу точно сказать, должны ли Subform1 и Subform2 быть именемфактическая подчиненная форма или просто элемент управления / контейнер подчиненной формы.Я думаю, что это последнее.

Вот отличный источник для таких вопросов:
http://access.mvps.org/access/forms/frm0031.htm

Моя единственная жалоба на этой странице состоит в том, что они не охватывают вызывающие методы, подпрограммы/ функции, или ссылаясь на публичные переменные.Все они (или могут быть) немного отличаются от сценариев, перечисленных там.

...